W3C home > Mailing lists > Public > public-rdf-shapes@w3.org > September 2016

on access to the shapes graph in SHACL

From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
Date: Fri, 23 Sep 2016 10:12:35 -0700
To: public-rdf-shapes@w3.org
Message-ID: <7a516532-1fce-9a77-7abe-9e6322315e2a@gmail.com>
Following up one of the recent responses to my comments on Shapes Constraint
Language (SHACL) lead me to look at how access to the shapes graph works in
Shapes Constraint Language (SHACL), W3C Editor's Draft 22 September 2016.


The initial discussion of access to the shapes graph is in Section 1.6:

"SHACL Full processors MAY pre-bind the variable shapesGraph to provide
access to the shapes graph. Access to the shapes graph is not a requirement
for supporting the SHACL Core language. The variable shapesGraph can also be
used in user-defined SPARQL constraints and SPARQL-based constraint
components. However, such constraints may not be interoperable across
different SHACL Full processors or not applicable to remote RDF datasets."

Given the first "MAY" here, it appears that access to the shapes graph is
neither a requirement for supporting the SHACL Full language.  This puts
access to the shapes graph in a kind of SHACL Fuller.

The next discusion is in Section 5.3:

"$shapesGraph 	Can be used to query the shapes graph as in GRAPH
$shapesGraph { ... }. If the shapes graph is a named graph in the same
dataset as the data graph then it is the IRI of the shapes graph in the
dataset. Not all SHACL Full processors need to support this
variable. Processors that do not support $shapesGraph MUST report a failure
if they encounter a query that references this variable. Use of GRAPH
$shapesGraph { ... } should be handled with extreme caution. It may result
in constraints that are not interoperable across different SHACL Full
processors and that may not run on remote RDF datasets."

Again, access to the shapes graph is in SHACL Fuller.


The final discussion is in Appendx A:

"SHACL Full processors must implement the function sh:hasShape, which takes
the following parameters:
Parameter 	Value Type 	Summary
focusNode 	rdfs:Resource 	The focus node to validate.
shape	 	rdfs:Resource 	The shape to validate the focus node against.
shapesGraph 	rdfs:Resource 	The IRI of the current shapes graph."
An example call of this function is
  BIND (sh:hasShape(ex:JohnDoe, ex:PersonShape, $shapesGraph) AS ?hasShape)
None of the parameters can be unbound."

But now it appears that access to the shapes graph is a required part of
SHACL Full processing, contradicting to the previous discussion.


Peter F. Patel-Schneider
Nuance Communications
Received on Friday, 23 September 2016 17:13:11 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 17:02:44 UTC