- From: Eric Prud'hommeaux <eric@w3.org>
- Date: Mon, 28 Nov 2011 12:10:16 -0500
- To: David McNeil <dmcneil@revelytix.com>
- Cc: public-rdf-dawg-comments@w3.org
* 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