Как рекурсивно читать связанные узлы в Cayley Graph Database?
База данных имеет узлы, которые образуют дерево. Каждый узел следует за другим с предикатом "предшествует". Я хочу написать запрос, который может прочитать все дерево с учетом начального узла.
Я пробовал Морфизм, но вывод не имеет никакого смысла для меня вообще. Возможно, из-за моего непонимания того, что на самом деле означает "морфизм"...
Любые советы или ссылки на реальные хорошие примеры будут оценены
2 ответа
Как отметил @Bruno в своем ответе, эквивалентом * в Gremlin является FollowRecursive().
var c1 = g.M().Both("precedes")
g.V("chain-1").FollowRecursive(c1).All()
Одна ключевая вещь здесь - это как часть запроса морфизма. Он кодирует, что направление предиката должно быть как In, так и Out. Я не уверен, как это отображается в шаблон запроса Neo4j
В Neo4j вы должны сделать что-то вроде этого:
MATCH p = (:Root)-[:precedes*]-()
RETURN p
Обратите внимание, что *
указанный после типа отношения сделает полный поиск по всему графику. Это может вызвать проблемы с памятью.