Rückgabeknoten, wenn Beziehung nicht vorhanden ist

Ich versuche, eine Abfrage mit Cypher zu erstellen, mit der fehlende Zutaten, die ein Koch möglicherweise hat, "gefunden" werden. Mein Diagramm ist folgendermaßen eingerichtet:

(ingredient_value)-[:is_part_of]->(ingredient)

(ingredient) hätte einen Schlüssel / Wert von name = "dye colors".(ingredient_value) könnte einen Schlüssel / Wert von value = "red" haben und "ist ein Teil von" the(ingredient, name="dye colors").

(chef)-[:has_value]->(ingredient_value)<-[:requires_value]-(recipe)-[:requires_ingredient]->(ingredient)

Ich benutze diese Abfrage, um alle zu erhalteningredients, aber nicht ihre tatsächlichen Werte, die ein Rezept erfordert, aber ich möchte die Rückkehr nur dieingredients das hat der koch nicht, statt alle zutaten die jedes rezept benötigt. Ich habe es versucht

(chef)-[:has_value]->(ingredient_value)<-[:requires_value]-(recipe)-[:requires_ingredient]->(ingredient)<-[:has_ingredient*0..0]-chef

aber das brachte nichts zurück.

Ist dies etwas, das mit cypher / neo4j erreicht werden kann, oder ist dies etwas, das am besten durch die Rückgabe aller Zutaten und deren Selbstsortierung gehandhabt wird?

Bonus: Es gibt auch eine Möglichkeit, Cypher zu verwenden, um alle Werte, die ein Koch hat, mit allen Werten zu vergleichen, die ein Rezept erfordert. Bisher habe ich nur alle Teilübereinstimmungen zurückgegeben, die von a zurückgegeben werdenchef-[:has_value]->ingredient_value<-[:requires_value]-recipe und die Ergebnisse selbst aggregieren.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage