Avoiding compatibility with logic?

In this extract of the grammar:

|WhereClause| 	  ::=   	|( 'where' )? GraphPattern 
<http://www.w3.org/2001/sw/DataAccess/rq23/#rGraphPattern>|


|GraphPattern| 	  ::=   	|'{'
    ( PatternElement 
<http://www.w3.org/2001/sw/DataAccess/rq23/#rPatternElement>
      ( '.' PatternElement 
<http://www.w3.org/2001/sw/DataAccess/rq23/#rPatternElement> )*
      ( '.' )?
    )?
'}'|


we see that placing curly braces around the arbument to WHERE is
required.  I'm hoping that is an unintentional mistake.  Otherwise,
writing

SELECT ?x
WHERE ?x P 5

is illegal.

On the other hand, I see that the WHERE keyword is considered optional. 
I'd much prefer that it was mandatory.  That would make the language 
slightly more
rigid, but also increases its clarity.

On a much more significant point:

I'm wondering if the following comment is still true.
<snip>
 > Seaborne, Andy wrote:
 > Originally, this was called OR but the working group noted that this 
leads to confusion because, in OWL DL:
 >  { :x :p ?v } OR { :x :q ?w }
 > may be true as a boolean expression without being about to determine 
any values for either ?v and ?w.  Hence the choice of a name which is 
supposed to > be more explicit as to the outcome.

This seems to be a statement that SPARQL in general wants to shy away 
from a logic
interpretation, and that specifically, it doesn't want to support 
logical disjunction.
The reference above is to OWL DL, but it applies equally to KIF and any 
other logic
that is sufficiently expressive.  I see this as extremely short-sighted 
-- its basically saying
that SPARQL doesn't want to be upward compatible with, e.g.,  the rule 
languages that are
sure to follow downstream.

It also is saying that SPARQL is distancing itself from OWL, i.e., that 
if it is applied to a
graph that contains OWL assertions, it seeks to avoid triggering 
OWL-style inference. 
Frequently, whether or not inference occurs is the province of the 
underlying RDF/OWL
store; not the query language.  Making sense of the answers you would 
get back when
applying a SPARQL query to an OWL reasoner will be a mess.

The OWL equivalent of a disjunction operator is called  'unionOf', so I 
don't see how
renaming 'OR' to 'UNION' has made things any clearer.

Cheers, Bob

Received on Monday, 28 March 2005 16:32:09 UTC