Gremlin:在具有相同 属性 的节点之间添加边

Gremlin: adding edges between nodes having the same property


我对 Gremlin 很陌生。我正在尝试使用 Gremlin 在 DSE 图上构建一个图。我能够创建顶点:

a = graph.addVertex(label, 'label1', 'key', 1)
b = graph.addVertex(label, 'label1', 'key', 2)
c = graph.addVertex(label, 'label2', 'key', 1)
d = graph.addVertex(label, 'label2', 'key', 2)

现在我希望在 属性 'key' 匹配的两个具有不同标签的节点之间自动添加边(即在 a 和 c 之间以及 b 和 c 之间创建边)。我正在努力做到这一点。

我尝试执行以下操作

 g.V().hasLabel("label1").sideEffect{g.V().("label2").has("key",it.key).addEdge("link",it)}

但我收到以下错误:

No signature of method: org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_Traverser.values() is applicable for argument types: (java.lang.String) values: [key]

有人可以帮助我解决这个问题吗? 提前致谢

嵌套 g.V() 通常不是一个好主意。您可以使用一次遍历来解决问题:

g.V().hasLabel("label1").as("a").
  V().hasLabel("label2").as("b").
  where("a", eq("b")).by("key").
  addE("link").from("a").to("b")

另请注意,您必须允许在 DSE Graph 中进行扫描才能进行此遍历。