revised formal objection on pre-binding

This is a formal objection to the definition of pre-binding approved by the
working group in its meeting of 3 May 2017 and in the SHACL Editor's
Draft current as of 4 May 2017 (but with date indicated as 11 April
2017).

Pre-binding has never had a suitable definition in SHACL.  Problems with
pre-binding have been known to the working group since at least June of
2015.  The current definition of pre-binding has multiple documented
problems.  The only change to pre-binding from Candidate Recommendation has
been to paper over some of these problems by excluding large numbers of
SPARQL queries from SHACL-SPARQL.  These exclusions remove many useful
SPARQL queries from SHACL-SPARQL, including the SPARQL query that provided
an alternative definition of the semantics of sh:equals that was in the
SHACL document.



Although this is nowhere stated in the SHACL document, it appears that the
indent of the current definition of pre-binding is to make the binding of a
pre-bound variable available everywhere in the query except for in
sub-queries that do not project the variable.  The current definition of
pre-binding tries to achieve this by two main mechanisms.  The first
mechanism is renaming of variables in sub-queries that are not projected to
fresh variables.  The second mechanism joins pre-bound bindings to all basic
graph patterns, property path expressions, and named graph patterns in the
query.

However, the current definition of pre-binding fails to achieve the goal
stated above.  The bindings of pre-bound variables are sometimes not
available when needed.  This causes problems in a large number of queries,
many of which have been already pointed out.  Also the pre-bound bindings
are available even in places where none of the variables are in scope.  This
causes problems for MINUS.  The pre-bound bindings are available in
sub-queries, which prevents bottom-up evaluation of sub-queries.

The recent changes to the pre-binding section of the SHACL document do not
actually change the definition of pre-binding to fix these problems but
instead just exclude many SPARQL queries from SHACL, presumably to keep only
non-problematic queries.  The exclusions are very broad, and eliminate many
queries that do not have any problems for the current definition of
pre-binding.

The exclusions are so broad that they even exclude the example potential
definitional query for sh:EqualsConstraintComponent that was in the SHACL
document.


The solution to the continuing problems with pre-binding is not to exclude
more and more of SPARQL but to either fix pre-binding so that it works
correctly or eliminate pre-binding from SHACL.  Papering over these
problems, even if possible, is not a suitable solution.

Peter F. Patel-Schneider
Nuance Communications

Received on Thursday, 4 May 2017 18:13:19 UTC