continuing problems with pre-binding

The definition of pre-binding in SHACL continues to have problems.


There are a couple of technical and probably minor problems with the current
definition of pre-binding in SHACL.  Pre-binding in SHACL depends on the
notion of a fresh variable, but fresh variables are not defined in the SHACL
document.  Also, a fresh variable is generally defined as an arbitrary
variable that is not mentioned elsewhere, for some notion of elsewhere.
However, the function F appears to be defined on all (SPARQL) variables so
there are no fresh variables.  Both of these problems can probably be easily
fixed, but they do need to be fixed.

There is however a more serious problem with the current definition of
pre-binding in SHACL.  As stated above pre-binding uses the notion of fresh
variables, which introduces a choice.  There needs to be a demonstration in
the SHACL document that this choice does not affect the result of queries
before this definition of pre-binding can be safely used in SHACL.

Note that SPARQL introduces new problems related to fresh variables.  In
most logics and in many programming languages, it can easily be shown that
systematically replacing a variable with a fresh variable does not change
the meaning of any isolated construct of the logic or programming language.
This is not the case in SPARQL so results from logics and other programming
languages cannot be completely reused so a new demonstration.


These problems with the definition of pre-binding are separate from the
issue that pre-binding makes unusual changes to the meaning of certain
SPARQL queries.  A good set of test cases will be needed to ensure that
pre-binding is implemented in a interoperable manner in different
SHACL-SPARQL implementations.


Peter F. Patel-Schneider
Nuance Communications

Received on Tuesday, 7 March 2017 20:47:37 UTC