- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Sun, 06 Mar 2005 16:58:16 +0000
- To: 'RDF Data Access Working Group' <public-rdf-dawg@w3.org>
From the publication of the latest SPARQL/Query working draft, I have seen
the following points on the comments list, or elsewhere, which are not
editorial or clarifications. The list is a a bit rushed but it seems better
to list them than wait. If there is anything I've missed, please let me
know. (Eric?)
== 1 == Request for streaming CONSTRUCT
Each solution generates on RDF graph from the template.
This feels more like a new result form despite being a simple syntax change.
Given bNodes, merging the graphs e.g. if streamed across the network
serialized in RDF/XML) isn't the same as the single graph.
So far, a SPARQL query can't generate more a single RDF graph.
== 2 == LIMIT applies to CONSTRUCT (and DESCRIBE) as a pragmatic error control.
This is reasonable and has been added.
== 3 == request for boolean literals
The words true and false (no quotes, no type, like numbers) for
"true"^^xsd:boolean and "false"^^xsd:boolean
== 4 == Syntactic support for reification
Some people use reification and use it a lot - some people use named
graph-like approaches and avoid reification - most people just don't use either.
This is a resonable if there is a syntax suggestion; something like
REIFICATION ?id ?subject ?predicate ?object
being
?id rdf:subject ?subject ;
rdf:predicate ?predicate ;
rdf:object ?object .
(that is, not including an "?id rdf:type rdf:Statement")
except that really is bit long. Various suggestions like
# Straight quad (the other kind of quad)
?id ?subject ?predicate ?object .
# A marker:
?id <- ?subject ?predicate ?object .
# A bit quoting-like (my current favourite)
?id << ?subject ?predicate ?object >> .
# Using a word
?id FOR ?subject ?predicate ?object .
I haven't checked these in a grammar.
There has been confusion between statings and statements.
== 5 == Sorting/Grouping
A request for SQL-like facilities to control the presentation of result
sets. It makes testing interesting - sometimes unordered is acceptable and
sometimes it's (partially) not.
There are issues around defining the ordering between unrelated things like
strings and URIs, bNodes and integers, dates and doubles - would need some
arbitrary decisions. Not clear to me that it could be pushed into SQL
sorting for the semi-structued cases - in SQL, the engine knows the column type.
The decision would seem to be as much WG time as anything else. I suppose
that we could reserve syntax without defining semantics in tests at this
stage but that isn't very helpful to interoperability/
== 6 == Optionals and order dependencies.
The alternatives I think if or know about are (briefly):
A/ An order rule that states variables must be used in fixed
patterns before optionals if possible. We can either make
a query that does not do this illegal, execute in this
canonical order or leave to implementations.
B/ "true OR P" - this generates spurious solutions. While theoretically
nice it is quite hard to work with. Multiple interacting optionals
make it hard to filter the spurious solutions.
C/ Live with it.
D/ Use-once variables in optionals
This is a kind of simpification of A but has not been thought through.
A variable can appear once in an optional and must be after
any fixed use. Possibly very restrictive.
E/ Default values - assign a NULL (regular value - can't be rebound)
to variable if not matched in an optional. Still order dependent.
Non-monotonic in the data.
My preference is A then C
Andy
Received on Sunday, 6 March 2005 17:03:55 UTC