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

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

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

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

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