- From: Steve Harris <steve.harris@garlik.com>
- Date: Mon, 17 May 2010 10:49:07 +0100
- To: matthew.perry@oracle.com
- Cc: Andy Seaborne <andy.seaborne@talis.com>, W3C SPARQL Working Group <public-rdf-dawg@w3.org>, "Das,Souripriya" <souripriya.das@oracle.com>
I'm just back from holiday, and getting back up to speed, but comments inline. On 2010-05-06, at 16:47, Matt Perry wrote: > Hi, > > My review of the 2010-05-04 version of the Query document is below. > > Thanks, > Matt > > ----------------------- > > The document looks good overall. I think it just needs a few sections completed before it is ready for publication: some text related to HAVING in Section 10, and some text to accompany the example in Section 8.3 for MINUS. > > Detailed Comments: > > -- Section 4.1.3 states that query variables have global scope. My understanding is that this is still true in the presence of subqueries, but it may be helpful to readers to make an explicit statement here about how subqueries affect variable scope. > > -- From my understanding, {?a :p1 ?b OPTIONAL {?a :p2 ?c} ?a :p3 ?c} is not equivalent to {?a :p1 ?b . ?a :p3 ?c OPTIONAL {?a :p2 ?c}}. It think there should be a statement on the effect of OPTIONAL placement inside a group graph pattern in Section 6. > > -- I think it would be helpful to readers if the example in Section 7 was modified to show that SPARQL UNION does not eliminate duplicates (i.e. it is more like SQL UNION ALL instead of SQL UNION). > > -- Would it make sense in Section 8 to mention FILTER + !BOUND() as a form of negation? > > -- Typo in Section 8.2: existance --> existence > > -- The results in the example in Section 8.3 look wrong. I don't think <http://example/bob> should be in the result set. > > -- Typo in Section 8.4: thinkign --> thinking > > -- I'm probably missing something, but I don't understand the purpose of the scalar argument to all of the set functions in Section 10.2. It's to handle cases like GROUP_CONCAT(?x ; SEPARATOR="|"), the separator is a scalar argument, but it needs more thought, and better explanation. I suspect that rather than a list of scalars it should be a list of mappings, to be more like the syntax. > -- In the F2F, we spend a lot of time discussing the effects of errors and unbounds on Aggregates such as SUM(). I think it would be worthwhile to include an example in Section 10 with an unbound or error so this behavior is clear to readers. Yes, I'm also not completely confident that the spec matches the outcome of the discussion, I went by the minutes, and notes I had. I will add some examples. to make sure it's clear. > -- In the AggregateJoin example at the end of Section 10, A1 and A2 are missing their opening '{'. Thanks, fixed. - Steve > -- I'm not familiar with the IF operator (Section 15.4.15). > > -- Section 16.2.3 Step 3: Aggregates, typo: soltuion --> solution > > -- In Section 16.4 Definition: Extend, should "extend(mu, var, expr) = mu if var not in dom(mu) *OR* eval(expr) is an error" be "extend(mu, var, expr) = mu if var not in dom(mu) *AND* eval(expr) is an error"? -- Steve Harris, 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 Monday, 17 May 2010 09:49:52 UTC