- 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