1.节点
节点(Node)是图数据库中的一个基本元素,用以表示一个实体记录,就像关系数据库中的一条记录一样。在Neo4j中节点可以包含多个属性(Property)和多个标签(Lable),如下图所示:
下面介绍一个最简单的节点,它只有一个属性,属性名是name,属性值是Tom,如下图所示
2.关系
关系(Relationship)同样是图数据库中的基本元素。当数据库中已经存在节点后,需要将节点链接起来构成图。关系就是用来连接两个节点, 关系也称为图论的边(Edge),其始端和末端都必须是节点,关系不能指向空也不能从空发起。关系和节点一样可以包含多个属性,但关系 只能有一个类型(Type),如图3所示:
一个节点可以被多个关系指向或作为关系的起始节点,如图4所示多个关系指向同一节点:
关系必须有开始节点(Start node)和结束节点(End node),两头都不能为空,如图5所示:
节点可以被关系串联或者并联起来,由于关系可以是有方向的,所以可在由节点、关系组成的图中进行遍历操作。在图的遍历操作中我们可以指定关系遍历的方向或者指定为无方向,因此在创建关系时不必为两个节点创建相互指向的关系, 而是在遍历时不指定遍历方向即可,特别注意一个节点可以在存在指向自己的关系,如图6所示:
3.属性
上面提到节点和关系都可以有多个属性,属性室友键值对组成的,就像Java的哈希表一样,属性名类似变量值。属性值可以是基本的数据类型, 或者由基本数据类型组成的数组。需要注意的是属性值没有null的概念,如果一个属性不需要了可以直接将整个键值对都移除,Neo4j中属性值 的基本数据类型如下:
4.路径
当使用节点和关系创建了一个图后,在此图中任意两个节点间都是可能存在路径的,如图7所示, 图中任意两个节点都存在由节点和关系组成的路径,路径也有长度的概念,也就是路径中关系的条数
当然也可以说单独一个节点就可以组成长度为0的路径。如果是两个简单的节点,中间只存在一条关系,那这条路径的长度就是1,如图8所示:
5.遍历(Traversal)
遍历一张图就是按照一定的规则,根据它们之间的关系,依次访问所有相关联的节点的操作。对于遍历操作不必自己实现, 因为Neo4j提供了一套高效的遍历API,可以指定遍历规则,然后让Neo4j自动按照遍历规则遍历并返回遍历的结果。 遍历规则可以是广度优先,也可以是深度优先。