hypergraphs.de

Reproduzierbares Praxislabor

Cypher-Musterbibliothek für sichere Einstiege

Liefern vier kleine, parametrisierte Cypher-Muster stabile Kardinalitäten, ohne eine ungebremste Pfadsuche zu erzeugen?

Redaktion Hypergraphs.deFachprüfung: 18.09.2026Article

Voraussetzungen

Nutzen Sie eine isolierte Neo4j-Testdatenbank und notieren Sie Server- sowie Cypher-Version. `cypher-shell` verbindet sich mit einem Testkonto, das nur diese Datenbank verändern darf.

Legen Sie vor dem Import einen Eindeutigkeits-Constraint für `Product.id` an. Die vier künstlichen Knoten enthalten zwei Produkte und zwei Teile; reale Geschäftskennungen werden nicht verwendet.

Versuchsaufbau und minimale Daten

Die Bibliothek umfasst Suche per ID, direkte Nachbarn, begrenzten Pfad und Aggregation. Jedes Muster hat Parameter, erwartete Spalten und Kardinalität.

Das Zwei-Hop-Szenario verbindet Modell `m1` über `USES_PART` mit Teil `t1`, das über `REPLACED_BY` auf `t2` zeigt. Eine unverbundene Produktressource dient als Leerfall.

Befehl oder Abfrage

// Einmaliger Aufbau in der isolierten Testdatenbank
CREATE CONSTRAINT lab_product_id IF NOT EXISTS
FOR (p:Product) REQUIRE p.id IS UNIQUE;
CREATE (m1:Product:Lab20260918 {id:'m1'}),
       (m2:Product:Lab20260918 {id:'m2'}),
       (t1:Part:Lab20260918 {id:'t1'}),
       (t2:Part:Lab20260918 {id:'t2'}),
       (m1)-[:USES_PART]->(t1), (t1)-[:REPLACED_BY]->(t2);

MATCH (m:Product {id: $modelId})-[:USES_PART]->(old:Part)
MATCH (old)-[:REPLACED_BY]->(replacement:Part)
RETURN old.id AS oldId, replacement.id AS replacementId
ORDER BY oldId, replacementId;

# cypher-shell -P "modelId => 'm1'" -f two-hop.cypher

Nur in der beschriebenen isolierten Laborumgebung ausführen. Versionen und Exitcodes gehören zum Protokoll.

Erwartetes Ergebnis

Für `modelId = "m1"` enthält die Ausgabe exakt eine Datenzeile: `t1, t2`. Die Suche nach ID liefert ein Produkt; die Nachbarschaftsabfrage einen direkten Teil.

Speichern Sie neben jeder Query ein CSV-Sollresultat. Ein MATCH gilt nur als bestanden, wenn Spaltennamen, Zeilenanzahl und Werte übereinstimmen. Ein Browserdiagramm ersetzt diesen Vergleich nicht.

Negativtest

Setzen Sie `modelId = "m2"`. Erwartet werden null Zeilen und kein Fehler. Dieser Leerfall unterscheidet eine gültige Query von einer fehlenden Parameterbindung.

Ersetzen Sie testweise `[:REPLACED_BY]` durch `[*]`. Die Bibliothek muss diese unbeschränkte Variante ablehnen, weil ihre Laufzeit auf zyklischen Graphen nicht kontrolliert ist.

Rollback und Aufräumen

Löschen Sie die isolierte Testdatenbank oder nur Knoten mit dem eindeutigen Laborlabel `Lab20260918`. Prüfen Sie vorher, dass dieses Label außerhalb des Versuchs nicht existiert.

Entfernen Sie den Test-Constraint nur in der weggeworfenen Datenbank. Verwenden Sie in einer geteilten Instanz niemals ein breites `MATCH (n) DETACH DELETE n`.

Einordnung

Kleine Muster bleiben reviewbar, weil Startpunkt, Richtung, Pfadlänge und Ergebnisvertrag sichtbar sind. Die Bibliothek ist kein Versprechen für fremde Datenverteilungen.

Quellen zu diesem Beitrag

Die Primärquellen für „Cypher-Musterbibliothek für sichere Einstiege“ wurden am 18.09.2026 geprüft. Versions- und Statusangaben sind vor einem produktiven Einsatz erneut zu kontrollieren.

Weitere reproduzierbare Versuche