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

时间:2014-09-25 08:31:42

标签: python graph neo4j nosql

我正在构建一个位于图形数据集上的应用程序,此图形中的节点可以是其他较小的图形,其中节点可以与主图形节点建立连接。

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是主要大图的节点。

在此结构内部,FOO的节点连接到BAR中的节点(c - > z),这是棘手的部分)WORLD的节点连接到BAR(harry - > BAR)。

我知道如何在python中使用Networkx实现这一点,但是如何将其保存到数据库?

我正在考虑解决方案,但我想知道是否有类似情况的理论或技巧。

到目前为止,我的解决方案(使用neo4j)是标签a b和c,标签为“FOO”,并制作了一个单独的图表,将FOO连接到BAR,ecc ..我是朝着正确的方向吗? 你知道一些更聪明的解决方案吗?

由于

[编辑:更正名称]

1 个答案:

答案 0 :(得分:1)

你没有在你的图表中标记“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)
相关问题