首页 文章

TitanDB Gremlin使用顶点ID创建边缘

提问于
浏览
1

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

通常你会做类似的事情

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

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

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

其中 256512 是顶点的ID .

2 回答

  • 0

    鉴于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);
    }
    

    您显然可能希望围绕这些顶点查找进行一些错误处理,但这是一般的想法 .

  • 3

    当然你可以这样做:

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

    如果任一顶点不存在,则会因IllegalArgumentException而失败

相关问题