Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graph Neo4j中的关系与关系_Graph_Neo4j_Spring Data Neo4j - Fatal编程技术网

Graph Neo4j中的关系与关系

Graph Neo4j中的关系与关系,graph,neo4j,spring-data-neo4j,Graph,Neo4j,Spring Data Neo4j,在Neo4j中,一段关系是否可能有一段关系 举例说明:想象一个包含几何平面集合的域模型。每个平面上都有一组线,每条线上都有一组点。一条线上的每个点通过一个传出的-[NEXT]>关系连接到它后面的点,并通过一个传入的连接到它前面的点。按照我现在的方式,这些NEXT关系中的每一个都包含一个属性lineID,该属性标识它所在的行:数据库中表示行的节点实体只包含一个id,可能还包含一点元数据,我们通过遍历图返回行X,找到所有-[NEXT]{lineID:X}]->关系,获取每个的开始和结束节点,并返回它

在Neo4j中,一段关系是否可能有一段关系

举例说明:想象一个包含几何平面集合的域模型。每个平面上都有一组线,每条线上都有一组点。一条线上的每个点通过一个传出的
-[NEXT]>
关系连接到它后面的点,并通过一个传入的连接到它前面的点。按照我现在的方式,这些
NEXT
关系中的每一个都包含一个属性
lineID
,该属性标识它所在的行:数据库中表示行的节点实体只包含一个
id
,可能还包含一点元数据,我们通过遍历图返回行X,找到所有
-[NEXT]{lineID:X}]->
关系,获取每个的开始和结束节点,并返回它们的列表以及行的元数据

我在那里比我预期的要冗长一点,但我的问题是:如果不是在每个
[NEXT]
关系上都有
lineID
属性,而是想在每个
-[on]->
和表示其所在行的节点实体之间创建一个
-[on]>
关系,该怎么办

举例说明:而不是做

CREATE (:point)-[:NEXT{lineID:x}]->(:point)-[:NEXT{lineID:x}-> ...
,比如:

CREATE (:point)-[z:NEXT]->(:point), (z)-[:ON]->(:line)`
这是一个难看的密码,但我希望它能澄清我的观点。直觉上,这似乎会使行遍历更高效(因为我们会利用neo4j的优势,让它从一个行节点遍历所有
[ON]
关系,而不是简单地搜索一个(可能已索引的)属性。它还可以更容易地指定嵌套关系:

(z)-[:ON]->(:line), (z)-[:ON]->(:plane) 
这种直觉是不是被误解了?如果不是,这样的事情可能吗?我不认为是这样,但我正在考虑一种解决方法,包括为每个“关系”创建一个节点实体。类似这样的事情:

(:point)<-[:FROM]-(x:next)-[:TO]->(:point), (x)-[:ON]->(:line) 
(:point)(:point),(x)-[:ON]->(:line)
,这将具有促进结构的额外优势,这是我感兴趣的另一件事。将该对话留到另一天(和另一篇文章)再谈,这样的方法会比此处阐明的目的更麻烦/昂贵吗?会有任何缺点/优势(除了普通成本外)我没有考虑?或者我正在重新发明轮子?在这种情况下,有没有我不知道的现存解决方案?

这是不可能的。
重新构造模型,使关系中需要链接的任何数据都是一个节点

没有可以链接到其他关系的关系。我认为,当你问自己这类问题时,你可能会遇到数据建模问题,下一步要做的是尝试对数据进行不同的建模。例如,为什么链接两个点的关系知道点所在的线?点知道线不是更自然,因此在点上有属性
lineID
?这样,您可能在多条线上有点,如果
lineID
下一个
relationship.Pe上,您就无法正确建模rhaps更好的是,您可以有一个节点
Line
,该节点与该特定行上的所有点具有关系
包含
,而不是使用
lineID
属性