Gremlin 获取每个循环的第一个顶点

Gremlin get first vertex of each loop

我正在遍历这样的图表:

像这样在 Gremlin 中广度优先

pipe.start(unProcessed)
                .as("x")
                .bothE()
                .as("existingEdge")
                .bothV()
                .hasNot("processed",true)
                .loop("x", new PipeFunction<LoopPipe.LoopBundle<Vertex>, Boolean>() {
                    public Boolean compute(LoopPipe.LoopBundle<Vertex> loopBundle) {
                        return true;
                    }
                }, new PipeFunction<LoopPipe.LoopBundle<Vertex>, Boolean>() {
                    public Boolean compute(LoopPipe.LoopBundle<Vertex> loopBundle) {
                        return true;
                    }
                })
                .as("newVertex")
                .select(Arrays.asList("x","newVertex"));

我想要的是循环本次迭代开始的顶点,以及下一次。所以结果我想看

  1. A,B
  2. B,C
  3. B,D
  4. B,E
  5. C,F
  6. D,F

然而,我得到的是

  1. A,B
  2. A,C
  3. A,D
  4. A,E
  5. A,F
  6. A,F

看起来管道中的 "x" 始终是管道中的第一个顶点,而不是循环迭代中的第一个顶点,这正是我想要的。

看起来这应该很容易,我遗漏了一些简单的东西,但我找不到它。

需要的是 _() 或 "IdentityPipe"

.as("x")
._()                            
.as("firstVertex")

这对我有用。