各ノードが Java クラスを表し、それぞれが名前空間と呼ばれるプロパティを持つグラフがあります。開始ノードと最終ノードが名前空間を共有しているが、すべての中間ノードがその名前空間を共有していないパターンに一致させたい。3つのクラス(クラスA - >クラスB - >クラスC)がある場合、私は持っています:
START inside1 = node(*)
match inside1 -[:USES]-> outside1 -[:USES] -> inside2
where inside1.namespace <> outside1.namespace
and inside2.namespace = inside1.namespace
return inside1.name, outside1.name, inside2.name
これはうまくいくようです。拡張しようとしたときに、次のことを試しました。
START inside1 = node(*)
match inside1 -[:USES]-> outside1 -[:USES*] -> inside2
where inside1.namespace <> outside1.namespace
and outside1.namespace <> inside1.namespace
and inside2.namespace = inside1.namespace
return inside1.name, outside1.name, inside2.name
問題は、中間ノードが inside1 と同じ名前空間を共有するパスが必要ないことです。だから私の質問は、「名前空間がinside1.namespaceと等しいノードにヒットしたときに停止する」と言うことができる方法はありますか?
ありがとう。