- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Thu, 04 Nov 2010 14:31:08 +0000
- To: SPARQL Working Group <public-rdf-dawg@w3.org>
(50% thinking out loud, 50% note to Steve - anyone feel free to comment) The generation of algebra in SPARQL 1.0 works in two steps: 1/ Translate graph patterns to algebra, working on multisets of solution mappings and resulting in a multiset of solution mappings 2/ Translate the solution modifiers, which work on sequences, to the algebra, taking the result of step 2 as input, converting to a sequence with ToList. pattern/multiset -> [toList] ->solution modifiers The solution modifiers are: # Order by # Projection # Distinct, reduced # limit, offset In SPARQL 1.1 we have grouping and aggregation. The current draft labels this as a solution modifier as it takes the output pattern matching on the dataset and performs an operation on solution mappings only, without accessing the dataset. But it does not operate on sequences not does it produce a sequence. SPARQL 1.1 also adds subqueries so there is a ToMultiSet operation to turn a sequence from a subquery into a multiset that the pattern matching can use. We need a good name for the thing that is one level in the query: pattern match, group/aggregate and solution modifier. Any suggests? "level" is the best I have come up with. It would seem better to make grouping/aggregation a separate step because it works on a multiset and produces a multiset that is further processed by the solution modifiers. pattern matching -> group/aggregation/SelectExpressions -> [toList] ->solution modifiers. By putting SelectExpressions in with the post-pattern-matching stage, HAVING is a filter of a multiset results in a multiset. The solution modifiers for SPARQL 1.1 are the same SPARQL 1.0: Andy
Received on Thursday, 4 November 2010 14:31:45 UTC