- From: Enrico Franconi <franconi@inf.unibz.it>
- Date: Fri, 14 Jul 2006 02:48:10 +0100
- To: RDF Data Access Working Group <public-rdf-dawg@w3.org>
On 13 Jul 2006, at 17:23, Eric Prud'hommeaux wrote: > Note that this graph does not directly create any triples with > food:hasDrink or wine:hasColor in the predicate. MyDinner must have a > drink because it is a RedMeatCourse, which is a subClassOf something > which, if it has a Drink, must have a Red drink. Also, it's a > MealCourse, which must have at least one Drink. > > So there we go. It must hasDrink of something with the color Red. > > Query: > PREFIX food: <http://www.w3.org/2001/sw/WebOnt/guide-src/food#> > PREFIX wine: <http://www.w3.org/2001/sw/WebOnt/guide-src/wine#> > SELECT ?Meal ?WineColor > WHERE { > ?Meal food:hasDrink _:Wine . > _:Wine wine:hasColor ?WineColor } > > Pellet <http://www.mindswap.org/2003/pellet/demo> gives these > results: > > | Meal | WineColor | > +---------------+-----------+ > | test:MyLunch | :White | > | test:MyDinner | :Red | > > > When querying Pellet for:, > ?Meal food:hasDrink ?Wine . > ?Wine wine:hasColor ?WineColor > > it gives no results because it has no bindings for the Wine. But why > not? Certainly, it as deduced that there is something there, but it's > opaque to RDF. Why doesn't it infer the triples:? > food:MyLunch hasDrink [ hasColor :White ] . > food:MyDinner hasDrink [ hasColor :Red ] . You can't do that since you can not represent all the possible answers. You couldn't represent the case when there is a cyclic coreference between bnodes. E.g., _:a R _:b. _:b S _:a. Bnodes give a true increase in expressivity whenever coreference in the answer set plays a role. > That seems quite in order to me, freeing us to use bNodes as > existential that affect future counting semantics, or remove them, > treat them exactly as regular variables except you can't select them > and they don't show up in SELECT *. If you want to remove bnodes, and have variables to play their role when "not selected" (i.e., projected away), then the semantics of SPARQL should change: it should not be anymore the current two stages evaluation (BGP + algebra) but it should be uniformly defined with a *global* notion of (non-distinguished) variable assignment that considers the whole SPARQL expression. It could be interesting. Necessary time to come up with a convincing theory and practice about it: at least one year, I guess..., or more if we do start discussing with Pat about the details :-) That's why I always said that a standardising effort like SPARQL should come *after* researchers have done their duty and the results are mature enough to be applied. cheers --e.
Received on Friday, 14 July 2006 01:49:55 UTC