当前位置:   article > 正文

neo4j的基础语法与py2neo的使用_neo4j和py2neo库

neo4j和py2neo库

neo4j的基础语法与py2neo的使用

最近需要实现一个基于知识图谱的医疗问答系统,知识图谱的存储大都选择使用neo4j。我也顺便记录了以下neo4j的常用语法,并使用python与neo4j连接。

1.节点创建

#创建节点a
create(a)
return a
  • 1
  • 2
  • 3
#创建节点b 并包含节点标签以及节点属性
create(b:Alpha:Beta{x:"X",y:"Y"})
return b

上述语句创建了节点b,该节点包含两个标签,分别是标签Alpha和标签Beta
该节点包含两个属性,属性x和y,属性值分别是X和Y
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2 关系创建

创建两个节点并创建一条边
create(a:Person{name:'cjl'})-[r:love]->(g:dog{name:'peach'})
return f,g,r

上述语句创建了两个节点一个是Person 一个是dog  他们都有name属性   关系是love关系
  • 1
  • 2
  • 3
  • 4
  • 5
创建两个节点并创建一条有属性的边
create(m:Person{name:'卡梅隆'})-[r:make{cost:'28亿RMB'}]->(n:Moive{name:'阿凡达'})
return m,r,n
  • 1
  • 2
  • 3
给已经存在的节点创建一条边
create(n)-[r:headOf]->(m)
return n,m,r

在节点n和节点m之间创建一条边  节点之间的关系为headof
  • 1
  • 2
  • 3
  • 4
  • 5

3 删除节点与关系

删除无关系节点
#通过ID删除(ID是neo4j自动分配的,具有唯一性)
match(n:Person) where id(n)=1
delete n

#通过属性删除节点
match(n:Person{name:'cjl'}) 
delete n
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
删除有关系节点
先删除关系,再删除节点。不能直接删除节点
match(n:Person{name:'cjl'})
match(n)-[r:headOf]-(m)
delete r,n

上述代码先查找出对应的节点n,再获取节点n的邻居  然后删除
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4 删除标签或属性

MATCH (n:Person{name:'cjl'})
remove n.name
return n
删除属性name为cjl的Person类型节点的name属性
  • 1
  • 2
  • 3
  • 4
match(n:Person{name:'cjl'})
remove n:Person
return n
删除属性name为cjl的Person类型节点的节点类型

  • 1
  • 2
  • 3
  • 4
  • 5

5 更新

添加一个属性
match (n:Person{name:'cjl'})
set n.sex='male'
return n

给对应的Person节点添加一个性别属性
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
更新一个属性
match (n:Person{name:'cjl'})
set n.sex='female'
return n

将对应Person节点的性别做更改
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

上述是最基本的插入删除更新的语法。下面我们描述以下如何使用python连接neo4j

neo4j的安装下载不在此处描述,可查找其他相关博客。 neo4j教程-安装部署

python连接neo4j需要下载py2neo库,可以使用以下语句安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple py2neo
  • 1

创建链接

#第一个参数是neo4j服务器地址,端口默认为7474   第二个参数是登录的用户名和密码
self.graph = Graph("http://localhost:7474", auth="neo4j:123456")
  • 1
  • 2

节点创建方法

from py2neo import  Node, Relationship
#使用如下语句先生成一个节点对象   可以有多个类型或者属性
node = Node(type, name=node_name)
node = Node(typea,typeb, name=node_name,sex=node_sex)
#使用如下语句创建节点
self.graph.create(node)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

关系创建方法

#关系创建通常比较复杂,建议直接使用neo4j的sql语句进行创建
query = "match(p:%s),(q:%s) where p.name='%s'and q.name='%s' create (p)-[rel:%s{name:'%s'}]->(q)" % (start_node, end_node, p, q, rel_type, rel_name)

self.graph.run(query)
  • 1
  • 2
  • 3
  • 4

查询

查询建议直接编写查询语句

MATCH (a:Person) -[r:love]-> (d:dog) WHERE a.name="cjl" return d.name,a.sex
查询符合该关系且符合where子句条件的图,并返回对应节点的属性信息
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/647932
推荐阅读
相关标签
  

闽ICP备14008679号