繁体   English   中英

图-Python-存储由图组成的图数据库-图数据库理论

[英]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 我将在下面将这些节点命名为foobarworld

(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM