- From: Eric Prud'hommeaux <eric@w3.org>
- Date: Tue, 23 Jan 2007 13:44:24 +0100
- To: public-rdf-dawg@w3.org
- Message-ID: <20070123124424.GD5137@w3.org>
I am happy to be working with Andy's new draft, rq25. I've done an
editing pass through the end of chapter 7. I have put my
characteristic pink issue hilighter on a few points which I am
describing here.
4.1.4 Syntax for Blank Nodes
Blank nodes in query patterns act as *existential* variables.
I thought they acted as regular variables, i.e. one gets solutions for
each way the bnode could match a different term in the graph.
[TST] (below) tests this.
The scope of the label is the basic graph pattern; if the same label
is used in another basic graph pattern graph pattern, it is not the
same blank node.
Is there really (still? again?) no correlation in the _:who variables
in this query?
Data:
[ foaf:nick "ericP";
foaf:mboxMD5 "A2BA23432B434443D45DF655A6C6E6E" ].
[ foaf:name "Bob Smith";
foaf:mbox <mailto:bob@example.com> ].
Query:
SELECT ?nick ?mbox
WHERE { ?who foaf:mboxMD5 "A2BA23432B434443D45DF655A6C6E6E";
foaf:nick ?nick
OPTIONAL { ?who foaf:mbox ?mbox } }
Results:
?name ?mbox
ericP <mailto:bob@example.com>
5.1 Group Graph Pattern
For any solution, the same variable is given the same value
everywhere in the set of graph patterns making up the group graph
pattern.
We had a WG decision on this and I want to make sure the spec lines up
with that.
5.3 Order of Evaluation
There is no implied order of graph patterns within a Group Graph
Pattern
This is the full-outer-join issue. How did this get resolved?
7 Matching Alternatives
Query results involving a pattern containing GP1 and GP2 will
include separate solutions for each match where GP1 and GP2 give
rise to *different* sets of bindings.
We talked about this some, too. Can't remember where we got. I prefer
to not have an implicit DISTINCT on UNION (something the SQL folks
regret).
I have some notes to add examples:
empty graph patterns:
WHERE { OPTIONAL { <mumble> <foo> ?bar } }
FILTERs outside of the binding OPTIONAL:
OPTIONAL { <mumble> <foo> ?bar } FILTER (!BOUND(?bar) || ?bar < 5) }
I'd like to clarify whether qname expansion occurs *before* relative
IRI resolution. Does
BASE <http://example.org/services/SPARQL>
PREFIX foo: <../namespaces/foo#>
... WERE { ... foo:barw ... }
mean
<http://example.org/namespaces/foo#bar>
?
I'm not convinced that 4.1.4 Syntax for Blank Nodes needs to go into
such detail on the [ :p :o ] syntax, which is later described in
4.2.1. It's tough, you kinda need to teach these things in parallel,
and it's tedious to teach them non-exhaustively and later define them
exhaustively. I don't have any better ideas.
Tx a zillion for all the fab work, AndyS!
[TST] http://www.w3.org/2001/sw/DataAccess/tests/#rdfsemantics-bnode-type-var
--
-eric
office: +1.617.258.5741 NE43-344, MIT, Cambridge, MA 02144 USA
cell: +1.857.222.5741
(eric@w3.org)
Feel free to forward this message to any list for any purpose other than
email address distribution.
Received on Tuesday, 23 January 2007 12:45:14 UTC