Optional WHERE and WHERE {}

Question: Is the WHERE {...} structure optional in sparql?

The grammar says yes and lookin in the WD I can see it's given as an
example with ASK,

So whereas CONSTRUCT, DESCRIBE and SELECT are all given examples
requiring WHERE { .... },  ASK has the format ASK { ...} and no WHERE.
Possibly ASK WHERE { ... } would be more consistent.

So thinking further, what does WHERE with an empty graph pattern {}
mean?  I discussed this with EricP in Italy and we think it's the
same as query succeding and returning 1 result, and it's what Algae2
does.

Going through the query verbs:

1. SELECT * WHERE {}
  returns 1 result[row] with no bindings

2. CONSTRUCT { :a :b :c } WHERE {}
  returns the graph { :a :b :c}

3. ASK {}
  returns true

4. DESCRIBE <uri> WHERE {}
  Well nobody can tell what it returns :)
  but it's probably the same as DESCRIBE <uri> for all cases.

and if WHERE {} is the same as omitting it, then the queries below
return the same results as the above:

1a. SELECT *
2a. CONSTRUCT { :a :b :c }
3a. ASK
4a. DESCRIBE <uri>
  -- this one's already in the spec

Dave

Received on Thursday, 21 April 2005 15:31:06 UTC