Review of SPARQL Query Doc

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.

-- 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.

-- In the AggregateJoin example at the end of Section 10, A1 and A2 are 
missing their opening '{'.

-- 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"?

Received on Thursday, 6 May 2010 15:48:32 UTC