如何建立关系关系模型?

时间:2014-06-20 17:54:36

标签: neo4j uml cypher relationships

我要解决下一个问题:

我有3个节点:

(n:Node)-[r:HAS_ATTRIBUTE]->(a:Attr {name ="xxxx"}) ->(t:Type)

所有a:Attr个节点都有:翻译关联:

(a) -> [:_HAS_TRANSLATION] -> (tr1:Translation {name : "yyyy", lang ="fr"})

(a) -> [:_HAS_TRANSLATION] -> (tr2:Translation {name : "kkkk", lang ="de"})

现在,我想使用关系模拟相同的事物:

(n:Node)-[r:HAS_ATTRIBUTE {name ="xxxx"}]->(t:Type)

如何向HAS_ATTRIBUTE名称属性添加翻译,当然不向_HAS_ATTRIBUTE添加新的n:Node

我应该在关系中有这样的关系......

2 个答案:

答案 0 :(得分:1)

希望我能理解你的问题。

考虑一个中间节点,例如

(n:Node)-[:HAS_ATTRIBUTE]->(attr:Attribute {name: "X")),
(attr)-[:HAS_TRANSLATION]->(tr1:Translation),
(attr)-[:HAS_TYPE]->(t:Type)

......或类似的东西。请注意" attr"将是新的中间节点(显然,您可以随意命名关系)。

如果您需要更具体(例如属性的实例),您可以随时更换" attr"与#34; specificAttr"并且有#34; attr"指向" attr"。

中间节点是解决这类建模问题的好方法,您需要更充分地限定关系。

答案 1 :(得分:0)

如果我理解正确你想要只有2个节点和一个关系,对吗?

要实现这一目标,您只需执行

即可
(n:Node)-[r:HAS_ATTRIBUTE]->
(a:Attr {name ="xxxx", lang_fr="yyyy", lang_de="zzzz"})->
(t:Type)