グラフがあります(下の写真を参照)。私は A からグレムリンを使用し、エッジ「impacts」と「similarTo」に続いてすべてのツリーをループする必要があります。
だから私は次のようなものが必要です:
g.v(A.id).out('impacts', 'similarTo').loop(1){it.loops < 4}{true}
このクエリの問題は、関係 "similarTo" が、アプリケーションがその時点でどのようにデータを格納しているかに応じて、エッジの外に出たり、エッジの中にあったりすることです (グラフを参照)。一方、「影響」関係にはアウトエッジしか必要ないため、単純に「両方」(gv(A.id).both('impacts', 'similarTo')...) を使用してエッジを取得することはできません。一部の頂点 (たとえば C) で「similarTo」エッジが欠落している可能性もあります。この場合、ループは「影響」関係のみに従う必要があります。
最後に、このようなことを試しましたが、間違って使用していると思われ、結果は適切ではありません:
g.v(A.id).as('x').copySplit(_().out('impacts'), _().both('similarTo')).fairMerge.loop('x'){it.loops < 4}{true}
また、トラバース中に方向によってエッジをフィルタリングしようとしましたが、おそらくサポートされていないため、これも機能しません。
g.v(A.id).as('x').bothE.filter{((it.label=='impacts' & it.direction=='out') || it.label=='similarTo')}.bothV.loop('x'){it.loops < 4}{true}
助言がありますか?