【发布时间】:2016-12-16 14:00:53
【问题描述】:
我图中的每个顶点都至少有一个 name 属性。我有一个标签 L 集合 S 的名称值。现在我想收集所有顶点的 name 属性的值,这些顶点可以通过带有边标签 EL 的特定传出边从集合 S 中的名称的顶点到达(递归)。
我当前对名为 S1 的单个起始节点的解决方案如下所示:
g.traversal().V().hasLabel(L)
.has("name", S1)
.repeat(__.optional(__.out(EL)))
.until(__.out(EL).count().is(0))
.path()
.forEachRemaining(path -> {
path.forEach(e -> System.out.println(((Vertex)e).property("name").value()));});
println 只是为了看到这会产生预期的结果,通常我会将名称收集在一个集合中。
有没有更好的方法来收集通过带有标签 EL 的出边可达的所有顶点的 name 属性的值?
从多个顶点开始的最佳方法是什么(从 Set S 中只知道名称)?
目前,结构是一棵树,但如果可能有循环,上面的代码是否可以防止无限循环?如果没有,怎么办?
【问题讨论】: