使用入边和出边的 Gremlin 遍历
Gremlin traversal using both in and out edges
我正在尝试从给定的根节点开始遍历图形的所有节点。遍历时我想 "fix up" 从前一个顶点到当前顶点的边,这样边从前一个顶点到当前顶点(可能是相反的,但结束图应该是根顶点在根的树)。
问题似乎是被遍历的边并不都是严格的外边或内边。
我正在尝试创建广度优先遍历(我不应该做广度优先吗?),但是因为有进边和出边,我开始的查询看起来像这样
g.v('rootVertex').as('x').both.gather.scatter.loop('x'){true}{true}
由于“.both”(我认为),这似乎正在创建一个无限循环。
有没有一种方法可以在 gremlin 中执行此操作,它不会创建无限循环并允许我修复/验证前一个节点的边缘?
此外,我能否获得查询的 "gather.scatter" 部分的简单说明性示例?我无法想象该步骤究竟实现了什么。
添加一个simplePath
步骤来防止遍历在两个节点之间循环:
g.v('rootVertex').as('x').both().simplePath().loop('x'){true}{true}
我正在尝试从给定的根节点开始遍历图形的所有节点。遍历时我想 "fix up" 从前一个顶点到当前顶点的边,这样边从前一个顶点到当前顶点(可能是相反的,但结束图应该是根顶点在根的树)。
问题似乎是被遍历的边并不都是严格的外边或内边。
我正在尝试创建广度优先遍历(我不应该做广度优先吗?),但是因为有进边和出边,我开始的查询看起来像这样
g.v('rootVertex').as('x').both.gather.scatter.loop('x'){true}{true}
由于“.both”(我认为),这似乎正在创建一个无限循环。
有没有一种方法可以在 gremlin 中执行此操作,它不会创建无限循环并允许我修复/验证前一个节点的边缘?
此外,我能否获得查询的 "gather.scatter" 部分的简单说明性示例?我无法想象该步骤究竟实现了什么。
添加一个simplePath
步骤来防止遍历在两个节点之间循环:
g.v('rootVertex').as('x').both().simplePath().loop('x'){true}{true}