Гремлин опрашивает через отличный скрипт, используя лампочки
Я пытаюсь найти лучший способ запроса titan
с gremlin
через библиотеку питона bulbs
,
У меня простое дерево
n0
/ \
/ \
n1 n2
/ \ \
n3 n4 n5
и я хочу получить n4
и края: e[n0 -> n1] => e1
, e[n1 -> n4] => e2
ведущих к n4
, Так что в этом примере я хочу [e1, e2, n4]
Я знаю все индексы узлов, прежде чем сделать запрос. В этом примере node_ids = ['ddbe4d52e7034ffeb17c9426fc1484af, '754d5e84daad4140ba93cb10ce00cde0', '7b2848543b444fcc94e69d7930ffa996']
С помощью этой информации я могу построить этот запрос, который я считаю довольно длинным и повторяющимся.
g.V('nid', 'ddbe4d52e7034ffeb17c9426fc1484af').out
.has('nid', '754d5e84daad4140ba93cb10ce00cde0').out
.has('nid', '7b2848543b444fcc94e69d7930ffa996')
Это только дает мне последний узел. Я все еще пытаюсь выяснить это sideAffect
вещь, которая gremlin
должен вернуть края, которые мне нужны.
Я знаю, что могу создавать собственные сценарии и использовать их gremlin
, но я очень новичок во всем этом, поэтому помощь будет принята с благодарностью.
псевдокод чего-то, что я ищу
def get_node(nodes) {
edges = []
for node in nodes:
get first node
find edge that goes to second node
edges.append(edge)
return edges + last node
}
Также, если у кого-то есть хороший учебник по gremlin/groovy, это будет полезно
Спасибо
1 ответ
Вы можете получить путь. Пытаться:
g.V('nid', 'ddbe4d52e7034ffeb17c9426fc1484af').outE.inV
.has('nid', '754d5e84daad4140ba93cb10ce00cde0').outE.inV
.has('nid', '7b2848543b444fcc94e69d7930ffa996').path
Это дает вам список с:
[startVertex, startIntermediateEdge, intermediateVertex, intermediateTargetEdge, targetVertex]