- From: Martynas Jusevičius <martynas@graphity.org>
- Date: Mon, 23 Nov 2015 15:54:54 +0100
- To: Jose Emilio Labra Gayo <jelabra@gmail.com>
- Cc: "public-rdf-shapes@w3.org" <public-rdf-shapes@w3.org>
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 Monday, 23 November 2015 14:55:29 UTC