Neo4j中的关系/箭头不能获得多个类型/标签(请参阅here和here)。我有一个数据模型,边缘需要获得标签和(可能)属性。如果我决定使用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。