首页 文章

TinkerPop 3 Gremlin在遍历期间收集边缘属性

提问于
浏览
0

使用TinkerPop 3 Java API:

我的图表看起来像这样:

james {risk: 'n'} --> chris {risk: 'n'} --> raj {risk: 'n'} --> joanne {risk: 'y'}

The edge label is 'travelledWith' and a property called 'pnrLocator'

现在,我想从詹姆斯遍历到风险设置为'y'的顶点 . 一路上,我想收集顶点和边缘属性 .

这就是我所拥有的只适用于顶点属性的东西 . 如何添加'by'并收集'pnrLocator'呢?

GraphTraversal<Vertex, ?> values =
                g.traversal()
                        .V()
                        .has("personId", "james")
                        .repeat(out("travelledWith"))
                        .until(has("risk", "y"))
                        .limit(100)
                        .path()
                        .by("personId");


        values.forEachRemaining(v -> System.out.println(v));

1 回答

  • 0

    path() 步骤将根据您提供的步骤输出Gremlin遍历的任何元素,使用"modern" TinkerPop玩具图:

    gremlin> g.V().repeat(out()).emit().path().by("name")
    ==>[marko,lop]
    ==>[marko,vadas]
    ==>[marko,josh]
    ==>[marko,josh,ripple]
    ==>[marko,josh,lop]
    ==>[josh,ripple]
    ==>[josh,lop]
    ==>[peter,lop]
    

    我遍历 out() 返回顶点,这是我在路径输出中看到的唯一输出 . 如果我稍微改变我的遍历以明确遍历边缘(即 out()outE().inV() ),那么我可以这样做:

    gremlin> g.V().repeat(outE().inV()).emit().path().by("name").by('weight')
    ==>[marko,0.4,lop]
    ==>[marko,0.5,vadas]
    ==>[marko,1.0,josh]
    ==>[marko,1.0,josh,1.0,ripple]
    ==>[marko,1.0,josh,0.4,lop]
    ==>[josh,1.0,ripple]
    ==>[josh,0.4,lop]
    ==>[peter,0.2,lop]
    

相关问题