Как получить список всех входящих промежуточных вершин между исходной и целевой вершинами определенной метки, используя запрос Gremlin? - PullRequest
0 голосов
/ 21 октября 2019

Запрос Gremlin, который я использую для получения списка всех исходящих вершин (с меткой ребра «имеет») из выбранной вершины «P1» до тех пор, пока он не достигнет вершины с определенной меткой «L3», выглядит следующим образом:

g.V().has("id”,”P1”).repeat(out(“has”)).until(hasLabel(“L3”)).path().by("id")

Как и ожидалось, вышеприведенный запрос возвращает мне список всех промежуточных узлов между выбранной вершиной и целевой вершиной с меткой «L3».

Однако при использовании одного и того же запроса (изменение «out» на'in') в противоположном направлении, т. е. чтобы получить список всех входящих вершин из выбранной вершины в целевую вершину с определенной меткой, я сразу получаю ошибку запроса gremlin.

Вот запрос:

 g.V().has("id”,”P3”).repeat(in(“has”)).until(hasLabel(“L1”)).path().by("id")

Ошибка выглядит следующим образом:

Failure in submitting query: 
Error: Script compile error: Missing ')' 

Я не вижу пропущенных скобок в запросе и единственное изменение между запросами на входящие или исходящие вершины, которые я сделалиспользует 'in' вместо 'out'.

В официальной документации tinkerpop (https://tinkerpop.apache.org/docs/3.2.9/reference/#_traversal_strategies_2), в стратегиях обхода я не могу найти ни одного примера с repeatat (in ()), только с повторением (out ()). Существует ли специальный запрос или метод для получения всех входящих вершин из выбранной вершины, пока она не достигнет вершины с определенной меткой?

1 Ответ

0 голосов
/ 21 октября 2019

Я не уверен, если это ваша проблема или нет, но я мог видеть, где вы могли бы получить ошибку, потому что "in" - это зарезервированное слово в Groovy, поэтому вы должны явно порождать его, используя класс анонимного обхода с: __.in(), следовательно:

g.V().has("id","P3").repeat(__.in("has")).until(hasLabel("L1")).path().by("id")

Эта проблема задокументирована в ряде мест Справочной документации, но, возможно, вы ее пропустили (вы также ссылались на довольно старую версию документации) - описализдесь, в примечании, например, Vertex Steps .

...