- From: Jose Emilio Labra Gayo <jelabra@gmail.com>
- Date: Sun, 22 Nov 2015 08:47:55 +0100
- To: "public-rdf-shapes@w3.org" <public-rdf-shapes@w3.org>
Received on Sunday, 22 November 2015 07:48:44 UTC
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 Sunday, 22 November 2015 07:48:44 UTC