- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Mon, 5 Oct 2009 17:25:10 +0000
- To: Axel Polleres <axel.polleres@deri.org>, Birte Glimm <birte.glimm@comlab.ox.ac.uk>
- CC: SPARQL Working Group <public-rdf-dawg@w3.org>
CVS to revision 119 > -----Original Message----- > From: public-rdf-dawg-request@w3.org [mailto:public-rdf-dawg-request@w3.org] > On Behalf Of Axel Polleres > Sent: 04 October 2009 23:15 > To: Birte Glimm > Cc: SPARQL Working Group > Subject: ACTION-101 completed: Review of SPARQL 1.1 > > My comments on SPARQL/Query 1.1 below. Summarizing, my impression is > that we should point to issues > probably more concretely in some places, it seems that one or the > other issue mentioned on the > resp. design page have not yet been propagated to the draft yet, right? > > Apart from that, it should be feasible to get this document in shape > to publish as FPWD > in the planned schedule, IMO. > > Axel > ============================================================= > > 1) Suggested rewording for the abstract > (alternatively/additionally, just put an Editor's note that this > abstract will > need rewording depending on the final features the WG decides.): > > "SPARQL contains capabilities for querying required and optional graph > patterns along with their conjunctions and disjunctions. SPARQL also > supports extensible value testing and constraining queries by source > RDF graph. The results of SPARQL queries can be results sets or RDF > graphs." > > > -> > > "SPARQL contains capabilities for querying required and optional graph > patterns along with their conjunctions, disjunctions, and negation. > SPARQL also supports extensible value testing and constraining > queries by source RDF graph. The results of SPARQL queries can be > results sets or RDF graphs. Values in query results can be aggregated > and queries may be nested." > We are removing the abstract as the intro has the important material. > > 2) > You may want to clarify the status sentence: > > "The draft describes the differences between SPARQL/Query 1.0 and the > proposed SPARQL/Query 1.1, rather than being a standalone draft > recommendation." > > - change to something like this -> > > "This draft describes the differences between SPARQL/Query 1.0 and the > proposed SPARQL/Query 1.1, rather than being a standalone draft > recommendation yet. The final version of this draft shall be > integrated with and replace the original SPARQL/Query 1.0 document." > > * Section 2: Done > > 3) > Example in Section 2, last line in data: > > :book3 :price 7 . > > - should be? -> > > :book4 :price 7 . Done > > 4) > Grammar in Section 2 > > Having -> HavingExpression > > ProjectValues ... no production for that as of yet, actually, > http://www.w3.org/2009/sparql/wiki/Design:Aggregate has > > > AggregateExpression ::= 'GROUP BY' ?Var+ HavingExpression? > > instead of > > GroupBy ::= 'GROUP BY' ProjectValues HavingExpression? > > What on top of VariableLists have you thought of here? > Whatever generalisation would go there, would likely also need to > generalize > > key(v, μ) > > to > > key(projectvalues , μ) The grammar has been updated from the combined grammar. > > 5) > key/Partition/Aggregation should have consistently lower or upper case > (already > mentioned by Birte), suggest > > key(varlist, μ) -> Key(VarList, μ) > Yes > 6) The definition of Partition seems to have a problem, I understand > that partition is a > set of pairs (k, Omega_k) where Omega_k is the subset of Omega such > that key(key(varlist,mu) = k, i.e. > > > Partition(varlist, Ω) = { (k,Ω) | Ω in Ω, > k=key(varlist, Ω) } > > --> > > Partition(varlist, Ω) = { (k,Partition(varlist, k, &Omega)) | > k in key(varlist, &Omega)} > > where > > Partition(varlist, k, Ω) = { μ | μ in &Omega such that > key(varlist, μ) = k } There was a transcription error. > > > I don't see yet, where the HavingExpression would go in, probably > > Partition(varlist, Ω) > > here needs to be extended to Partition(varlist, Ω, Constraint) It's a straight filter over the outcome of aggregation and does not need to be handled in the aggregation step. When the AST to algebra is done, this will be clear. > > At least a sentence mentioning that this is to be done, should go there. > > 7) would suggest to add Example-to-algebra translation analogous to > the examples in "12.2.2 Examples of Mapped Graph Patterns" of > current spec as TODO > (that probably applies to all features) Ideally, yes but unlikely in the time available. > > > * Section 3: > > 8) You write: > > "As it stands Subqueries require no new algebra operators." > Following the current evaluation (with solution modifiers) results > would need to be > converted from multisets to sequences, so (as mentioned on the design > page > http://www.w3.org/2009/sparql/wiki/Design:SubSelect) subqueries would > need a conversion > ToMultiset back from Sequence to MultiSet. > > Do I understand correctly, that some content from the design page are > still to be > propagateed to the draft? We will need "toMultiSet". Alternatively, we could work in term of a "table" and not need "toList" and "toMultiSet" but need to note hwne it is or is not ordered. > 9) > > > "In general, GroupGraphPatternSub is evaluated as per SPARQL 1.0, and > the resulting multiset is projected with respect to Project, as Project > (GroupGraphPatternSub, Project). This is then Joined with the > enclosing expression. > > The ordering from any ORDER BY expressions is not propagated outside > the Project expression." Revised, especially the ORDER BY being lost during evaluation. > > Sounds a bit confusing to me, is what you want to point here at the > issue on > scoping/how the bindings from the outer query are "propagated" inside > the inner query if there > are solution modifiers, which is necessary e.g. > to get the intended behavior of the example query? ... since if this > was meant to > be modular, then I don't see the example to work, as > > SELECT ?y ?name WHERE { > ?y :name ?name > } > ORDER BY ?name > LIMIT 1 > > evaluated alone would always return, > > ?y :alice ?name "A. Foo" > > as the single answer which wouldn't join with any of the ?y bindings > of the outer query. > Not sure what would be a good wording, but let me try... > > > "In general, GroupGraphPatternSub is evaluated as per SPARQL 1.0, and > the resulting multiset > is projected with respect to Project, as Project(GroupGraphPatternSub, > Project). This is then > Joined with the enclosing expression where solution modifiers are > meant to be evaluated after this join. > > The solution modifiers are not propagated outside the Project > expression." > > Admitted, not very nice/clear... but what was there before, doesn't > really sound clear either. > Maybe easiest to just point at the related issue on scoping. > To get the intended behavior, it looks like we'd need to also make > subselects order dependent and use the > > substitute(pattern, μ) > > function used in Section 4? Things, in a group are combined by join. E.g. { { pattern 1 } { pattern2 } } > * Section 4: > > 10) > "in FILTERs" > > -> "in FILTER expressions" > Done > > * Seciton 5: > > 11) > > "@@Scoping of variables - does "AS ?v" allow ?v to be used in another > expression? No reason why not if careful about solution extension > ordering." > > Should we refer here to concrete issues from the draft? (ISSUE-36 in > this case) Prefer not. The downside is that if we do one, we ought to do it through out all the documents. Andy
Received on Monday, 5 October 2009 17:25:57 UTC