Neo4j中的关系/箭头不能获得多个类型/标签(请参见here和here)。我有一个边缘需要获取标签和(可能)属性的数据模型。如果我决定使用Neo4j(而不是支持标签箭头的OriendDB),我想我会有两种选择来建模两个节点A和B之间的箭头f:将Neo4j中的箭头/关系建模为节点
1)将箭头f编码为一个跨度,比如A < --f - > B,这样f也是一个节点,并且 - >和< - 是箭头。
或
2)编码如箭头F A - >的F - > B,使得f是再次节点和两个 - >是箭头。
虽然这似乎是在我的数据模型上添加unnecessary complexity,但如果我想使用Neo4j,目前似乎没有任何其他选项。然后,我试图看看上面的哪些编码更适合我的查询(查询是我系统的核心)。为此,我需要诉诸实例。所以,我有两个问题:
第一个问题:
第一部分)我有标注为个人和父亲节点,并在它们之间有箭似
Person<-[:sr]-father-[:tr]->Person
以模特是谁的父亲谁(tr是sr的父亲)。对于一个给定的人P1,我怎么能得到他所有的祖先。part2)如果我有
Person-[:sr]->father-[:tr]->Person
结构代替,为建模父亲关系,如何上述相同的查询看起来像。
这回答here当父亲被认为是一个简单的关系(而不是被编码为一个节点)
第二个问题:
part1的)我已标记节点作为每个属性为p1的节点。我想查询A节点,得到那些元素p1 < 5,然后创建以下结构:对于查询结果中的每个a1,我创建
qa1<-[:sr]-isA-[:tr]->a1
,使得isA和qa1是节点。part2)如果我想创建
qa1-[:sr]->isA-[:tr]->qa1
而不是?
当isA被认为是简单的箭头(而不是被建模为节点)时,回答此问题here。
我把'(personA) - [:father] - >(personB)'作为一个例子来看看如果我传递所有的箭头,传递闭包查询会是什么样子。所以你是对的,在这个特定的例子中,我没有得到任何额外的点。 – qartal