私の問題はこのトピックに非常に近いです:サイファークエリ:リレーションシッププロパティでフィルタリングされた2つのノード間のすべてのパスを見つけるが、私がやろうとしているのは、パスに沿ってリレーションシッププロパティの値が増加するパスを見つけることです. そのため、前のトピックのソリューション パスの例 (A から D) では、次のようになります。
A->DおよびA->B->D
前のトピックのソリューションを使用しました
START a=node(1), d=node(4)
MATCH p=a-[r:ACTIVATES*..]->d
WITH head(relationships(p)) as r1,p
WHERE all(r2 in relationships(p)
where r2.temperature > r1.temperature)
return p;
この例では機能します。問題は、2 つ以上の関係を持つパスがある場合です。たとえば、次のようになります。
activates:50 activates:70 activates:60
(A)-------------->(B)-------------->(C)-------------->(D)
残念ながら、このパスも一致します。
このクエリをサイファーで記述する方法はありますか、代わりにグレムリンを使用する必要がありますか?
提案をありがとう。
更新:私が必要とするのは、(疑似プログラミング言語で)次のような構造です:
WITH head(relationships(p)) as r1,p
FOREACH(r2 in tail(relationships(p)):
r1.temperature < r2.temperature, r1 = r2)
しかし、可能であれば暗号で。