- From: Irene Polikoff <irene@topquadrant.com>
- Date: Thu, 11 May 2017 22:52:06 -0400
- To: "Peter F. Patel-Schneider" <pfpschneider@gmail.com>
- Cc: "public-rdf-shapes@w3.org" <public-rdf-shapes@w3.org>
Peter, Examples, tests and implementations are correct. I believe you are referring to the projection and re-mapping definitions in the appendix A and interpreting them broader than intended. These have always been intended to apply only to sub-queries, not to the top level queries. There is no need to do the remapping for the variables in the top level queries. Implementors did understand it correctly - as per the tests and examples. Further, given that the SHACL WG decided a week ago to always require for the sub-queries to return all pre-bound variables, there is now no need to stipulate this for the subqueries either. These definitions are no longer needed by SHACL and have been removed from the document. I believe that in the context of the EXIST CG Note, they are still needed and the note may need to further clarify their applicability. Regards, Irene > On May 9, 2017, at 6:53 AM, Peter F. Patel-Schneider <pfpschneider@gmail.com> wrote: > > I took a quick look at the use of pre-binding in the SHACL document, version > 07 May 2017. Previously I had been looking at the definition of pre-binding > and only looking at its use when I found problems. > > I found that many uses of pre-binding in the document produce unsuitable or > unexpected results. This shows that there has been no effective review of > the current definition of pre-binding to check whether it is suitable for > use in SHACL, a very surprising situation for such a central part of > SHACL-SPARQL. > > > Here are a few of the uses of pre-binding where it produces unsuitable or > unexpected results. > > The very first use of pre-binding in the document produces completely > unsuitable results. > SELECT DISTINCT ?this WHERE { BIND ($targetNode AS ?this) } > with the variable targetNode pre-bound to some RDF term will produce a > solution sequence containing a single solution. That solution will have > the variable this unbound. > > The second use of pre-binding also produces completely unsuitable results. > SELECT DISTINCT ?this WHERE { > ?this rdf:type/rdfs:subClassOf* $targetClass . > } > with the variable targetClass pre-bound to some RDF term will produce a > solution sequence containing solutions binding the variable this to each > node in the graph that is the subject of a triple in the graph with rdf:type > as predicate. > > The second-last use of pre-binding produces unexpected results. The > results of > SELECT DISTINCT $this ?value WHERE { > $this $PATH ?value . > FILTER (!isLiteral(?value) || !langMatches(lang(?value), $lang)) > } > are independent of the pre-binding of the variable lang. This query forms > the basis of one of the SHACL-SPARQL tests, with expected results > dramatically different from the ones actually produced by the current > definition of pre-binding. SHACL-SPARQL implementations thus are not > implementing pre-binding as currently defined. > > > Peter F. Patel-Schneider > Nuance Communications >
Received on Friday, 12 May 2017 02:52:43 UTC