hypergraphs.de

Reproduzierbares Praxislabor

SHACL-Labor: Produktkatalog validieren

Erkennt ein SHACL-Shape genau die vorbereiteten Pflichtfeld-, Datentyp-, Kardinalitäts- und Wertefehler?

Redaktion Hypergraphs.deFachprüfung: 18.09.2026TechArticle

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.

Weitere reproduzierbare Versuche