【发布时间】:2013-11-07 21:09:24
【问题描述】:
我在 Titan 图形数据库中实现了模型,关系如下:
[A] ---(e1)---> [B] <---(e2)--- [C] ---(e3)---> [D]
| | | | | | |
prop:id | prop:number | | label:e3 |
| | prop:id |
label:e1 label:e2 prop:number
prop:prop1
A 和B 是“主要顶点”(例如用户),顶点B 和C 是描述与用户相关的一些数据的“不太重要的顶点”。
查询算法的输入是顶点A的属性id。
我想找到所有这样的顶点D,它们以上面显示的方式与A 连接。更要记住A和B之间的边e1的属性prop1。
更准确地说,我想有效地检索对(prop1, numberD) 其中prop1 是A -> B 之间的边缘属性(如果边缘具有此属性),而numberD 是属性number 来自@987654339 @。
我不知道如何有效地实现这个查询。
很容易只检索顶点D(使用GremlinPipes):
pipe
.start(startVertex)
.outE("e1")
.inV().hasProperty("number")
.inE("e2")
.outV().hasProperty("id")
.outE("e3")
.inV().hasProperty("number");
但是当我还需要获取边 e1 并将它们与顶点 D 匹配时,就会出现问题。
我尝试分别计算所有这些步骤,但似乎效率很低。
您对如何使用 gremlin-java 或 gremlin-groovy 实现此(可能使用多个查询)有任何建议吗? 谢谢!
【问题讨论】: