Gremlin: добавление границ в график по HTTP с использованием переменных вершин - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь выполнить скрипт gremlin через https для удаленного экземпляра JanusGraph.Я отфильтровал свою проблему в той части, где я пытаюсь добавить ребро, используя переменные вершины.Я пытаюсь добавить две вершины, назначить результаты переменной и использовать их для добавления ребра.Кроме того, я также стараюсь избегать однострочного сценария, например g.V().addV(..).aaddV(..).addE(..), из-за логики программы, стоящей за сценарием

В консоли gremlin (удаленный сеанс) работает следующий gremlin

def graph=ConfiguredGraphFactory.open("ga"); 
def g = graph.traversal(); 
v1=g.addV('node1');
v2=g.addV('node2');
v1.addE('test').to(v2);

Но когда я пытаюсь сделать то же самое по протоколу https (выданному серверу compose-janusgraph), я получаю ошибкуЯ добавил .iterate() к addV(), и вершины добавляются, если я удаляю линию addE(..).Но когда я пытаюсь

{"gremlin":"def graph=ConfiguredGraphFactory.open('ga'); 
def g = graph.traversal();
v1=g.addV('node16').property('name','testn16').iterate();
v2=g.addV('node17').property('name','testn2').iterate();
v1.addE('test18').to(v2);
g.tx().commit()"}

, я получаю исключение

Стратегии обхода завершены, и обход больше не может модулироваться "," Exception-Class ":" java.lang.IllegalStateException "

Также обратите внимание, что я объединяю весь gremlin в одну строку перед отправкой по curl. Я разделил их на новые строки здесь для удобства чтения. Любая помощь будет полезна. -Спасибо

1 Ответ

0 голосов
/ 26 февраля 2019

iterate() не возвращает Vertex ... он просто повторяет обход для генерации побочных эффектов (т. Е. Граф добавляет добавленную вершину, но результат не возвращается).Вам, вероятно, просто нужно сделать:

{"gremlin":"graph=ConfiguredGraphFactory.open('ga'); 
g = graph.traversal();
g.addV('node16').property('name','testn16').as('v1').
  addV('node17').property('name','testn2').as('v2').
  addE('test18').from('v1').to('v2').iterate();
g.tx().commit()"}
...