- From: Arthur Ryman <arthur.ryman@gmail.com>
- Date: Tue, 15 Dec 2015 22:05:22 -0500
- To: Martynas Jusevičius <martynas@graphity.org>
- Cc: Jose Emilio Labra Gayo <jelabra@gmail.com>, "public-rdf-shapes@w3.org" <public-rdf-shapes@w3.org>
Jose, You can say this in SHACL as boolean combination of shapes but it's verbose: (Label And (Not Comment)) Or ((Not Label) And Comment). -- Arthur On Mon, Nov 23, 2015 at 9:54 AM, Martynas Jusevičius <martynas@graphity.org> wrote: > Jose, > > can't you use SPARQL? Something like: > > { > ?item rdfs:label ?label > FILTER NOT EXISTS { ?item rdfs:comment ?comment } > } > UNION > { > ?item rdfs:comment ?comment > FILTER NOT EXISTS { ?item rdfs:label ?label } > } > > Not tested, but you get the idea. > > Martynas > graphityhq.com > > On Sun, Nov 22, 2015 at 8:47 AM, Jose Emilio Labra Gayo > <jelabra@gmail.com> wrote: >> Imagine that I want to declare items that either have rdfs:label or >> rdfs:comment, but no both. >> >> I ShEx, I can define: >> >> <Item> { >> rdfs:label xsd:string | rdfs:comment xsd:string >> } >> >> In Shacl, I was able to define it in the following way: >> >> :Item a sh:Shape ; >> sh:constraint [ >> a sh:OrConstraint ; >> sh:shapes ( >> [ sh:property [ >> sh:predicate rdfs:label ; >> sh:datatype xsd:string ; >> sh:minCount 1 ; >> sh:maxCount 1 ; >> ]] >> [ sh:property [ >> sh:predicate rdfs:comment ; >> sh:datatype xsd:string ; >> sh:minCount 1 ; >> sh:maxCount 1 ; >> ]] >> ) >> ] ; >> sh:constraint [ >> a sh:NotConstraint ; >> sh:shape [ >> sh:constraint [ >> a sh:AndConstraint ; >> sh:shapes ( >> [sh:property [ >> sh:predicate rdfs:label ; >> sh:datatype xsd:string ; >> sh:minCount 1 ; >> sh:maxCount 1 >> ]] >> [sh:property [ >> sh:predicate rdfs:comment ; >> sh:datatype xsd:string ; >> sh:minCount 1 ; >> sh:maxCount 1 >> ]] ) >> ] >> ] >> ] >> . >> >> Is there any other way to do this in SHACL? >> >> -- >> -- Jose Labra >> >
Received on Wednesday, 16 December 2015 03:05:50 UTC