是否有可能在没有实际顶点对象的两个顶点之间创建边缘,而只能在gremlin中创建顶点的ID?
通常你会做类似的事情
e = g.addEdge(v1, v2, 'knows')
创建和边缘 v1 和 v2 是顶点对象 . 我想做点什么
v1
v2
e = g.addEdge(256, 512, 'knows')
其中 256 和 512 是顶点的ID .
256
512
鉴于Blueprints API的语义(Titan实现),这是不可能的 . 如果您确实需要该功能,可以实现GraphWrapper(如 ReadOnlyGraph 或 PartitionGraph )并添加该方法 . 这可能是很多样板代码,只能维护一个功能 .
ReadOnlyGraph
PartitionGraph
如果您正在使用Gremlin Groovy,我认为更好的方法是使用groovy进行一些元编程以在 Graph 接口上附加该方法...类似于:
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); }
您显然可能希望围绕这些顶点查找进行一些错误处理,但这是一般的想法 .
当然你可以这样做:
e = g.addEdge(g.v(256), g.v(512), 'knows')
如果任一顶点不存在,则会因IllegalArgumentException而失败
2 回答
鉴于Blueprints API的语义(Titan实现),这是不可能的 . 如果您确实需要该功能,可以实现GraphWrapper(如
ReadOnlyGraph
或PartitionGraph
)并添加该方法 . 这可能是很多样板代码,只能维护一个功能 .如果您正在使用Gremlin Groovy,我认为更好的方法是使用groovy进行一些元编程以在
Graph
接口上附加该方法...类似于:您显然可能希望围绕这些顶点查找进行一些错误处理,但这是一般的想法 .
当然你可以这样做:
如果任一顶点不存在,则会因IllegalArgumentException而失败