- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Mon, 26 Sep 2016 10:53:18 -0700
- To: Holger Knublauch <holger@topquadrant.com>, public-rdf-shapes@w3.org
But how is that sufficient to be able to implement sh:hasShape? It still appears to me that implementing sh:hasShape requires access to the shapes graph inside the SPARQL queries that implement SHACL constraint components. peter On 09/25/2016 11:57 PM, Holger Knublauch wrote: > The idea is that the SHACL engine would already have the "pointer" to the > shapes graph, and will reuse that to pre-bind the $shapesGraph variable if it > needs to. In other words, the parameter would be implicit. > > Holger > > > On 26/09/2016 16:49, Peter F. Patel-Schneider wrote: >> I don't think that this follows unless sh:hasShape can be fully implemented >> when there is no access to the shapes graph. >> >> peter >> >> >> On 09/25/2016 11:38 PM, Holger Knublauch wrote: >>> I have attached this as a comment to ISSUE-131, which is still open. I believe >>> we can delete the shapesGraph argument from sh:hasShape and treat it as >>> implicitly known to the engine. This should then resolve your concern here. >>> >>> Holger >>> >>> >>> On 24/09/2016 3:12, Peter F. Patel-Schneider wrote: >>>> 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 Monday, 26 September 2016 17:53:55 UTC