Tinkerpop / Gremlin广度首次遍历

时间:2017-09-21 17:28:42

标签: graph gremlin tinkerpop graph-traversal

我试图遍历图表以跟踪特定节点的沿袭。我想我的查询以广度优先模式产生该节点的前提。注意,每个节点可以有多个父节点。图表可以有很多层,我希望看到给定节点的所有级别的结果。我试图遵循this食谱,但遇到异常没有这样的属性:聚集。我在gremlin控制台版本3.3

上尝试这个

1 个答案:

答案 0 :(得分:3)

使用barrier()步骤(Apache TinkerPop 3.3 docs)。例如:

gremlin> g.V().sideEffect{println "first: ${it}"}.barrier().sideEffect{println "second: ${it}"}.iterate()
first: v[1]
first: v[2]
first: v[3]
first: v[4]
first: v[5]
first: v[6]
second: v[1]
second: v[2]
second: v[3]
second: v[4]
second: v[5]
second: v[6]

Stephen在这个gremlin-users post中给出了对BFS的另一个很好的描述。

  

首先,让我们假设没有优化的Gremlin语言 - 做:

     

g.V().out().out()

     

将导致深度优先搜索。您可以使用barrier()强制BFS:

     

g.V().out().barrier().out()

     

在进入下一步之前,它基本上会强制排水前的步骤。