在两个不相关的顶点之间添加一条边
Adding an edge between two unrelated vertices
这个问题是指 Gremlin 3.0.2(我一定要回答这个问题,因为 Titan 还没有超过 1.0.0)。
我正在尝试在没有(已知)关系且其 ID(即 "keys"?)事先未知的两个顶点之间远程添加一条边。
而在 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 实现这一目标呢?
使用 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
以外的任何步骤标签。
这个问题是指 Gremlin 3.0.2(我一定要回答这个问题,因为 Titan 还没有超过 1.0.0)。
我正在尝试在没有(已知)关系且其 ID(即 "keys"?)事先未知的两个顶点之间远程添加一条边。 而在 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 实现这一目标呢?
使用 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
以外的任何步骤标签。