- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Wed, 9 Sep 2015 04:42:10 -0700
- To: Holger Knublauch <holger@topquadrant.com>, 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 *and no values are supposed to be in the
intersection*, 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:qualifiedMaxCount 0 ]
is added.
NB: None of this has been checked against a SHACL implementation, so the
syntax might not be completely correct.
Received on Wednesday, 9 September 2015 11:42:42 UTC