neo4j的基础语法与py2neo的使用

neo4j的基础语法与py2neo的使用

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

1.节点创建

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

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

2 关系创建

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

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

在节点n和节点m之间创建一条边  节点之间的关系为headof

3 删除节点与关系

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

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

上述代码先查找出对应的节点n,再获取节点n的邻居  然后删除

4 删除标签或属性

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

5 更新

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

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

将对应Person节点的性别做更改

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

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

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

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

创建链接

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

节点创建方法

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)

关系创建方法

#关系创建通常比较复杂,建议直接使用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)

查询

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

MATCH (a:Person) -[r:love]-> (d:dog) WHERE a.name="cjl" return d.name,a.sex
查询符合该关系且符合where子句条件的图,并返回对应节点的属性信息
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值