- From: David Wood <dwood@softwarememetics.com>
- Date: Wed, 19 Oct 2005 10:09:55 -0400
- To: public-swbp-wg@w3.org
An interesting review of SPARQL Query Language just popped up on the Kowari developers' mailing list (see [1]). Andrae Muys was the author. It is worth a read. [1] https://sourceforge.net/mailarchive/message.php?msg_id=13496030 Regards, Dave On Oct 14, 2005, at 14:31, David Wood wrote: > > Hi all, > > I have an action item [1] to review and comment on the > specification for the SPARQL Query Language for RDF [2]. > > I reviewed the 21 July 2005 Working Draft. > > Regards, > Dave > > [1] http://www.w3.org/2005/10/03-swbp-minutes.html#action17 > [2] http://www.w3.org/TR/rdf-sparql-query/ > -----------------------------% > <-------------------------------------------- > > Review of SPARQL Query Language for RDF Working Draft > > OVERVIEW: > > > LANGUAGE ISSUES: > > 1) SPARQL would appear not to have a complete model theoretic > base. Although sections of the specification are described using > sets, nothing is presented which hangs all of the section > together. This is unfortunate and is, I think, the underlying > cause of some of language features critiqued below. (NB: I tried > to get Simon Raboczi to complete and submit his model theory > unifying iTQL and SPARQL, but was unsuccessful in doing so.) > > 2) The language is not built with extensibility in mind. That is, > is not, in my opinion, sufficiently functional. There are several > areas of functionality which we already know are of interest to > users of RDF query languages (e.g. iTQL's 'walk' and 'trans' > functions which perform generic graph walking and transitive > closure, respectfully) and it is difficult to see how one might add > these commands to a later SPARQL version without making wholesale > changes to the language. > > 3) The handling of blank nodes ("bnodes") is, again in my opinion, > the single greatest failure of the specification. We have to admit > that RDF graphs contain bnodes and queries will run across them. > We also have to admit that a querier will (not 'may') often want to > subsequently find information connected to those bnodes. SPARQL's > insistence that bnodes' true internal identities not be returned to > a querier (correct in and of itself) combined with the lack of > subquery capability ensures that many useful RDF queries routinely > performed in other languages simply cannot be written in SPARQL. > OPTIONAL addresses only part of that functionality. > > 4) SPARQL contains a large number of top-level commands. This > could be a result again of the lack of subqueries and an underlying > model theory. It is an unfortunate design choice. > > 5) Good language design would dictate that logical opposites (e.g. > conjunction and disjunction) be represented in syntactically > similar ways, even if one is generally implicit. Therefore, since > UNION (disjunction) is present (as well it should be) along with > conjunction, then conjunction should have an optional equivalent > keyword even though it is implicit in most uses. > > 6) I was initially concerned about the definitions of subjects as > including literals in triple patterns, until Andy Seaborne pointed > out the differences between a triple and a triple matching pattern. > > 7) The nulls generated by UNION and the nulls generated by > OPTIONAL may be distinct. They correspond to logical true and > false, respectively. That makes life a bit difficult for > implementors. It may be that another form of 'null' should be > considered. Thanks to Simon Raboczi for this analysis. > > 8) There does not seem to be any way to force a literal into the > variable position in a binding. That is very useful when > attempting to create a result which must take a certain form (e.g. > be a set of triples) and occasionally mandatory if the result set > must be forced into triple form. > > > INTEROPERABILITY ISSUES: > > 1) There is, to the best of my knowledge, no way for a SPARQL user > to command the creation of an RDF container within a data store. > The lack of an explicit command will encourage implementors to > create their own, thereby hurting interoperability. Similarly for > deletion requests. > > 2) The form and content of DESCRIBE results are left to the data > publisher. It would seem that such an open-ended conversation > would require a human consumer in the general case. I am left > wondering why the DESCRIBE functionality is not left to a more > general SELECT query against a describing RDF container. > > > SCALABILITY CONCERNS: > > 1) The evaluation of regular expressions after the binding of > graph patterns rules out a lot of potential join optimizations. > > 2) OPTIONAL, in its entirety. The concern is that querying very > large data sets using OPTIONAL would result in very large > intermediate results requiring joining. Subqueries effectively > sidestep that problem by allowing further restrictions against a > smaller result set. > > 3) UNSAID would have been of great concern with regards to > scalability, just in case it comes back :) > > > SPECIFICATION ISSUES: > > 1) It would be really nice if the grammar was ordered for easier > reading, perhaps alphabetically. > > > >
Received on Wednesday, 19 October 2005 14:10:18 UTC