这里接着上一篇的内容,进行关系的创建和关系的查找。
2.4 创建两个节点间的关系
创建关系时用函数 Relationship() 函数。格式为relation = Relationship(start_node, relationship, end_node) 。start_node为开始节点,end_node为结束节点,relationship 为两节点间的关系。需要知道的是,Neo4j 的关系都是有向的,这里的关系词是由start_node 指向 end_node 的关系。创建后,通过graph.create(relation) 导入Neo4j。
from py2neo import Graph, Node, Relationship from py2neo.matching import * case = node_matcher.match('判决文书', name = 'XXX刑事判决书').first() # 获得name为XXX刑事判决文书的“判决文书”类 节点 people = node_matcher.match('被告人','人', name = 'XXX').first() # 获得name为“XXX”的“被告人”类节点 relation = Relationship(case, '被告人', people) # 创建判决文书和被告人间的关系,关系词为“被告人” graph.create(relation) # 将创建传递到图上
如果创建新的节点和关系怎么办,很简单,先创建节点,再创建关系(注意哦,这个和后续可能的删除顺序是相反的),比如下面示例。我们就不用查询已有节点的,直接将创建的节点用Relationship 连接就好了。但是可能 create 需要逐步来。我自己尝试的时候是不能批量 create 的,如果是需要批量创建节点,建议直接查询 Neo4j 批量创建节点寻找方法,Neo4j 是提供多种批量导入方式的。
from py2neo import Graph, Node, Relationship case = node_matcher.match('判决文书', name = 'XXX刑事判决书').first() people = node_matcher.match('被告人','人', name = 'XXX').first() relation = Relationship(case, '被告人', people) graph.create(relation)