Запрос Гремлина для нахождения k удаленных вершин

Я пытался запустить запрос гремлина, чтобы найти k удаленных вершин от заданной вершины v и опустить вершины, напрямую связанные с v.

Я использую Gremlin 3.2.6.

Итак, что-то вроде этого, для k-distance (друг друга) не работает должным образом

g.V(v).both().as(“x”).repeat(both()).times(k).where(neq("x")).dedup()

Приведенное выше должно опускать вершины в "x", но это не так. Мой граф ориентирован, и между парой вершин могут быть ребра в обоих направлениях.

Кроме того, как мне сделать это общее для заданных расстояний меньше некоторого k, используя циклы (с которыми трудно справиться), и есть ли способ распечатать расстояние вместе со списком вершин. Спасибо.


person J.Doe    schedule 20.03.2018    source источник


Ответы (1)


x фактически должен быть совокупностью всех смежных вершин, а не просто ссылкой на соседнюю вершину на текущем пути.

gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V(1).both().aggregate("x").
           repeat(both().dedup()).
             times(5).
             emit().
           where(without("x"))
==>v[1]
==>v[6]
==>v[5]

А если вы также хотите исключить стартовую вершину, просто добавьте ее в коллекцию:

gremlin> g.V(1).store("x").
           both().aggregate("x").
           repeat(both().dedup()).
             times(5).
             emit().
           where(without("x"))
==>v[6]
==>v[5]
person Daniel Kuppitz    schedule 20.03.2018