Re: SPARQL 1.1 - LeftJoin definition

* David McNeil <dmcneil@revelytix.com> [2011-11-28 10:13-0600]
> On Mon, Nov 28, 2011 at 9:24 AM, Eric Prud'hommeaux <eric@w3.org> wrote:
> 
> > I think this comes from a mismatch between the explanatory text and
> > the definition.
> >
> 
> Eric - Ah yes, it seems I was confused. So a few questions
> 
> 1) if the example you provided was changed to select the ?match variable as
> well as ?label, then what would the result be?

I expect that to, as you're probably getting at, only change the
projection, i.e. {(label → "COMPAT PASS", match → 1)}
(and likewise test → true).


> 2) it looks like that example is taken from a compatibility test suite, do
> you have a link to that test? I looked but could not find it online.

Nope, just whipped it up. I'm a big fan of making tests easy to
read. To that end, I proposed that BINDINGS be allowed in SPARQL
subqueries, but didn't get traction. [[
  SELECT ?label ?match
  {
      {
          {SELECT*{BIND(1 AS?match)}}
      } OPTIONAL {
          {SELECT*{BIND("COMPAT PASS" AS?label) BIND(1 AS?match)BIND(true  AS?test)}} UNION
          {SELECT*{BIND("COMPAT FAIL" AS?label) BIND(1 AS?match)BIND(false AS?test)}} UNION
          {SELECT*{BIND("INCOMPAT"    AS?label) BIND(2 AS?match)BIND(true  AS?test)}}
          FILTER (?test)
      }
  }
]] becomes [[
  SELECT ?label ?match
  {
      { SELECT*{} BINDINGS (?match) {(1)} }
      OPTIONAL {
          { SELECT*{} BINDINGS (?label ?match ?test) {
              ("COMPAT PASS" 1 true)
              ("COMPAT FAIL" 1 false)
              ("INCOMPAT"    2 true)}
          }
          FILTER (?test)
      }
  }
]] , but then everyone who wants to pass any test has to implement
subqueries (probably not the first thing on their punch list).


> 3) is there a process to get the explanatory text adjusted in the spec?

I think your comment (and to some degree, by reply) is that process.


> 4) Given that definition, can't the Filter be pushed down below the
> LeftJoin? In this way LeftJoin could be simplified because it would no
> longer need to take an expression.

If I understand, that would remove compatible rows with failed
filters, as opposed to retaining the row on the left side of the
optional.


> Thanks for your help.
> -David

-- 
-ericP

Received on Monday, 28 November 2011 17:10:46 UTC