Track: DPROD 1.1 data-contracts post-merge follow-up.
Plan item 2.3 of dprod-contracts/docs/changes-plan.md (source: Matthias email 19d08a1d item #10). dprod:path is "either a single property IRI or an RDF list of property IRIs". Today only cardinality is enforced (LeftOperandShape in dprod-contracts-shapes.ttl). A malformed value (e.g. a literal) silently breaks evaluation rather than producing a SHACL violation.
Steps:
- Extend the
sh:path dprod:path property shape inside LeftOperandShape with sh:or ( [ sh:nodeKind sh:IRI ] [ sh:node dprod-shapes:RdfListOfIris ] ).
- Add a new SHACL-Core shape
dprod-shapes:RdfListOfIris that walks rdf:rest*/rdf:first and asserts each element is sh:nodeKind sh:IRI:
sh:property [ sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ; sh:nodeKind sh:IRI ] .
Verify: a LeftOperand whose dprod:path is a literal triggers a violation; existing examples in dprod-contracts/examples/ still validate.
Note: mechanical if kept SHACL-Core. Soft-couples with #186 (5.4) only if that decision changes how dprod:path is OWL-typed.
Track: DPROD 1.1 data-contracts post-merge follow-up.
Plan item 2.3 of
dprod-contracts/docs/changes-plan.md(source: Matthias email 19d08a1d item #10).dprod:pathis "either a single property IRI or an RDF list of property IRIs". Today only cardinality is enforced (LeftOperandShapeindprod-contracts-shapes.ttl). A malformed value (e.g. a literal) silently breaks evaluation rather than producing a SHACL violation.Steps:
sh:path dprod:pathproperty shape insideLeftOperandShapewithsh:or ( [ sh:nodeKind sh:IRI ] [ sh:node dprod-shapes:RdfListOfIris ] ).dprod-shapes:RdfListOfIristhat walksrdf:rest*/rdf:firstand asserts each element issh:nodeKind sh:IRI:sh:property [ sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ; sh:nodeKind sh:IRI ] .Verify: a
LeftOperandwhosedprod:pathis a literal triggers a violation; existing examples indprod-contracts/examples/still validate.Note: mechanical if kept SHACL-Core. Soft-couples with #186 (5.4) only if that decision changes how
dprod:pathis OWL-typed.