- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Fri, 01 Oct 2010 10:15:42 +0100
- To: SPARQL Working Group <public-rdf-dawg@w3.org>
I've added some test for GROUP BY, separate for the aggregates tests. http://www.w3.org/2009/sparql/docs/tests/data-sparql11/grouping/ group03 is testing what happens when the GROUP BY contains an unbound variable. In ARQ, this just leads to a key for a group. -------------- @prefix : <http://example/> . :s1 :p 1 . :s1 :q 9 . :s2 :p 2 . -------------- PREFIX : <http://example/> SELECT ?w (SAMPLE(?v) AS ?S) { ?s :p ?v . OPTIONAL { ?s :q ?w } } GROUP BY ?w -------------- and ARQ gives: --------- | w | S | ========= | 9 | 1 | | | 2 | --------- the unbound variable in one row causes there to be a key for "unbound or error" The definition: [[ Group(ExprList, Ω) = { ListEval(ExprList, μ) -> { μ' | μ' in Ω, ListEval(ExprList, μ) = ListEval(ExprList, μ') } | μ in Ω } ]] uses "ExprList" which does not remove errors. It would be worth adding this to ListEval (changes suggested marked __) [[ Definition: ListEval ListEval(ExprList, μ) returns a list E, where Ei = μ(ExprListi) _or error_. _ListEval retains errors in evaluation of the list elements._ A variant, ListEvalE, is the same except that all elements of E which are errors are removed. ]] Test 'group5' adds to this to test that the whole group key isn't collapsed to a single item by an error: -------------- @prefix : <http://example/> . :s1 :p 1 . :s3 :p 1 . :s1 :q 9 . :s2 :p 2 . -------------- PREFIX : <http://example/> SELECT ?s ?w { ?s :p ?v . OPTIONAL { ?s :q ?w } } GROUP BY ?s ?w -------------- -------------------------- | s | w | =========================== | <http://example/s1> | 9 | | <http://example/s2> | | | <http://example/s3> | | --------------------------- so the group keys are (:s1, 9) (:s2, error) and (:s3, error) Andy Editorial: Defn: Group s/from explitic groups/from explicit groups/ but I'd suggest "from groups where the ExprList is non-empty" because the text causes me to ask "what's an _explicit_ group".
Received on Friday, 1 October 2010 10:10:08 UTC