将箭头/关系建模为Neo4j中的节点

时间:2015-05-01 14:48:35

标签: neo4j

Neo4j中的关系/箭头不能获得多个类型/标签(请参阅herehere)。我有一个数据模型,边缘需要获得标签和(可能)属性。如果我决定使用Neo4j(而不是支持标记箭头的OriendDB),我想我会有两个选项来模拟两个节点A和B之间的箭头,比如f:

1)将箭头f编码为跨度,例如A< -f - > B,使得f也是节点并且 - >和< - 是箭头。

2)将箭头f编码为A - >; f - > B,使得f再次成为节点而两个 - >是箭头。

虽然这似乎是在我的数据模型上添加unnecessary complexity,但如果我想使用Neo4j,目前似乎没有任何其他选项。然后,我试图看看上述哪种编码可能更适合我的查询(查询是我系统的核心)。为此,我需要借助示例。所以我有两个问题:

第一个问题:

  

part1)我有节点标记为Person和father,并且它们之间有箭头,如Person<-[:sr]-father-[:tr]->Person,以便模拟谁是谁的父亲(tr是sr的父亲)。对于某个人p1,我怎样才能得到他所有的祖先。

     

part2)如果我有Person-[:sr]->father-[:tr]->Person结构,那么为了建模父关系,上面的查询将如何。

当父被视为简单关系(而不是被编码为节点)时,回答here

第二个问题:

  

part1)我有节点标记为A节点,每个节点都有属性p1。我想查询A节点,获取那些p1&lt; 5的元素,然后创建以下结构:查询结果中的每个a1我创建qa1<-[:sr]-isA-[:tr]->a1,这样isA和qa1就是节点。

     

part2)如果我想创建qa1-[:sr]->isA-[:tr]->qa1该怎么办?

当isA被视为简单箭头(而不是被建模为节点)时,此问题已经回答here

0 个答案:

没有答案