Hello,
I am trying to understand just how possible it is to close the world using
SHACL. With the current implementation of the SHACL API, is it possible to
inherit the constraints of one's super class (via rdfs:subClassOf) **and**
to close the sub-class? The following example defines a shape (and class)
and two property constraints for Events. Dinner is then defined as a
subClassOf Event but the Dinner shape is also defined as being closed. The
intent here is to not allow any other predicates for Dinner. The result
produces a failure for inst:dinner_1 stating that ex:startDate is not
allowed because Dinner is closed. If I change the Dinner shape such that
sh:closed == false, the instance does indeed become conformant but also
allows other predicates. Am I attempting something that SHACL is not meant
to do? From what I can tell, subClassOf is the way of achieving
"inheritance" but perhaps I have misunderstood. Thanks for your help.
Matt
PS: I created this example using TBC 5.2.1 and have gotten similar results
when using the SHACL API directly.
ex:Event
rdf:type rdfs:Class ;
rdf:type sh:Shape ;
rdfs:label "Event" ;
sh:ignoredProperties (
rdf:type
rdfs:label
) ;
sh:property [
sh:predicate ex:endDate ;
sh:datatype xsd:date ;
sh:maxCount 1 ;
sh:name "end date" ;
] ;
sh:property [
sh:predicate ex:startDate ;
sh:datatype xsd:date ;
sh:maxCount 1 ;
sh:name "start date" ;
] ;
.
ex:Dinner
rdf:type rdfs:Class ;
rdf:type sh:Shape ;
rdfs:label "Dinner" ;
rdfs:subClassOf ex:Event ;
sh:closed "true"^^xsd:boolean ;
sh:ignoredProperties (
rdf:type
rdfs:label
) ;
sh:property [
sh:predicate ex:onMenu ;
sh:datatype xsd:string ;
sh:name "on menu" ;
] ;
.
inst:dinner_1
rdf:type ex:Dinner ;
ex:onMenu "Hamburger" ;
ex:startDate "2001-01-01"^^xsd:date ;
rdfs:label "dinner 1" ;
.
--
You received this message because you are subscribed to the Google Group
"TopBraid Suite Users", the topics of which include the TopBraid Suite family
of products and its base technologies such as SPARQLMotion, SPARQL Web Pages
and SPIN.
To post to this group, send email to [email protected]
---
You received this message because you are subscribed to the Google Groups
"TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.