TitanDB Gremlin使用顶点ID创建边缘

时间:2014-12-31 21:24:08

标签: gremlin titan

是否可以在两个顶点之间创建一条边而没有实际的顶点对象,只有gremlin中顶点的ID?

通常你会做类似

的事情
e = g.addEdge(v1, v2, 'knows')

创建和边缘v1v2是顶点对象。 我想做点什么

e = g.addEdge(256, 512, 'knows')

其中256512是顶点的ID。

2 个答案:

答案 0 :(得分:3)

鉴于Blueprints API的语义(Titan实现),这是不可能的。如果您确实需要该功能,可以实现GraphWrapper(如ReadOnlyGraphPartitionGraph)并添加该方法。这可能是很多样板代码,只能维护一个函数。

如果您正在使用Gremlin Groovy,我认为更好的方法是使用groovy进行一些元编程,以便在Graph接口上附加该方法...类似于:

Graph.metaClass.addEdge = { final Long outVertex, final Long inVertex, final String label ->
    return ((Graph) delegate).addEdge(null, g.v(outVertex), g.v(inVertex), label);
}

你显然可能想要围绕这些顶点查找进行一些错误处理,但这是一般的想法。

答案 1 :(得分:0)

当然你可以这样做:

e = g.addEdge(g.v(256), g.v(512), 'knows')

如果任一顶点不存在,则失败并返回IllegalArgumentException