SHACL schreiben
NodeShape und PropertyShape mit Beispiel
NodeShapes wählen Fokusressourcen, PropertyShapes prüfen konkrete Pfade und Bedingungen.
NodeShape wählt Fokusressourcen
Ein NodeShape bündelt Constraints für Fokusressourcen. Targets bestimmen, welche Knoten geprüft werden, etwa alle Instanzen von schema:Product.
Ein Shape ohne Target kann dennoch von anderen Shapes referenziert werden.
PropertyShape prüft einen Pfad
Ein PropertyShape verbindet `sh:path` mit Constraints wie Kardinalität, Datentyp, Klasse oder Pattern. Der Pfad bestimmt, welche Werte vom Fokus aus geprüft werden.
Mehrere PropertyShapes halten Meldungen und Zuständigkeiten klarer als ein monolithischer Block.
Positive und negative Fixtures
Für jedes Constraint sollte ein gültiger und ein gezielt ungültiger Datensatz existieren. Das erwartete Ergebnis umfasst Fokus, Pfad und Constraint-Komponente.
Nur die Anzahl der Fehler zu testen ist zu schwach, weil zwei Fehler einander ersetzen könnten.
Produktname genau einmal auf Deutsch
Das Shape verlangt einen einzigen String mit Sprachkennzeichnung de.
ex:ProductShape a sh:NodeShape ;
sh:targetClass schema:Product ;
sh:property [
sh:path schema:name ;
sh:minCount 1 ; sh:maxCount 1 ;
sh:languageIn ( "de" ) ;
sh:uniqueLang true
] .Eigenständiges Modellierungsbeispiel. Präfixe werden im umgebenden Beispielkontext vorausgesetzt.
Prüffrage für die Praxis
Trenne fachliche Regeln in kleine benannte Shapes.
Quellen zu diesem Beitrag
Auswahl auf Artikelebene, geprüft am 18.09.2026.
- W3C SHACL, Shapes and Targets
Definiert NodeShapes, PropertyShapes und Targets. - W3C SHACL, Core Constraints
Definiert Kardinalität und Sprachconstraints.