Re: compiling ShEx oneOf to SHACL

You can use sh:xone instead of sh:or, then you will not need any NOT statements

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.
> 

Received on Monday, 5 June 2017 14:55:11 UTC