【问题标题】:gremlin - best step to be used as dummy for graphtraversal initializationgremlin - 用作图形遍历初始化的最佳步骤
【发布时间】:2020-11-01 13:19:47
【问题描述】:

尝试动态构建图遍历,但我有一个关于如何使用虚拟步骤初始化遍历的问题。我正在使用 inject() 作为虚拟步骤,有谁知道这是否会造成任何伤害或建议将更好的步骤用作虚拟步骤。

伪代码: fn setVertexProperties(属性): 最终的 GraphTraversal gt = __.inject(); foreach((k,v)-> gt.property(k,v)); 结束fn

谢谢

【问题讨论】:

  • 我在下面提供了答案。您的伪代码有点令人困惑,因为需要将 property 步骤应用于顶点。如果您可以进一步澄清您的伪代码,我很乐意扩展我的答案。例如,有一些方法可以使用顶点和属性映射来播种遍历,这可能会有所帮助,具体取决于您的具体用例。
  • 首先,喜欢你的书《实用小魔王》,推荐给任何想学习小魔王的人。关于我的问题。谢谢@KelvinLawrence。是的,在 addV() 上只添加了 ID 属性,其余的都是使用函数单独添加的,所以问题。这是完整的遍历: GraphTraversal tv = g.V().vertexfilterstep().fold().coalesce(unfold(), addV("label").property("idprop1",v1).property("idprop2", v2) );顶点 v = tv.union(nonidpropertytraversal).next();我正在编写一个通用 java 函数来添加非 id 属性,包括简单、多属性和元属性。

标签: java gremlin tinkerpop graph-traversal


【解决方案1】:

如果您在代码中动态构建遍历,那么使用 inject 就可以了。

更具体地说,通常会这样做:

t = g.inject(0)
t.addV('A')
t.addV('B')
t.iterate()

inject 步骤产生一个DefaultGraphTraversal,可以向其中添加其他步骤。

如果你知道你的遍历会做很多,比如说,addV 步骤,那么另一种方法是只做一个addV 来创建遍历对象。如:

t = g.addV('A')
t.addV('B')
t.addV('C')
t.iterate()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2022-11-30
    • 2023-03-04
    相关资源
    最近更新 更多