2016-08-05 8 views
0

enter image description hereCyper query-プロパティ値の変更の伝播

こんにちは、

上のグラフでは、我々はに、その値の効果を更新しているノードの値プロパティのいずれかのシナリオを持っています残りのノードに伝搬される。この値変更イベントは、どのようにしてサイファークエリによって伝播されるべきですか。

+0

ダウンストリームノードで照合するときに従う関係に制限はありますか? – InverseFalcon

+0

アップデートはアップストリームで行わなければならない。つまり、ノードのプロパティが変更された場合(例ではR5とする)、インパクトのあるすべての上流ノードは値プロパティを再計算することになる(R5はR4、R3いくつかのシナリオではR2、R5はS1..S5ノードに影響を与える) – j2eeuser

+0

ルールのようなサウンドはさまざまです。ラベルがないか、これらのノードが何であるかの論理と、その関係にどのような意味があるかを知っているので、解決策を提示することはむしろ困難です。私は、これらのシナリオがどのように動作するはずか、何らかのアドバイスを提供する前に、どんなノードや関係をトラバースするためにどの基準を使うべきかについて、より具体的なものが必要だと思います。 – InverseFalcon

答えて

0

は、この特定のプロパティは常に、ノードのこのグループのために同じであるべき要件ですか?ご支援に感謝同じでなければならない場合は、代わりにノードに抽出し、それを使用する必要があるすべてのノードからそのノードへの関係を作成することをお勧めします。

値を1つの場所に入れると、そのノードでプロパティの変更が1回だけ必要になり、すべてが正しい状態になります。

EDIT

要件はかなりあいまいなので、私の答えは、同様にあいまいになります。

リレーションシップタイプに基づいてマッチングしている場合は、リレーションシップに何らかの多重性が必要で、マッチで許可されたタイプを指定することができます。以下のような:トラバースを継続させ関係のこれ以上存在しなくなるまで、あなたのstartNodeアップ関係のチェーンからすべての単一のノードに一致します

MATCH (start:RNode)-[:R45|R34|R23|R12*]->(r:RNode) 
WHERE start.ID = 123 (or however you're matching on your start node) 

さらに複雑な拡張が必要な​​場合は、APOCプロシージャライブラリのPath Expanderを参照してください。

正しい照合クエリを見つけたら、一致したすべてのノードの再計算を行うだけです。

+0

こんにちは、プロパティ値は同じではありません。依存ノードのプロパティ値はいくつかのルールに基づいて計算する必要があります – j2eeuser

+0

私の答えを少し編集しました。あなたの要件に合ってほしいと願っています – InverseFalcon

+0

MATCHクエリで使用できるリレーションシップタイプのラベルの数には制限があります: R45 | R34 |約20〜30のラベルがあるとしましょう。関係に非常に多くのラベルを付けるのは正しいアプローチですか?すべてのSノードはR5で終了しないことがあります。それらのいくつかは、異なるRノードで分岐して終了します。だから、私はSNode名(S1、S2)を関係ラベル名として考えています。 – j2eeuser