section on the relationship between SHACL and RDFS

1.x Relationship between SHACL and RDFS

SHACL uses RDF and RDFS vocabulary (in particular rdf:type, rdfs:Class,
rdfs:subClassOf, rdfs:label, rdfs:comment, rdf:Property, rdf:List,
rdf:langLiteral, and rdfs:Resource) and notions (notably classes, instance,
and subclasses).  However, SHACL does not use this vocabulary or these
notions in the way that they are defined in RDF and RDFS [RDF Semantics

When determining subclass and instance relationships SHACL only uses the
transitive closure of rdfs:subClassOf, ignoring in particular the RDF
axioms, the
meaning of rdfs:Resource, the reflexivity of rdfs:subClassOf, the
effect of subproperties of rdfs:subClassOf, and the effects of rdfs:domain
and rdfs:range.

Note that rdfs:subClassOf transitivity is not uniformly applied throughout
SHACL.  It is only used when SHACL explicitly determines type and subclass
relationships in the control graph and the data.  In other places only
triples that are explicitly present in the control graph or the data are
considered.  For example, SHACL property constraints on rdf:type and
rdfs:subClassOf only utilize triples that are explicitly in the data.
Similarly, subproperties of rdfs:label and rdfs:commment and subclasses of
rdf:List are not recognized in the control graph.

- The section on sh:valueClass should be rewritten as

The property sh:valueClass can be used to verify that each value of the
given property is an instance of a type. The values of sh:valueClass must be
classes (instances of rdfs:Class). The main difference with
sh:directValueType is that sh:valueClass also includes subclasses of the

Property  Value Type  Summary
sh:valueClass  rdfs:Class  Type of all values


A validation result must be produced for each triple that has the focus node
as its subject, the sh:predicate as its predicate and where the object is
either a literal or a non-literal without a matching type. A non-literal
matches a type if it has an rdf:type value that is the type or one of its
(transitive) subclasses via rdfs:subClassOf. Each produced validation
result must have the focus node as its sh:root and sh:subject, the
sh:predicate as its sh:predicate and the respective violating value as its

Received on Tuesday, 8 September 2015 10:53:37 UTC