- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Thu, 16 Jun 2016 15:38:02 -0700
- To: public-sparql-dev@w3.org
The definition of EXISTS in SPARQL 1.1 Query uses the substitute function.
There are multiple problems with substitute already reported. Here is
another one.
Consider
SELECT ?x WHERE {
:s :p ?x .
FILTER EXISTS { ?x :p ?y . }
}
on the graph
:s :p _:x .
The EXISTS gets { { (x,_:x) } } and then does a substitute which results in
BGP( _:x :p ?y )
This has a solution of
{ { (y,:x) } }
because the blank node that is the mapping of x can itself be further mapped
to :s in the RDF instance mapping part of a pattern instance mapping.
So the result of the SELECT is
{ { ( x, _:x ) } }
which is not at all what should be expected.
This seems to be a severe problem for the substitution definition of EXISTS.
I suggest that the substitution definition of EXISTS be replaced with a
definition that uses initial (multisets of) solution mappings. This would
solve the problems with substitution into BIND, VALUES, and SELECT
variables.
Peter F. Patel-Schneider
Nuance Communications
Received on Thursday, 16 June 2016 22:38:32 UTC