- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Wed, 9 Sep 2015 03:50:37 -0700
- To: RDF Data Shapes Working Group <public-data-shapes-wg@w3.org>
We want a shape that is satisfied (i.e., not violated) by nodes that have
between nc and mc values (including unbounded) for ex:p that satisfy shape C
and between nb and mb values (including unbounded) for ex:p that satisfy
shape B and no other values for ex:p. Further there are no nodes that can
satisfy both C and B.
This can be done with the following SHACL shape:
S rdf:type sh:Shape ;
sh:property [ sh:predicate ex:p ;
sh:qualifiedValueShape C ;
sh:qualifiedMinCount nc ;
sh:qualifiedMaxCount mc ] ;
sh:property [ sh:predicate ex:p ;
sh:qualifiedValueShape B ;
sh:qualifiedMinCount nb ;
sh:qualifiedMaxCount mb ] ;
sh:property [ sh:predicate ex:p ;
sh:valueShape [ rdf:type sh:Shape ;
sh:constraint [ rdf:type sh:OrConstraint ;
sh:shapes ( C B ) ] ] ] .
If the "no other values for ex:p" is not wanted, then the last constraint is
removed.
If C and B are not disjoint, then the constraint
sh:property [ sh:predicate ex:p ;
sh:valueShape [ rdf:type sh:Shape ;
sh:constraint [ rdf:type sh:AndConstraint ;
sh:shapes ( C B ) ] ] ;
sh:maxCount 0 ]
is added.
NB: None of this has been checked against a SHACL implementation, so the
syntax might not be completely correct.
peter
Received on Wednesday, 9 September 2015 10:51:08 UTC