(Apache Gremlin) 如何在图形中在特定列中共享相同值的所有边之间动态创建边

问题描述 投票:0回答:1

我的任务是创建一个图形数据库,该数据库将填充来自一个非常大的数据库的信息,因此我们希望动态创建对象之间的关系。

每个顶点的标签并不是一成不变的,但我要么会:

  • 将所有顶点标记为资产

  • 根据资产类型(DistributionCenter、DeliveryRoute、Destination)等来命名每个顶点。

我们的数据有每个资产的起始和结束位置的 ID,这是在当前系统中链接它们的原因,这就是我希望将它们加入到这个数据库中的方式。

举个例子,配送中心的起始节点为 0(因为它是本例中的起点),结束节点为 1,而 DeliveryRoute 的起始节点为 1,结束节点为 2,等等

有谁知道我如何动态生成这些关系?

我目前正在使用此网站来制作演示/概念证明: https://gremlify.com/

感谢您的宝贵时间。 扎克

gremlin graph-databases
1个回答
0
投票

除了 Gremlify 之外,学习 Gremlin 时可以使用的另一个重要资源是:https://www.kelvinlawrence.net/book/PracticalGremlin.html

我想说的是,你正在对图形通常建模方式之外的事物进行建模。图通常遵循一种模式,其中数据中的实体是节点/顶点,它们之间的关系(动作)是边。所以当你说:

举个例子,配送中心的起始节点为 0(因为它是本例中的起点),结束节点为 1,而 DeliveryRoute 的起始节点为 1,结束节点为 2,等等

如果“配送中心”本身就是一个节点,那就更有意义了。然后,您可能有一条“DeliveryRoute”边,将“配送中心”连接到某个下游目标顶点。

类似:

g.addV('DistributionCentre').property(id,0).as('dc0').
    addV('DeliveryLocation').property(id,56).as('dl56').
    addE('DeliveryRoute').property(id,101).from('dc0').to('dl56').iterate()

此处使用

as()
步骤是为遍历的组件提供临时标签,以便稍后在查询的其他部分中引用。因此,我们本质上是创建两个顶点,然后在创建它们之间的边时引用这些顶点。

但我强烈建议查看上面引用的链接,因为那里有更多关于如何在这个用例和其他用例中使用 Gremlin 的示例。

© www.soinside.com 2019 - 2024. All rights reserved.