[英]Graphs - Python - Store a graph db made of graphs - Graph db theory
我正在构建一个基于图数据集的应用程序,并且该图中的节点可以是其他较小的图,其中节点可以与主图的节点建立连接。
A(不好意思,对不起:D)ASCII艺术来补偿我的(不好意思,对不起:D)英语:
// \\BAR
||(x)---(y)||
|| / ||\
|| (z) ||\\
\\ | // \\
// | \\_________
// | \
// | // \ \\
FOO // | ||(harry)---(terry)||
// \\ | || / ||WORLD
||(a)---(b)|| | /|| (jerry) ||
|| \ || | // \\ //
|| (c) || / // \\/
\\ | // / || HELLO ||
\___________/ \\ //
节点x,y和z是BAR图的节点,FOO图的a,b和c节点,与harry ecc ..和WORLD图相同。
FOO,BAR,WORLD和HELLO是主要big Graph的节点。
在此结构内,FOO的节点连接到BAR中的节点(c-> z),这是棘手的部分)WORLD的节点连接到BAR(harry-> BAR)。
我知道如何使用python中的Networkx实现此功能,但是如何将其保存到数据库?
我本人正在考虑解决方案,但我想知道是否存在针对类似情况的理论或某些技术。
到目前为止,我的解决方案(使用neo4j)是带有标签“ FOO”的标签ab和c,并制作了一个单独的图形将FOO连接到BAR,例如。.我的方向正确吗? 您知道一些更聪明的解决方案吗?
谢谢
[编辑:更正名称]
您没有在图表中标记“ J”,因此在此答案中我将忽略它(以及HELLO
,无论是什么)。
[EDITED]
您只需要每个子图的单个节点实例,它们都可以带有标签Subgraph
。 我将在下面将这些节点命名为foo
, bar
和world
。
(foo:Subgraph {name: "Foo"})
(bar:Subgraph {name: "Bar"})
(world:Subgraph {name: "World"})
然后,您可以指示哪些节点是哪个子图的成员:
(foo)-[:MEMBER]->(a)
(foo)-[:MEMBER]->(b)
(foo)-[:MEMBER]->(c)
(bar)-[:MEMBER]->(x)
(bar)-[:MEMBER]->(y)
(bar)-[:MEMBER]->(z)
(world)-[:MEMBER]->(harry)
(world)-[:MEMBER]->(terry)
(world)-[:MEMBER]->(jerry)
而且,您还可以具有连接成员节点以及整个子图的关系:
(c)-[rel1]->(z)
(harry)-[rel2]->(bar)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.