是否可以在两个顶点之间创建一条边而没有实际的顶点对象,只有gremlin中顶点的ID?
通常你会做类似
的事情e = g.addEdge(v1, v2, 'knows')
创建和边缘v1
和v2
是顶点对象。
我想做点什么
e = g.addEdge(256, 512, 'knows')
其中256
和512
是顶点的ID。
答案 0 :(得分:3)
鉴于Blueprints API的语义(Titan实现),这是不可能的。如果您确实需要该功能,可以实现GraphWrapper(如ReadOnlyGraph
或PartitionGraph
)并添加该方法。这可能是很多样板代码,只能维护一个函数。
如果您正在使用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