Ich weiß, dass Neo4j eine Beziehung Richtung zum Zeitpunkt der Erstellung erfordert, aber diese Richtung in der Abfragezeit ignorieren kann. Auf diese Weise kann ich mein Diagramm abfragen, ohne die Beziehungsrichtung zu beachten.Warum erlaubt neo4j keine direkte oder bidirektionale Beziehung zum Zeitpunkt der Erstellung?
Ich weiß auch, dass es einige Problemumgehungen für Fälle gibt, wenn die Beziehungen natürlich bidirektional oder nicht gerichtet sind, like described here.
Meine Frage ist: Warum ist es so implementiert? Gibt es einen guten Grund, nicht gerichtete oder bidirektionale Beziehungen zur Erstellungszeit zuzulassen? Ist es eine Einschränkung der Datenbankarchitektur?
CREATE()-[:KNOWS]-()
CREATE()<-[:KNOWS]->()
ich nach einer Antwort suchte im Internet, aber ich habe nicht viel finden:
Die Cypher Aussagen wie unten sind nicht erlaubt. Zum Beispiel this github issue.
Ist seltsam, eine Beziehungsrichtung zu einer zu definieren, die es nicht haben. Es scheint mir, dass ich die Semantik meines Graphen verletze.
EDIT 1:
Zu meiner Sicht zu einem "semantisches Problem" (vielleicht der Begriff ist falsch) zu klären:
Nehmen wir an, ich diese einfache CREATE
Anweisung ausführen:
CREATE (a:Person {name:'a'})-[:KNOWS]->(b:Person {name:'b'})
Als Ergebnis habe ich diese sehr einfache Grafik:
Die :KNOWS
-Beziehung hat nur eine Richtung, weil Neo4j zum Zeitpunkt der Erstellung eine Beziehungsrichtung benötigt. In meiner Domäne a
kennt b
und b
kann a
.
nun ein neues Teammitglied wird mein Graph mit dieser Cypher Abfrage abfragen:
MATCH path = (a:Person {name:'a'})-[:KNOWS]-(b:Person {name:'b'})
return path
Das neue Teammitglied nicht wissen, dass, wenn ich diese Grafik habe ich der Auffassung, dass :KNOWS
Beziehung nicht gerichtet ist. Das Ergebnis, dass er sehen wird, ist das gleiche:
durch das Ergebnis dieses neue Teammitglied vorstellen kann, dass nur Person ein weiß b Person betrachten. Es scheint mir schlecht zu sein. Nicht für dich? Das macht Sinn?
Hallo @kuah! Ihre Antwort ist sehr nah an dem, was ich erwarte. Ich lese dieses Buch und werde das empfohlene Kapitel in naher Zukunft lesen! Vielen Dank! :) –