我有具有此签名的功能:
public void doTheJob(String from, Collection<Pair<String, String>> relations)
其中:
from
是图形应询问的唯一值
relations
是对的集合,其中对中的第一个元素是边label
,第二个元素与from
类似,但它指定关系的第二面。例如(假设安迪,狗是唯一的):
"andy" ["has,dog", "has,cat", "is,person"]
我想在这些顶点之间添加这些边(它们已经存在于图形中,我想查询它们并在它们之间创建边)。我的要求是一次遍历。
谢谢!
答案 0 :(得分:1)
这是一种实现方法:
gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.addV().property('name','cat').
......1> addV().property('name','dog').
......2> addV().property('name','person').iterate()
gremlin> markoRelations = [['has','dog'],['has','cat'],['is','person']];[]
gremlin> joshRelations = [['has','dog'],['is','person']];[]
gremlin> t = g.V().has('name','marko').as('from');[]
gremlin> markoRelations.each { t = t.V().has('name',it[1]).
......1> addE(it[0]).from('from') };[]
gremlin> t.iterate()
gremlin> t = g.V().has('name','josh').as('from');[]
gremlin> joshRelations.each { t = t.V().has('name',it[1]).
......1> addE(it[0]).from('from') };[]
gremlin> t.iterate()
gremlin> g.E().hasLabel('is','has')
==>e[19][1-has->15]
==>e[20][1-has->13]
==>e[21][1-is->17]
==>e[22][4-has->15]
==>e[23][4-is->17]
不要过多地受Groovy语法的干扰,而只专注于Gremlin和结构。 markoRelations
和joshRelations
只是列表列表,内部列表基本上就是您Pair
。您在行尾看到的;[]
与答案无关-它仅有助于控制Gremlin控制台将显示的输出。