Гремлин опрашивает через отличный скрипт, используя лампочки

Я пытаюсь найти лучший способ запроса 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]
Другие вопросы по тегам