- From: Axel Polleres <axel.polleres@deri.org>
- Date: Fri, 13 Aug 2010 18:51:57 +0100
- To: Steve Harris <steve.harris@garlik.com>
- Cc: "SPARQL Working Group" <public-rdf-dawg@w3.org>, "Andy Seaborne" <andy.seaborne@epimorphics.com>, "Paul Gearon" <gearon@ieee.org>
On 13 Aug 2010, at 15:55, Steve Harris wrote:
> On 2010-08-13, at 13:16, Axel Polleres wrote:
> ...
> >>> True, indeed, it would need subqueries allowed in IN in FILTERS with the mentioned behavior, i.e.
> >>> that existing bindings are "injected" in the FILTER before the subquery is evaluated.
> >>
> >> Right, which would mean that part of our algebra as top-down, and part bottom-up.
> >
> > Hmmm, which is something we partially have already with FILTERs in OPTIONALs...?
>
> A OPTIONAL { B . FILTER(C) } is defined as LeftJoin(A, B, C). C can't contain any bottom-up expressions, as os SPARQL 1.0.
http://www.w3.org/TR/rdf-sparql-query/#sparqlAlgebra
Definition: LeftJoin
the explanation after the definition makes clear that the filter expression C is evaluated over the merge of the solution mappings for A an B
which means you can't evaluate the pattern { B . FILTER(C) } purely bottom-up.
Example: "Give me email address only for those people over 20"
SELECT ?P ?M { ?P a person; age ?A . OPTIONAL { ?P mbox ?M . FILTER (?A > 20) } }
> >> I suspect it would be very hard to specify that without introducing non-deterministic results.
> >
> > As long as this only affected subqueries in FILTER evaluation (which though - admittedly - would imply reopening ISSUE-6),
> > I can't see a big problem. As I said, aren't FILTERs already supposed to be evaluated only after replacement of the variables?
>
> Yes, but the algebra is not.
it is, see above.
>
> > I am trying to sum up:
> >
> > On the one hand, the specific use case might be viewed as new information, so it might be
> > ok to reopen issues, such as ISSUE-6.
>
> We already knew this particular usecase was going to be tricky/verbose, when it was discussed with subquery syntax. so it's not new information.
>
> My feeling is much like Paul's. I think we don't have enough time to finish what we have on our plate now, without bringing in new use-cases.
Fair enough, I just wanted to bring this use case in again before we close down entirely, but am happy enough to postpone it also for a possible future WG.
The main goal of bringing up these things (like the syntax question/proposal from an earlier mail) was to collect such things which had been
on my mind for a while without a lot of concrete discussion and put them on the table, before we go to last call.
Was there a concrete procedure for "postponed issues" in DAWG? In other words, shall we still record these things as ISSUEs which we can put aside for a later WG?
best,
Axel
>
> - Steve
>
> --
> Steve Harris, CTO, Garlik Limited
> 1-3 Halford Road, Richmond, TW10 6AW, UK
> +44 20 8439 8203 http://www.garlik.com/
> Registered in England and Wales 535 7233 VAT # 849 0517 11
> Registered office: Thames House, Portsmouth Road, Esher, Surrey, KT10 9AD
>
Received on Friday, 13 August 2010 17:52:30 UTC