W3C home > Mailing lists > Public > public-sparql-dev@w3.org > April to June 2016

Re: can subqueries be executed first in SPARQL?

From: james anderson <james@dydra.com>
Date: Fri, 17 Jun 2016 01:58:01 +0000
Message-ID: <010201555c144b61-429387aa-580a-4aa9-8eca-787dbd479fe8-000000@eu-west-1.amazonses.com>
To: public-sparql-dev@w3.org
good morning;

> On 2016-06-17, at 01:11, Peter F. Patel-Schneider <pfpschneider@gmail.com> wrote:
> 
>> […]
> 
> OOPS.  In my attempt to make an easy example I forgot that I needed to
> worry about which variables can be reported back.  I also should avoid other
> known problems with EXISTS (like using an in-scope variable as a SELECT
> variable).
> 
> One fix is to go to something like
>  SELECT ?x WHERE {
>    ?x :a ?y .
>    FILTER EXISTS {
>      SELECT ?z WHERE { ?z ?w ?v . FILTER sameTerm(?x,?y) }
>    }
>  }
> where evaluating the inner SELECT logically first results in no solutions
> because ?x and ?y are unbound.

given this form:

Input:

  1 SELECT ?x WHERE {
  2    ?x a ?y .
  3    FILTER EXISTS {
  4      SELECT ?z WHERE { ?z ?w ?v . FILTER sameTerm(?x,?y) }
  5    }
  6  }

Algebra structure:

  1 (base <http://example/base/>
  2   (project (?x)
  3     (filter (exists
  4                (project (?z)
  5                  (filter (sameTerm ?x ?y)
  6                    (bgp (triple ?z ?w ?v)))))
  7       (bgp (triple ?x <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?y)))))

why would the result change were the project evaluated logically later?

best regards, from berlin,
---
james anderson | james@dydra.com | http://dydra.com
Received on Friday, 17 June 2016 01:58:32 UTC

This archive was generated by hypermail 2.3.1 : Friday, 17 June 2016 01:58:32 UTC