2016-08-05 43 views
0

enter image description hereCyper query- Eigenschaftswert Änderungspropagierung

Hallo,

In der obigen Grafik haben wir ein Szenario, in dem sie in einem der Werteigenschaft eines Knotens aktualisiert wird, sind die Auswirkungen dieser Wert auf auf die verbleibenden Knoten übertragen werden. Wie sollte dieses Wertänderungsereignis durch die Chiffrierabfrage propagiert werden?

Schätzen Sie Ihre Unterstützung

+0

Gibt es Einschränkungen hinsichtlich der Beziehungen, die beim Abgleich auf Downstream-Knoten zu beachten sind? – InverseFalcon

+0

die Aktualisierungen müssen vorgelagert sein, dh wenn sich die Eigenschaft an einem Knoten ändert (sagen wir R5 im Beispiel), muss für alle vorgelagerten Knoten, die Auswirkungen haben, die Werteeigenschaft neu berechnet werden. (ZB R5 soll Einfluss auf R4, R3 haben , R2 in einigen Szenarien oder R5 soll Einfluss auf die S1..S5 Knoten haben) in einigen Szenarien – j2eeuser

+0

Klingt wie die Regeln variieren. Ohne Etiketten oder Wissen über die Logik dessen, was diese Knoten sind und welche Bedeutung sie in ihren Beziehungen haben, ist es ziemlich schwierig, Lösungen anzubieten. Ich denke, wir brauchen etwas konkreteres für die Art und Weise, wie diese Szenarien funktionieren sollen und welche Kriterien für welche Knoten oder Beziehungen zu verwenden sind, bevor wir irgendeine Art von Beratung anbieten können. – InverseFalcon

Antwort

0

Ist die Forderung, dass diese besondere Eigenschaft immer das gleiche für diese Gruppe von Knoten enthalten sein sollte? Wenn es identisch sein muss, würde ich empfehlen, es stattdessen in einen Knoten zu extrahieren und Beziehungen zu diesem Knoten von allen Knoten zu erstellen, die es verwenden sollten.

Mit dem Wert an einem einzelnen Ort, wird es nur eine einzige Änderung der Eigenschaften auf diesem Knoten und alles wird in den richtigen Zustand sein.

EDIT

Anforderungen sind ziemlich unscharf, so meine Antwort auch unscharf sein wird.

Wenn Sie basierend auf Beziehungstypen übereinstimmen, möchten Sie eine Art von Multiplizität in der Beziehung und möglicherweise zulässige Typen in der Übereinstimmung angeben. Wie zum Beispiel:

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

, die auf jedem einzelnen Knoten von Ihrem startNode bis die Beziehung Kette, bis es nicht mehr der erlaubten Beziehungen sind weiterhin Verfahrgeschwindigkeit übereinstimmen.

Wenn Sie eine kompliziertere Erweiterung benötigen, können Sie sich die APOC-Prozedurbibliothek Path Expander ansehen.

Nachdem Sie die richtige übereinstimmende Abfrage gefunden haben, sollte es nur darum gehen, die Neuberechnung für alle übereinstimmenden Knoten durchzuführen.

+0

Hallo, Der Eigenschaftswert wird nicht derselbe sein. Der Eigenschaftswert der abhängigen Knoten muss basierend auf einigen Regeln berechnet werden. – j2eeuser

+0

Meine Antwort ein wenig bearbeitet, hoffe, dass sie Ihren Anforderungen besser entspricht – InverseFalcon

+0

Gibt es Einschränkungen hinsichtlich der Anzahl der Beziehungstypen, die in der MATCH-Abfrage verwendet werden können, zB: R45 | R34 | usw., sagen wir, es gibt ungefähr 20 bis 30 Etiketten ?. Ist es ein richtiger Ansatz, so viele Labels an die Beziehung anzuhängen? Alle S-Knoten enden möglicherweise nicht bei R5. Einige von ihnen verzweigen sich und enden bei verschiedenen R-Knoten.Also denke ich, dass ich den SNode-Namen (S1, S2) als Beziehungsbezeichnungsname verwende. – j2eeuser