以下に示す関係を使用して、タイタングラフデータベースにモデルを実装しました。
[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の性質を覚えておきたい。prop1e1AB
より正確には、 が edge between のプロパティ(エッジにこのプロパティがある場合) であり、がfromのプロパティ(prop1, numberD)であるペアを効率的に取得したいと考えています。prop1A -> BnumberDnumberD
このクエリを効率的に実装する方法がわかりません。
頂点のみを取得するのは簡単です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 を使用してこれを (おそらく複数のクエリを使用して) 実装する方法について何か提案はありますか? ありがとう!