グラフの各頂点には、少なくともnameプロパティがあります。私は名前の値のラベルLを設定しました。今度は、集合Sの名前を持つ頂点から、エッジラベルELを持つ特定の発信エッジを経由して(再帰的に)到達できるすべての頂点のnameプロパティの値を収集します。Javaでgremlinを使用してグラフをトラバースしているときに、どのようにプロパティ値を収集できますか?
私の現在の単一ソリューション名前S1を持つノードは、次のようになります開始:
g.traversal().V().hasLabel(L)
.has("name", S1)
.repeat(__.optional(__.out(EL)))
.until(__.out(EL).count().is(0))
.path()
.forEachRemaining(path -> {
path.forEach(e -> System.out.println(((Vertex)e).property("name").value()));});
println
これだけ期待される結果を生成し、通常私は設定に名前を収集することを確認することです。
ラベルELで出力エッジで到達可能なすべての頂点のnameプロパティの値を収集するより良い方法はありますか?
複数の頂点で始まる最善の方法は何でしょうか(名前だけが集合Sからわかる)。
現在、構造はツリーですが、サイクルによって変化する場合は、上記のコードは無限ループを防ぎますか?そうでない場合、どうすればこのことができますか?