py2neo.data – Data Types
Py2neo提供了丰富的数据类型集,可用于基于图和基于记录的数据。图类型与Neo4j完全兼容,但也可以独立使用。它们包括基本的实体Node,并Relationship代表这些实体的集合以及类。
图数据类已设计为可使用标准操作(尤其是集合操作)一起工作。这些操作的详细信息在Subgraph对象和Path对象以及其他Walkable类型的部分中进行介绍。
1.1 Node和Relationship对象
Neo4j使用的标记属性图模型的两个基本构建块是Node和Relationship。节点是图数据存储的基本单位。它可以包含一组键/值对(属性),并且可以选择用一个或多个文本标签进行装饰。关系是一对节点之间(或单个节点上的环)之间的有类型的定向连接。像节点一样,关系也可以包含一组属性。
下面的代码显示了如何创建几个节点以及将它们连接起来的关系。每个节点都有一个属性,名称,并被标记为Person。该关系ab描述了从第一节点到第二节点的KNOWS连接
>>> from py2neo.data import Node, Relationship
>>> a = Node("Person", name="Alice")
>>> b = Node("Person", name="Bob")
>>> ab = Relationship(a, "KNOWS", b)
>>> ab
(Alice)-[:KNOWS]->(Bob)
1.2 Subgraph对象
A Subgraph是节点和关系的任意集合。根据定义,子图必须至少包含一个节点;空子图应以表示None。要测试是否为空,bool()可以使用内置功能。
构造子图的最简单方法是使用标准集合操作将节点和关系组合在一起。例如:
>>> 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)})
1.3 Path对象和其他Walkable类型
A Walkable是Subgraph具有附加遍历信息的A 构造可行走对象的最简单方法是连接其他图对象:
>>> w = ab + Relationship(b, "LIKES", c) + ac
>>> w
(Alice)-[:KNOWS]->(Bob)-[:LIKES]->(Carol)<-[:WORKS_WITH]-(Alice)
通过使用该walk()函数可实现可行走对象的遍历,该函数产生交替的节点和关系,并且始终以节点开始和结束。任何节点或关系都可以在任何方向上遍历一次或多次。
1.4 Record对象
一个Record对象包含有序的键值集合。它在许多方面都类似于namedtuple,但是仅允许通过方括号语法访问字段并提供更多功能。 Record扩展了tuple和Mapping。
1.5 Table对象
A Table包含Record对象列表,通常作为Cypher查询的结果接收。它提供了一个方便的容器来完整地处理结果,并提供了转换为各种输出格式的方法。 Table扩展list。