在neo4j v.2(cypher)中建模条件关系

时间:2014-03-10 19:10:12

标签: neo4j conditional cypher relationships

我有两个需要帮助的相关问题。

问题1:如何建立条件关系模型? 我希望我的数据表明当测试CLT1的“Result”属性=“High”时,CLT1与疾病A有关系。如果我采用以节点为中心的方法,我想代码可能看起来像......

(CLT 1 {Result: "High"})  -[:INDICATES] -> (Disease A)

此外,当CLT1的“结果”属性=“低”时,CLT1与疾病B有关系

(CLT 1 {Result: "Low"})  -[:INDICATES] ->  (Disease B)

或者,如果我采用以关系为中心的方法,代码可能看起来像这样......

(CLT 1) -[:INDICATES {Result: "High"}] -> (Disease A)
(CLT 1) -[:INDICATES {Result: "Low"} ] -> (Disease B)

问题2

我有过为数据建模的经验,有1个节点具有唯一的名称,但有不同的标签或属性。问题是我希望这些节点可以区分。但是,它们看起来并不像密码一样。

我可以给他们多个属性,标签或不同的名字。多样性必须针对每个不同的类别......标签或属性(1 + n标签,属性)或不同的名称。

问题2涉及问题1,因为我无法对条件关系建模或通过其标签或属性区分同一节点(CLT1)。我可能必须通过在关系中创建可查询的“条件”来解决它。

我有这个权利吗?我还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

对于你的第一个问题,我采取以关系为中心的方法,因为这种方式代表了从结果节点到疾病的信息推断。

在建模和查询方面也应该能够很好地工作。

第二个问题。这就是节点标签的用途,它们代表节点可以播放的不同角色,每个角色都具有不同的相关属性和关系。

所以你可以做MATCH (p:Person {name:"Jose"})并以MATCH (d:Developer {name:"Jose"})的方式对待它。我看看其他道具和相关的东西。