- 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