以下に示す関係を使用して、タイタングラフデータベースにモデルを実装しました。
[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
はユーザーに関連するいくつかのデータを記述する「重要度の低い頂点」です。
クエリ アルゴリズムの入力はid
、頂点のプロパティですA
。
上記の方法でD
接続されているすべての頂点を見つけたいです。さらにとの間の辺A
の性質を覚えておきたい。prop1
e1
A
B
より正確には、 が edge between のプロパティ(エッジにこのプロパティがある場合) であり、がfromのプロパティ(prop1, numberD)
であるペアを効率的に取得したいと考えています。prop1
A -> B
numberD
number
D
このクエリを効率的に実装する方法がわかりません。
頂点のみを取得するのは簡単です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 を使用してこれを (おそらく複数のクエリを使用して) 実装する方法について何か提案はありますか? ありがとう!