博客
关于我
用Python中的py2neo库操作neo4j,搭建简单关联图谱—基于家有儿女中的人物关系
阅读量:773 次
发布时间:2019-03-17

本文共 1893 字,大约阅读时间需要 6 分钟。

Python调用Neo4j搭建简单关联图谱

一、Python连接Neo4j

使用Python调用Neo4j,首先需要安装相关库。建议使用py2neo,这是Neo4j的官方Python驱动。安装完成后,可以按照以下代码连接到Neo4j数据库:

from py2neo import Graph, Node, Relationshipgraph = Graph("http://localhost:7474",              username="neo4j",  # 替换为你的用户名              password="123456")  # 替换为你的密码

二、创建节点

为了更直观地理解操作,我们使用家有儿女中的人物关系来操作。前提是确保数据库中没有以往的图数据,可以执行以下命令清理数据库:

graph.delete_all()

接下来,逐一创建人物节点。使用Node创建节点,graph.create()执行操作:

node_1 = Node("person", name="夏东海")node_2 = Node("person", name="刘梅")node_3 = Node("person", name="刘星")node_4 = Node("person", name="刘星")# ... 后续依次创建其他人物节点graph.create(node_1)graph.create(node_2)# ... 依次执行创建命令

三、创建关系

关系是关联图谱的核心。以实际案例为例,创建人物之间的关系:

# 创造双向关系node_1 = Node("person", name="夏东海")node_2 = Node("person", name="刘梅")# 创建双向关系marriage = Relationship(node_1, "丈夫", node_2)divorce = Relationship(node_2, "前妻", node_1)graph.create(marriage)graph.create(divorce)

推荐使用create命令创建节点和关系,确保图结构的连通性:

node_1 = Node("person", name="夏东海")node_2 = Node("person", name="刘梅")# 创建双向关系marriage = Relationship(node_1, "丈夫", node_2)divorce = Relationship(node_2, "前妻", node_1)graph.create(node_1)graph.create(node_2)graph.create(marriage)graph.create(divorce)

四、查询

1. 查询节点

使用Cypher语句查询节点:

results = graph.match("MATCH n RETURN n")# 或直接使用DataFrame展示节点信息import pandas as pddf = pd.DataFrame(results)print(df)

2. 查询关系

提取特定关系类型的信息:

results = graph.match("MATCH r RETURN r")# 或指定关系类型results = graph.match("MATCH r WHERE r.type='父亲'")print(results)

五、图形更新

1. 增加节点属性

为节点添加信息:

node_1["性别"] = "男"graph.push(node_1)

2. 增加关系属性

给关系增加注释:

relation = Relationship(node_1, "丈夫", node_2)relation["结婚时间"] = "2020年"graph.push(relation)

3. 删除节点或关系

删除无用节点或关系:

graph.delete(node_1)graph.delete(relation)

以上只是基础操作,后续内容将深入探讨如何利用模型算法进行犯罪团伙洞察和预警。关注我们后续文章,将有更多技术精髓解析。


参考文献

  • 29道ROTOS: Python + Neo4j 开源图数据库实战
  • 基于Python和Neo4j的图数据库实践
  • 利用模型算法分析犯罪团伙
  • Python+Neo4j搭建关系式数据库
  • 如何高效处理网络数据
  • 友情提示:如果觉得有用,请长按issue支持开发者,持续输出更多高质量内容!

    转载地址:http://ngkhz.baihongyu.com/

    你可能感兴趣的文章
    npm包管理深度探索:从基础到进阶全面教程!
    查看>>
    npm升级以及使用淘宝npm镜像
    查看>>
    npm发布包--所遇到的问题
    查看>>
    npm发布自己的组件UI包(详细步骤,图文并茂)
    查看>>
    npm和package.json那些不为常人所知的小秘密
    查看>>
    npm和yarn清理缓存命令
    查看>>
    npm和yarn的使用对比
    查看>>
    npm如何清空缓存并重新打包?
    查看>>
    npm学习(十一)之package-lock.json
    查看>>
    npm安装 出现 npm ERR! code ETIMEDOUT npm ERR! syscall connect npm ERR! errno ETIMEDOUT npm ERR! 解决方法
    查看>>
    npm安装crypto-js 如何安装crypto-js, python爬虫安装加解密插件 找不到模块crypto-js python报错解决丢失crypto-js模块
    查看>>
    npm安装教程
    查看>>
    npm报错Cannot find module ‘webpack‘ Require stack
    查看>>
    npm报错Failed at the node-sass@4.14.1 postinstall script
    查看>>
    npm报错fatal: Could not read from remote repository
    查看>>
    npm报错File to import not found or unreadable: @/assets/styles/global.scss.
    查看>>
    npm报错unable to access ‘https://github.com/sohee-lee7/Squire.git/‘
    查看>>
    npm淘宝镜像过期npm ERR! request to https://registry.npm.taobao.org/vuex failed, reason: certificate has ex
    查看>>
    npm版本过高问题
    查看>>
    npm的“--force“和“--legacy-peer-deps“参数
    查看>>