3

私の問題はこのトピックに非常に近いです:サイファークエリ:リレーションシッププロパティでフィルタリングされた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)

しかし、可能であれば暗号で。

4

1 に答える 1