2016-05-24 5 views
2

Этот вопрос относится к Gremlin 3.0.2 (я связан с этим, так как Titan еще не продвинулся выше 1.0.0).Добавление края между двумя несвязанными вершинами

Я пытаюсь добавить ребро удаленно между двумя вершинами, которые не имеют (известного) отношения и идентификаторы которых (то есть «ключи»?) Не известны заранее. Хотя в Gremlin 3.2 можно было бы просто сделать

:> g.V().has('propertykey', 'value1').as('o').V().has('propertykey','value2').addE('edgelabel').to('o') 

это держит меня застрял в Gremlin 3.0.2. То, что я пытался до сих пор (:

:> g.V().has('propertykey', 'value1').next().addOutE('edgelabel', g.V().has('propertykey', 'value2').next()) 

завершается с сообщением

No signature of method: com.thinkaurelius.titan.graphdb.vertices.CacheVertex.addOutE() is applicable for argument types: (java.lang.String, com.thinkaurelius.titan.graphdb.vertices.CacheVertex, java.lang.String, java.lang.String) values: [edgelabel, v[24776]] 

То же самое сообщение об ошибке появится, если один изменяет второй параметр addOutE к g.V(24776).next() Глядя на метод подписи AddEdge его. показывает, что он ожидает строку для ключа второй вершины, но

> g.V().has('fbid', 'fbid_13').next().addOutE('edgelabel', '24776') 

терпит неудачу, а также, о том, что

No signature of method: com.thinkaurelius.titan.graphdb.vertices.CacheVertex.addOutE() is applicable for argument types: (java.lang.String, java.lang.String, java.lang.String, java.lang.String) values: [edgelabel, 24776] 

Итак, как достичь этого с помощью Gremlin 3.0.2?

ответ

3

При использовании TinkerPop v3.0.1 (в комплекте с Titan v1.0.0) вам необходимо использовать шаг withSideEffect.

:> g.withSideEffect('x', g.V().has('propertykey', 'value1')).V().has('propertykey', 'value2').addOutE('edgeLabel', 'x') 

Вы можете использовать любой шаг метки, кроме x.

Код: TinkerPop v3.0.1 AddEdge step