Reproduzierbares Praxislabor
SHACL-Labor: Produktkatalog validieren
Erkennt ein SHACL-Shape genau die vorbereiteten Pflichtfeld-, Datentyp-, Kardinalitäts- und Wertefehler?
Voraussetzungen
Installieren Sie `pyshacl` in einer isolierten Python-Umgebung und protokollieren Sie `pyshacl --version`. Legen Sie `catalog.ttl` und `shapes.ttl` getrennt ab.
Der Versuch benutzt künstliche Produkt-IRIs. Der Shape zielt auf `ex:Product` und prüft `ex:sku`: genau ein Wert, Datentyp `xsd:string`, Muster aus Großbuchstaben und vier Ziffern.
Versuchsaufbau und minimale Daten
Erstellen Sie zunächst `ex:p1` mit `ex:sku "AB-1234"`. Die Ausgangsdatei muss einen konformen Bericht ergeben.
Kopieren Sie die Datei viermal. Entfernen Sie die SKU, verwenden Sie eine Zahl, ergänzen Sie zwei SKU-Werte und schreiben Sie `ab-1234`. Jeder Fall verletzt bewusst nur eine Constraint-Komponente.
Befehl oder Abfrage
# catalog.ttl
@prefix ex: <https://example.org/> .
ex:p1 a ex:Product ; ex:sku "AB-1234" .
# shapes.ttl
@prefix ex: <https://example.org/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
ex:ProductShape a sh:NodeShape ; sh:targetClass ex:Product ;
sh:property [ sh:path ex:sku ; sh:minCount 1 ; sh:maxCount 1 ;
sh:datatype xsd:string ; sh:pattern "^[A-Z]{2}-[0-9]{4}$" ] .
pyshacl -s shapes.ttl -d catalog.ttl -f human
echo $?Nur in der beschriebenen isolierten Laborumgebung ausführen. Versionen und Exitcodes gehören zum Protokoll.
Erwartetes Ergebnis
Für die gültige Datei lautet der Bericht `Conforms: True`, der Prozess endet mit Exitcode 0. Für jede einzeln beschädigte Datei lautet er `Conforms: False`.
Über alle vier Negativdateien werden genau vier erwartete Validation Results beobachtet, je eines pro isoliertem Fall. Fokusnode, Ergebnispfad und SourceConstraintComponent müssen zur beabsichtigten Regel passen.
Negativtest
Führen Sie `pyshacl` ohne `-s shapes.ttl` aus. Ein leerer oder unpassender Shapes Graph darf nicht als Qualitätsbeweis gelten, selbst wenn kein Verstoß erscheint.
Ergänzen Sie ein Produkt ohne `rdf:type ex:Product`. Weil `sh:targetClass` es nicht fokussiert, entsteht kein Resultat. Das demonstriert eine Modellgrenze.
Rollback und Aufräumen
Verwerfen Sie die vier ungültigen Kopien oder bewahren Sie sie ausschließlich im Testverzeichnis auf. Importieren Sie sie niemals in den freigegebenen Katalog.
Löschen Sie die virtuelle Umgebung über den Projektordner, statt Pakete aus einer gemeinsam genutzten Python-Installation zu entfernen.
Einordnung
SHACL prüft den definierten Datenvertrag, nicht automatisch die Wahrheit einer Produktangabe. Target-Auswahl und Constraint-Komponenten müssen im Protokoll sichtbar bleiben.
Quellen zu diesem Beitrag
Die Primärquellen für „SHACL-Labor: Produktkatalog validieren“ wurden am 18.09.2026 geprüft. Versions- und Statusangaben sind vor einem produktiven Einsatz erneut zu kontrollieren.
- W3C SHACL Recommendation
Normative Definition von Shapes und Validation Results. - pySHACL README
Primärdokumentation der verwendeten Implementierung.