diff --git a/shacl12-core/index.html b/shacl12-core/index.html index 666223db..db2cb2ad 100644 --- a/shacl12-core/index.html +++ b/shacl12-core/index.html @@ -1113,7 +1113,7 @@
sh:closed
true
to close the shape.
- The values of sh:closed
in a shape are literals with datatype xsd:boolean
.
+ The values of sh:closed
in a shape are literals with datatype xsd:boolean
+ or the IRI sh:ByTypes
.
$closed
be a parameter value for sh:closed
.
Let $ignoredProperties
be a value for sh:ignoredProperties
.
- If $closed
is true
then
- there is a validation result for each triple that has a value node as its
- subject and a predicate that is not explicitly enumerated as a value of sh:path
- in any of the property shapes declared via sh:property
at the current shape.
+ $closed
is true
or sh:ByTypes
and P
+ is the set of properties defined below,
+ then there is a validation result for each triple that has a value node as its
+ subject and a predicate that is not in P
.
If $ignoredProperties
has a value then the properties enumerated as members of this SHACL list
are also permitted for the value node.
The validation result MUST have the predicate of the triple as its sh:resultPath
,
and the object of the triple as its sh:value
.
+ $closed
is true
, then P
is the set of IRI properties
+ that can be reached from the current shape via the SPARQL path sh:property/sh:path
.
+ $closed
is sh:ByTypes
, then P
is the set of IRI properties
+ that can be reached from the value node via the following algorithm, plus rdf:type
:
+
+function collectProperties(S)
+ add all IRI properties that can be reached from S via the SPARQL path
+ sh:property/sh:path
+ if S is a SHACL instance of rdfs:Class in the shapes graph {
+ for each triple in the shapes graph matching (S rdfs:subClassOf ?o)
+ collectProperties(?o)
+ for each triple in the shapes graph matching (?s sh:targetClass S)
+ collectProperties(?s)
+ }
+ if S is a SHACL instance of sh:NodeShape in the shapes graph
+ for each triple in the shapes graph matching (S sh:node ?o)
+ collectProperties(?o)
+
+for each rdf:type T of the value node in the data graph
+ collectProperties(T)
+
The remainder of this section is informative.
@@ -6149,6 +6177,15 @@
+ The use case for sh:closed sh:ByTypes
includes properties that are declared
+ in superclasses of the types of the current value node (via rdfs:subClassOf
),
+ as well as other shapes that are linked to those types via sh:targetClass
and
+ the shapes that can be reached from one node shape to the other via sh:node
.
+ Examples for sh:ByTypes
can be found in the test case library:
+ closed-003.ttl,
+ closed-004.ttl.
+
sh:targetNode
, sh:deactivated
and sh:defaultValue
, and introduced sh:values
to support node expressions.sh:singleLine
, see Issue 177sh:ShapeClass
for implicit class targets, see Issue 212sh:expression
, see Issue 357sh:deactivated
, sh:message
and sh:severity
can now be specified using RDF 1.2 reification, see Issue 173sh:ShapeClass
for implicit class targets; see Issue 212sh:expression
; see Issue 357sh:ByTypes
for sh:closed
; see Issue 172