- From: Eric Prud'hommeaux <eric@w3.org>
- Date: Sun, 2 Jul 2006 12:39:26 +0200
- To: Jeen Broekstra <jeen.broekstra@aduna-software.com>
- Cc: Bijan Parsia <bparsia@cs.man.ac.uk>, Kendall Clark <kendall@monkeyfist.com>, RDF Data Access Working Group <public-rdf-dawg@w3.org>
On Thu, Jun 29, 2006 at 11:54:24AM +0200, Jeen Broekstra wrote: > > Bijan Parsia wrote: > >On Jun 28, 2006, at 1:32 PM, Kendall Clark wrote: > > > >>On Jun 28, 2006, at 5:15 AM, Jeen Broekstra wrote: > >> > >>>I can live with either of these and have a slight preference for the > >>>second. To be honest I could live without the blank nodes in queries > >>>altogether. They are confusing and annoying (this discussion is a case > >>>in point), and I find the supposed 'cut&paste' benefit unconvincing. But > >>>that station is passed I guess. > >> > >>I couldn't agree more. I wasn't convinced by it as a reason, offered > >>by TimBL, for turtleizing our syntax, and I'm even less > >>convinced by it now. It's the biggest single wart on SPARQL and I wish > >>we could chop it off w/out mercy. > >> > >>But I'm also not convinced that it's too late. If the WG decides to do > >>it, and will put in the work to make it happen, > >>then it's "merely" a matter of doing the work. > > > >I would like to separate the syntax issue from the capability issue. At > >the moment, as I understand it, BNodes in the query represent > >*undistinguished* variables, that is, variables that do not need a > >binding to a constant and *cannot* report their bindings (thus don't > >need to establish one). > > I'm not sure I understand this (though I *think* I agree with it ;)). I > have always understood that it currently works like this: blank node > identifiers in graph patterns act exactly the same as variable names (in > that the same bnode id in the same graph pattern is unified), only the > scoping is different and we can not report the binding in the > projection. It does need to establish a binding though, otherwise the > graph pattern match fails. > > Using "unidentified" blank nodes (the square brackets syntax) however is > more akin to what you say: each blank node in the graph pattern is > unique and unaddressable, we can't unify it with a blank node anywhere > else in the graph, we just express that there should be _some_ value > (but don't care what that value is). > > Perhaps I'm missing a bit of background here: can you clarify what you > mean with a 'distinguished' vs. a 'undistinguished' variable, exactly? > > >This is an important capability (distinct from > >projection) which currently there is no other way to (exactly) express > >in SPARQL. > > Yes, being able to use square bracket syntax as 'anonymous' variables is > useful I think: > > SELECT ?x ?y > WHERE > { ?x foaf:name [] ; > foaf:knows ?y . > } > > or: > > SELECT ?person ?friendname > WHERE { ?person foaf:knows [ > foaf:name ?friendname > ] . > } > > But the blank node identifiers (_:a) used as variable names (...but with > different scoping) is just a pain IMHO. If you care about unifying the > binding somewhere else in the pattern (or getting the result in the > projection), give it a variable name. If you don't, use an anonymous > variable (square brackets). I disagree, or perhaps, I have a different priority. While the use of bNodes in a query to find people who know the same person: SELECT * WHERE { ?A foaf:knows _:known . ?A foaf:knows ?B . ?B foaf:knows _:known . } can be replaced by a bit of syntax: SELECT ?A ?B WHERE { ?A foaf:knows ?known . ?A foaf:knows ?B . ?B foaf:knows ?known . } I am betting (significant amounts of my time) that the parallelism (and cut-and-paste-ism) with a popularly deployed assertion language is worth the extra bit parser effort (keeping an association list of bNode symbol to bNode). It is possible, however, that I am missing some of Jeen's pain because I didn't fully implement something or because he is working in a different context than I imagine. > Cheers, > > Jeen > -- > Jeen Broekstra <jeen.broekstra@aduna-software.com> > Senior Software Developer > Aduna (http://www.aduna-software.com/) > Prinses Julianaplein 14-b, 3817 CS Amersfoort, The Netherlands > tel. +31-(0)33-4659987 -- -eric home-office: +1.617.395.1213 (usually 900-2300 CET) cell: +81.90.6533.3882 (eric@w3.org) Feel free to forward this message to any list for any purpose other than email address distribution.
Received on Sunday, 2 July 2006 10:38:05 UTC