Comments on SPARQL draft (pt. 1)

Looking through the 2005-03-17 editor's draft, the doc has *growed* so
I've only done the query stuff here, I'll look at Result Forms etc

Overall the doc's really nice, it works both as a spec and a tutorial
without flab. I haven't been following the list, so apologies where
things have been explained/worked through in discussions I've missed.
I've only a couple of coarse grained comments on the language itself,
so I'll get them out of the way before editorial bits/minor language

*** Language features ***
I'm sure this has been discussed at length, but I can't ignore it -
where's the INSERT? Ok, I can see there may be the argument that it's
not really a query, and there would be be implementation issues. But
aside from the basic utility, there will be bound to be expectations
of people coming to SPARQL from SQL, and the absence of something so
fundamental is likely to attract criticism. Surely all that would be
needed is INSERT {graph pattern} and it's done..? (I'd also expect
this to be reflected in the Protocol, perhaps with PostGraph/PutGraph

The doc made me chuckle - soon after the material on OPTIONAL there's
an editorial comment that there was an objection to UNION on the
grounds that it would complicate implementation and discourage
adoption. If UNION will discourage adoption then OPTIONAL will have
people emigrating to Mars. I don't know whether it's just my addled
neurones, or the way it's presented in the doc, or in the language
design (I suspect the latter), but I found this construct incredibly
hard to comprehend. In case I still haven't understood it properly, I
won't go further than to ask - is this functionality particularly
useful? If so, can't it be done in a simpler fashion?

*** Editorial/minor points ***
There seems to be a little inconsistency in the description early on
when in comes to URIs -
Query Term Syntax
The terms delimited by "<>" are URI relative references
The term "URI" in this document should be read as "absolute URI".]]]

also in the same section:
[[[Single quotes ('')  are also allowed. ]]]

I'm not certain, but (as a sub-delim) couldn't the single quote appear
within a URI?

Turtle allows URIs to be abbreviated with prefixes:

Moving on -
2.2 Graph Patterns
Definition: RDF Term

An RDF Term is anything that can occur in the RDF data model.
"anything" seems vague

An RDF triple contains three components:

    * the subject, which is an RDF URI reference or a blank node
I think this needs integrating better with the general description in
relation to URIs and the comment re. literal subjects

2.3 Graph Pattern Matching
Definition: Restriction
I found this particular definition confusing, especially as
"Restriction" doesn't seem to be used in the section that follows.

2.4 Examples of Graph Patterns
... tripe patterns ...
juvenile-amusing typo

2.7 Other Syntactic Forms
SPARQL uses a "Turtle-like" syntax for writing basic graph patterns. 
I think an explanation of how the syntax differs from Turtle is needed

Blank Nodes
The text layout with examples mid-sentence is a little confusing.

3.1 Matching RDF Literals
Matching Arbitrary Datatypes
...note that the query processor does not have to have any
understanding of the values in the space of the datatype.

3.2 Constraining Values
Note that a constraint can be considered to be a triple with a special
If it's worth noting, it's worth explaining.

4 Combining Patterns
A Basic Graph Patterns is, 

5.5 Nested Optional Blocks

PREFIX foaf: <>
PREFIX vcard: <>
SELECT ?foafName ?gname ?fname
Shouldn't the SELECT clause include ?mbox ?

(maybe not - I've not grokked OPTIONAL)

6.1 Joining Patterns with UNION
The layout of the examples in this section,with multiple statements on
one line is harder to read.

7 RDF Dataset
This section would be really confusing to anyone that hadn't
previously encountered named graphs.

A query processor is not required to support named graphs.
8 Querying the Dataset
It's not clear what the expectations are - maybe a separate section is
needed to be explicit about what a query processor SHOULD support.

8.1 Accessing Graph Labels
It is not necessary to use the GRAPH clause to create the data graph
for a collection of graphs. The query environment may provide the RDF
dataset to be queried.

8.3 Restricting via Query Pattern
3 typos in the first 2 paragraphs, 1 in the last - someone was in a hurry ;-)

Language point: In the same section, I found the syntax
[[ GRAPH data:bobFoaf {... ]]
confusing, it looks like that's a property. I don't know, maybe it
would be better to insist that graph names be written in full..?

8.4 GRAPH and a background graph
...has found read in...
...a aggregator...
typos, and the title doesn't seem right somehow

8.5 Definition for GRAPH
Definition: DatatSet Graph Pattern
could this be clearer?

9 Query Execution and Ordering
As noted, this section does need filling out. But -

Language point: is there/should there be any way of explicitly
overriding default execution order?

Received on Saturday, 19 March 2005 10:58:57 UTC