【问题标题】:TinkerPop 3 Gremlin Collect Edge Properties during traversalTinkerPop 3 Gremlin 在遍历期间收集边缘属性
【发布时间】:2018-10-31 09:18:09
【问题描述】:

使用 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'

现在,我想从 james 遍历到风险设置为“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));

【问题讨论】:

    标签: gremlin tinkerpop tinkerpop3


    【解决方案1】:

    path() 步骤将根据您提供的步骤输出 Gremlin 遍历的任何元素,使用“现代”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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      相关资源
      最近更新 更多