- From: Eric Prud'hommeaux <eric@w3.org>
- Date: Mon, 5 Jun 2017 14:48:36 -0400
- To: Irene Polikoff <irene@topquadrant.com>
- Cc: public-rdf-shapes@w3.org
* Irene Polikoff <irene@topquadrant.com> [2017-06-05 10:54-0400] > You can use sh:xone instead of sh:or, then you will not need any NOT statements sh:xone works for disjuncts with a single property in them but if you have more, as in foaf:givenName and foaf:familyName, it doesn't prevent complete matches of one disjunct with partial matches of another. [[ For each value node v let N be the number of the shapes that are members of $xone where v conforms to the shape. ]] (What's "$xone"?) To illustrate this, <F_extraGiven> and <F_extraFamily> pass the shape below: <P_name> foaf:name "Bob Smith". <P_givenFamily> foaf:givenName "Bob" ; foaf:familyName "Smith" . <F_missing> <p> <o> . <F_extraBoth> foaf:name "Bob Smith" ; foaf:givenName "Bob" ; foaf:familyName "Smith" . <F_extraGiven> foaf:name "Bob Smith" ; foaf:givenName "Bob" . <F_extraFamily> foaf:name "Bob Smith" ; foaf:familyName "Smith" . > http://w3c.github.io/data-shapes/shacl/#XoneConstraintComponent <http://w3c.github.io/data-shapes/shacl/#XoneConstraintComponent> > > > > On Jun 5, 2017, at 7:02 AM, Eric Prud'hommeaux <eric@w3.org> wrote: > > > > I'm considering the feasibility of compiling ShEx to SHACL. Is there a > > shorter way to compile this ShEx oneOf: > > > > <NameShape> { > > foaf:name LITERAL > > | foaf:givenName LITERAL ; foaf:familyName LITERAL > > } > > > > than this SHACL?: > > > > :UserShape > > sh:or ( > > [ sh:and ( > > [ sh:property > > [ sh:path foaf:name; sh:minCount 1; sh:maxCount 1 ] ] > > [ sh:not [ > > sh:property > > [ sh:path foaf:givenName; sh:minCount 1; sh:maxCount 1 ] ] ] > > [ sh:not [ > > sh:property > > [ sh:path foaf:familyName; sh:minCount 1; sh:maxCount 1 ] ] ] ) ] > > [ sh:and ( > > [ sh:not [ sh:property > > [ sh:path foaf:name; sh:minCount 1; sh:maxCount 1 ] ] ] > > [ sh:property > > [ sh:path foaf:givenName; sh:minCount 1; sh:maxCount 1 ] ] > > [ sh:property > > [ sh:path foaf:familyName; sh:minCount 1; sh:maxCount 1 ] ] ) ] ) . > > > > -- > > -ericP > > > > office: +1.617.599.3509 > > mobile: +33.6.80.80.35.59 > > > > (eric@w3.org) > > Feel free to forward this message to any list for any purpose other than > > email address distribution. > > > > There are subtle nuances encoded in font variation and clever layout > > which can only be seen by printing this message on high-clay paper. > > > -- -ericP office: +1.617.599.3509 mobile: +33.6.80.80.35.59 (eric@w3.org) Feel free to forward this message to any list for any purpose other than email address distribution. There are subtle nuances encoded in font variation and clever layout which can only be seen by printing this message on high-clay paper.
Received on Monday, 5 June 2017 18:48:44 UTC