这个问题涉及Gremlin 3.0.2(我已经受此限制,因为Titan尚未超越1.0.0) .
我试图在没有(已知)关系的两个顶点之间远程添加边缘,并且事先不知道其Ids(即“键”?) . 在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实现这一目标呢?
1 回答
使用TinkerPop v3.0.1(与Titan v1.0.0捆绑在一起)时,需要使用
withSideEffect
步骤 .您可以自由使用
x
以外的任何步骤标签 .参考:TinkerPop v3.0.1 AddEdge step