0
グラフには3つの頂点A、B、Cがあり、これらはすべてエッジEを持つ頂点Dに接続します。今はA B Cを持っていますが、gremlinクエリを使用して共通テール頂点Dをどのようにクエリできますか?titanの複数の頂点の共通テール頂点を照会するにはどうすればよいですか?
グラフには3つの頂点A、B、Cがあり、これらはすべてエッジEを持つ頂点Dに接続します。今はA B Cを持っていますが、gremlinクエリを使用して共通テール頂点Dをどのようにクエリできますか?titanの複数の頂点の共通テール頂点を照会するにはどうすればよいですか?
ここであなたがそれを行う可能性があります一つの方法だ - 私はA、BおよびCと共通していなかったEの頂点を追加したことに注意してください:
gremlin> g.addV(id,'A').as('a').
......1> addV(id,'B').as('b').
......2> addV(id,'C').as('c').
......3> addV(id,'D').as('d').
......4> addV(id,'E').as('e').
......5> addE('knows').from('d').to('a').
......6> addE('knows').from('d').to('b').
......7> addE('knows').from('d').to('c').
......8> addE('knows').from('e').to('a').
......9> addE('knows').from('e').to('c').iterate()
gremlin> ids = ['A','B','C']
==>A
==>B
==>C
gremlin> g.V(ids).in().
......1> where(out().id().fold().order().is(eq(ids))).
......2> dedup()
==>v[D]
where()
は基本的に頭の頂点に戻って横断し、それらを集めるには識別子のリストに格納されます。識別子のリストは、トラバーサルを開始するために使用した識別子の元のリストと比較することができます。リストの均等性を保証するために識別子order()
に依存していることに注意してください。
gremlin> ['A','B','C'] == ['A','C','B']
==>false