Py2neo v4使用笔记(二)

1.2子图(subgraph)

子图,就是一个集合,可以包括节点、关系和walkable对象(后面会介绍)。

下面是一个创建子图的例子

>>> s = ab | ac

>>> s

{(alice:Person {name:"Alice"}),

(bob:Person {name:"Bob"}),

(carol:Person {name:"Carol"}),

(Alice)-[:KNOWS]->(Bob),

(Alice)-[:WORKS_WITH]->(Carol)}

>>> s.nodes()

frozenset({(alice:Person {name:"Alice"}),

          (bob:Person {name:"Bob"}),

          (carol:Person {name:"Carol"})})

>>> s.relationships()

frozenset({(Alice)-[:KNOWS]->(Bob),

          (Alice)-[:WORKS_WITH]->(Carol)})

子图作为一个集合,就可以进行python的set对象的一些操作:

subgraphA | subgraphB | ...  #并集(Union)

subgraphA & subgraphB & ...  #交集(Intersection)

subgraphA - subgraphB - ...  #差集(Difference)

subgraphA ^ subgraphB ^ ...  #对等差分(Symmetric difference),只在AB中存在的元素集合,不包括同时存在于A和B中的元素;也就是并集和交集的差集。。。

另外还可以进行一些图数据库相关的操作

subgraph.keys()

subgraph.labels

subgraph.nodes

subgraph.relationships

subgraph.types()

1.3 walkable对象

Walkable对象是一种Subgraph对象,但是附加了遍历信息,用walk() 函数就可以遍历walkable对象,返回节点-关系-节点-关系…-节点的信息流,总是从节点出发,到节点结束,中间是节点关系交替出现。

下面是代码示例,用“+”可以连接起图对象,构建walkable对象

>>> w = ab + Relationship(b, "LIKES", c) + ac

>>> w

(Alice)-[:KNOWS]->(Bob)-[:LIKES]->(Carol)<-[:WORKS_WITH]-(Alice)

用walk()遍历上面构建的walkable对象w

walk(w)

一些其他操作如下

w.start_node

w.end_node

w.nodes

w.relationships

还有一个path对象,也是一种walkable对象,它接受cypher查询语句,返回walkable的查询结果

你可能感兴趣的:(Py2neo v4使用笔记(二))