0

您将如何在 Graph DB 中表示图形的图形。Fe 记忆上它可能看起来像这样:

((a)->(b))->(c)
((a)->(b))->((c)->(d))

在某种意义上,(a)->(b) for (c) 充当单个节点,但在内部是两个链接节点。当然,您应该能够进一步嵌套它们。

是否有一些图形结构可以用来表示这一点。


  (a)<-[:1]-(ab)-[:2]->(b)
  (ab)<-[:1]-(abc)-[:2]->(c)

???


@bouteillebleu:第二种变体

 (a)-[:fst]->(ab)-[:snd]->(b)
 (ab)->(c)
4

1 回答 1

0

节点引用任何大小和复杂性的整个子图的最简单和最简洁的方法可能是在该节点中存储一个cypher属性,其值是一个 Cypher 查询字符串,该字符串将产生所需的子图。

subgraph1例如,以下是您可能如何表示特定包含给定的断言的方式subgraph2

CREATE
  (subgraph1:Graph {cypher: 'MATCH p=(f:Foo)-[:HAS]->(:Bar) WHERE f.id = 123 RETURN p'}),
  (subgraph2:Graph {cypher: 'MATCH (f:Foo) WHERE f.id = 123 RETURN f'}),
  (subgraph1)-[:CONTAINS]->(subgraph2)

如果由 表示的实际子图由subgraph1数十亿个节点和关系组成,则可能没有其他实用的方法来表示子图。

于 2020-09-17T02:21:01.280 回答