- From: Bob MacGregor <bmacgregor@siderean.com>
- Date: Mon, 28 Mar 2005 08:31:18 -0800
- To: andy.seaborne@hp.com
- CC: public-rdf-dawg-comments@w3.org
- Message-ID: <42483156.1080806@siderean.com>
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