В языке Гремлина (ребенок Groovy) меня немного смущает поведение и использование ;
, &&
.Что такое синтаксис для операторов последовательности в Gremlin?
Например, в GremlinClient РЕПЛ (работает Titan 1.0 здесь) я мог бы желать, чтобы добавить несколько узлов сразу:
gremlin> graph = TitanFactory.open("../conf/gremlin-server/titan-cassandra-server.properties")
==>standardtitangraph[cassandra:[localhost]]
gremlin> g = graph.traversal(standard())
==>graphtraversalsource[standardtitangraph[cassandra:[localhost]], standard]
gremlin> g.V().count()
==>0
gremlin> g.addV(label, 'Subject', 'ident', '1') ; g.addV(label, 'Subject', 'ident', '2')
==>v[4304]
gremlin> g.V().count()
==>1
ОК, так ;
не работал. Как насчет &&
? Это не совсем имеет семантику я хочу, но я мог бы работать через него:
gremlin> g.V().count()
==>0
gremlin> g.addV(label, 'Subject', 'ident', '1') && g.addV(label, 'Subject', 'ident', '2')
==>true
gremlin> g.V().count()
==>2
... Ну вот вроде нормально. Теперь мне также нужно иметь возможность связывать переменные как часть последовательности команд. Как ни странно, точка с запятой работает здесь:
gremlin> g.V().count()
==>0
gremlin> g.E().count()
==>0
gremlin> g.addV(label, 'Subject', 'ident', '1') && g.addV(label, 'Subject', 'ident', '2')
==>true
gremlin> node3 = graph.addVertex(label, 'Subject', 'ident', '3') ; g.V().has('ident', '1').next().addEdge('dc:isPartOf', node3) ; node3.addEdge('dc:isPartOf', g.V().has('ident','2').next())
==>e[35z-6d4-2l91-9n4][8248-dc:isPartOf->12496]
gremlin> g.V().count()
==>3
gremlin> g.E().count()
==>2
Теперь вот трюк. Как я могу выполнять обе эти операции в одной строке (на самом деле, один запрос на Websocket)? Я не могу даже дублировать вышеприведенную линию node3 = ...
через ;
и получить надлежащую функциональность.
«Итерация вашего обхода» каждый раз ловит людей. Также см .: http://tinkerpop.apache.org/docs/current/tutorials/the-gremlin-console/#result-iteration - обратите внимание, что Гремлин был «отличным» в TinkerPop 2.x. Я бы не стал больше налагать это ограничение на TinkerPop 3.x. –
Большое вам спасибо! –