- From: Lee Feigenbaum <feigenbl@us.ibm.com>
- Date: Mon, 4 Jun 2007 16:00:49 -0400
- To: Bob MacGregor <bmacgregor@siderean.com>, public-rdf-dawg-comments@w3.org
Bob MacGregor wrote on 05/31/2007 07:52:26 PM:
> With respect to quads, I agree with you. But it took this discourse
> with Richard, Pat, and Jeen to convince me
> that SPARQL has come about as far as triples will allow it.
> I still think that SPARQL ought to have a declarative semantics, and
> I still think that UNBOUND should not
> be integral to the language, for the reasons described earlier.
Hi Bob,
I wanted to address these remaining two issues on behalf of the Working
Group.
To make the trail easier to follow, your original comments message is:
http://lists.w3.org/Archives/Public/public-rdf-dawg-comments/2007May/0026.html
I'll quote a bit from that message but please refer back to it for more
context.
1. Model-theoretic declarative semantics
"""
The current SPARQL semantics apparently derives from an algebraic
specification that says what you get when you run a SPARQL query, rather
than what the answer actually "means". The SPARQL spec is procedural
rather than declarative...
"""
In the DAWG's most recently published Last Call working draft, the group
adopted (as you say) an algebra to specify the semantics of SPARQL query
patterns and query modifiers. This part of the specification is based on
the work within The Semantics and Complexity of SPARQL by Perez, Arenas,
and Gutierrez ( http://arxiv.org/abs/cs/0605124 ).
It's unclear to me if you are unhappy with the presentation of SPARQL's
semantics or with the semantics itself. If you are not satisfied with the
presentation of the semantics, the editors would welcome references to
specific parts of the specification where the text is unclear. We will
continue to make editorial improvements to the documents during CR.
If you have concerns about the semantics, it would greatly help the
Working Group if you could share an example of a query, data, and results
that illustrate your preferred semantics.
2. Bound (actually the third point in your original message)
"""
UNBOUND is strictly less expressive than UNSAID (or whatever you may call
the negation-as-failure) operator. In Seamark,
we implement a closed-world version of universal quantification using a
double negation (e.g., there does not exist value that does not have type
X). This construct cannot be emulated using UNBOUND...
"""
Perhaps I don't understand your scenario. This query:
PREFIX : <http://example.org/>
SELECT DISTINCT ?s
FROM <http://thefigtrees.net/lee/sw/data/bound.n3> {
?s a ?type .
OPTIONAL {
?s2 a :x .
FILTER (?s = ?s2)
}
FILTER (!bound(?s2))
}
will find all the resources in a dataset that do not have type X. (For
example, you can run this query at http://sparql.org/sparql.html against
the dataset at http://thefigtrees.net/lee/sw/data/bound.n3 .) If you're
interested in finding out that there are no such resources, you can use an
ASK query and negate the results in your application. With the ASK query
form, this query is asking "are there any values that do not (in the RDF
dataset, under a CWA) have type X?".
Could you outline a use case (or give an example query in your language)
in which this technique is not sufficient?
As a related note, you could assert that ?s was not (universally, CWA)
bound within the framework of a larger query by using a COUNT aggregate
function. Aggregate functions are an issue that the DAWG has postponed
(see http://www.w3.org/2001/sw/DataAccess/issues#countAggregate ) for
future work.
In any case, the BOUND operator has been part of the SPARQL specification
for quite some time, and is included in many implementations and regularly
used by SPARQL users. I would need to see significant new information at
this point in our schedule to warrant bringing this issue back to the WG.
thanks,
Lee
Received on Monday, 4 June 2007 20:01:16 UTC