- From: Graham Klyne <gk@ninebynine.org>
- Date: Fri, 08 Apr 2005 15:17:25 +0100
- To: Dave Beckett <dave.beckett@bristol.ac.uk>
- Cc: public-rdf-dawg-comments@w3.org
At 13:30 08/04/05 +0100, Dave Beckett wrote: >On Fri, 08 Apr 2005 12:41:34 +0100, Graham Klyne <gk@ninebynine.org> wrote: > > > > > In: > > http://www.w3.org/TR/2005/WD-rdf-sparql-query-20050217/ > > > > the syntax indicates the WHERE clause is optional (production [1]), but I > > can't find any indication of what is returned when no WHERE clause is > > provided. Maybe it's there somewhere; if so, lacking a single > > comprehensive description of the WHERE clause, it is difficult to find it. > >I can't really answer since I'm also curious where WHERE is optional, but >this could be a legal sparql "query" with no where: > prefix ex: <http://example.org/> > construct { ex:a ex:b ex:d } > >as it's mostly a way to generate a graph; so a result is returned. Hmmm, maybe. Let me expand a little: I see my query processor working something like this: Locate graph(s) to query >> match query pattern against graph >> construct desired result from match (per SELECT/CONSTRUCT/ASK) The result of the second step is, I think, a collection of variable bindings and a set of triples used for each. The CONSTRUCT clause is applied for each member of this collection. Now, if there is no pattern to match, how many times is it matched? For your interpretation to work under this regime, it must be at least once or the result graph would be empty. One alternative is that a null pattern matches *any* graph, so there may be an arbitrary number of matches (number of permutations of triples in the queried graph (or number of subgraphs), I suggest), but the result is still as you say because each match generates the same result and a graph is a _set_ of triples. This works, but it feels a bit messy to me. But that's not consistent, or a non-null pattern would match for each subgraph of the original that it matches. Observing that (with a non-null pattern) every triple of a matched subgraph is used for each match generated, so a null pattern would exactly match a null subgraph, and every graph has exactly one null subgraph, so the null pattern would consistently match any graph exactly once. This sits nicely with your example. A consequence of this would be that: prefix ex: <http://example.org/> ask always returns the value True. ... BTW, I see you use lowercase in your SPARQL examples: keywords are all uppercase in the grammar -- are they meant to be case-insensitive? I can't find anything in the spec to tell me about this. #g ------------ Graham Klyne For email: http://www.ninebynine.org/#Contact
Received on Friday, 8 April 2005 14:18:26 UTC