Re: can subqueries be executed first in SPARQL?

On 06/17/2016 11:55 AM, Gregory Williams wrote:
> On Jun 17, 2016, at 11:38 AM, Peter F. Patel-Schneider <pfpschneider@gmail.com> wrote:
>>
>> To argue otherwise is to argue that some current implementations have made
>> unfounded assumptions about EXISTS that don't conform to the correct
>> clarification of the specification and thus should be changed.  Instead the
>> argument has to be that it is necessary to change the SPARQL spec in a way
>> that delegitimizes some current implementations that are currently
>> legitimate and legitimizes other current implementations that are currently
>> illegitimate.  My hope is that this latter argument will be made
>> successfully!
> 
> Peter,
> 
> Are you aware of systems that follow the spec text for substitute() that you discuss? I’d be interested in knowing if (and to what extent) this is an actual compatibility problem between existing implementations.
> 
> thanks,
> .greg

According to https://scirate.com/arxiv/1606.01441, Virtuoso Open Source
Edition 7 does.  One example from there is

SELECT ?parent
WHERE { ?parent :country :j
  FILTER ( EXISTS { SELECT ?child
    WHERE { ?child :parent ?parent }})}

On
  :a :country :j .
  :a :parent :b .
  :b :country :j .
  :b :parent :c .
  :c :parent :d .
  :c :country :k .
Virtuoso returns
  { { (parent :b) } }
indicating that it is evaluating the subquery with ?parent replaced by :a and
:b separately as directed by the definition of substitute.

I have not verified this directly.

peter

Received on Friday, 17 June 2016 20:02:35 UTC