- From: Emanuele Della Valle <emanuele.dellavalle@polimi.it>
- Date: Thu, 18 Feb 2010 13:08:14 +0100
- To: Axel Polleres <axel.polleres@deri.org>
- CC: public-rdf-dawg-comments@w3.org, dbarbieri@elet.polimi.it, Stefano Ceri <ceri@elet.polimi.it>, Michael Grossniklaus <grossniklaus@elet.polimi.it>, Daniele Maria Braga <braga@elet.polimi.it>, Frank van Harmelen <Frank.van.Harmelen@cs.vu.nl>
Dear Axel,
first of all, thanks a lot for the careful look you gave to our comments
to SPARQL 1.1 support for aggregates.
Please find hereafter our clarifications in line.
Axel Polleres ha scritto:
> further comments...
>
>
>> Yes you're right. The correct formulation of the constraint is:
>>
>> In the C-SPARQL language all the variables used in the aggregation
>> function or in the grouping set of AGGREGATE clauses must appear also in
>> the SELECT clause, since aggregation happens after standard SPARQL query
>> evaluation.
>>
>
> If I am not mistaken, doesn't work either... counterexample in your quoted example:
>
>
>> AGGREGATE { (?affiliationBooks, SUM(?numberOfBooks), {?organization} )
>>
>
>
> ?organisation is not in the SELECT clause.
>
Of course. Yesterday, we fixed it in
http://wiki.larkc.eu/c-sparql/sparql11-feedback, but I forgot reporting
it to you.
> [...]
>
>> Well, we based the SPARQL 1.1 version on our understanding of SPARQL 1.1.
>>
>> In our understanding, the triple pattern < ?auth :hasName ?name . > is
>> needed to join the results of the two sub-queries. If we do not include
>> it the result would be a Cartesian product of the two sub-queries (see
>> APPENDIX for more details).
>>
>
> your query should answer...
> "For instance, one can ask for the research topics for which
> the Italian authors are more than the Swiss ones."
>
> but you project the *author* which is neither aggregated nor grouped...
> that doesn't make sense to me... shouldn't it be simply
>
> 1. SELECT ?topic ?numberOfSwissAuthors ?numberOfItalianAuthors
> 2. WHERE {
> 4. {
> 5. SELECT ?topic (COUNT(?book) AS ?numberOfSwissAuthors)
> 6. WHERE {
> 7. ?auth :wrote ?book .
> 8. ?book :topic ?topic .
> 9. ?auth :hasNationality ?nat .
> 10. FILTER(?nat = 'CH') .
> 11. }
> 12. GROUP BY ?topic
> 13. }
> 14. {
> 15. SELECT ?topic (COUNT(?book) AS ?numberOfItalianAuthors)
> 16. WHERE {
> 17. ?auth :wrote ?book .
> 18. ?book :topic ?topic .
> 19. ?auth :hasNationality ?nat .
> 20. FILTER(?nat = 'IT') .
> 21. }
> 22. GROUP BY ?topic
> 23. }
> 24. FILTER(?numberOfItalianAuthors>?numberOfSwissAuthors)
> 25. }
>
> (didn't try that out just now, just a quick shot, but looks more sensible to me...)
>
It looks very meaningful to me as well. I've updated
http://wiki.larkc.eu/c-sparql/sparql11-feedback accordingly. This,
actually, solve the issue whether it is possible to express in SPARQL
1.1 some of the more expressive C-SPARQL queries ;-)
Bests,
Emanuele
Received on Thursday, 18 February 2010 12:08:50 UTC