- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Wed, 8 Jul 2009 18:19:10 +0000
- To: Lee Feigenbaum <lee@thefigtrees.net>
- CC: SPARQL Working Group <public-rdf-dawg@w3.org>
> -----Original Message----- > From: public-rdf-dawg-request@w3.org [mailto:public-rdf-dawg-request@w3.org] > On Behalf Of Lee Feigenbaum > Sent: 08 July 2009 18:17 > To: Eric Prud'hommeaux > Cc: SPARQL Working Group > Subject: Re: More on MINUS vs. UNSAID > > Eric Prud'hommeaux wrote: > > >> OK, with this spelled out, I wanted to look at Eric's treatment in > >> http://lists.w3.org/Archives/Public/public-rdf-dawg/2009JulSep/0022.html. > >> In particular, looking at this example in Eric's mail: > >> > >> """ > >> Query M3: > >> ?who foaf:givenname ?name > >> MINUS { > >> ?who foaf:holdsAccount ?act > >> OPTIONAL { > >> ?act foaf:accountName ?name . > >> } > >> } > >> Result M3: > >> ?who ?name ?who ?act ?name ?who ?name > >> _:eric "eric" _:eric <act1> "eric" _:bobS "bob" > >> _:bobS "bob" - _:bobS <act2> "bobS" = _:eve "eve" > >> _:eve "eve" _:eve <act3> > >> """ > >> > >> The only way that I can see that (?who=_:eve, ?name="eve") is retained > >> in the result of the MINUS is if Eric is using the "looser" form of the > >> MINUS-set definition that I give above. Eric, can you confirm this is > >> the case? The two MINUS-AntiJoin* definitions would, I think, eliminate > >> that solution because (?who=_:eve, ?name="eve") is compatible with > >> (?who=_:eve, ?act=<act3>). > > > > I think you've made a leap from "AND share at least one bound > > variable" to "have any variables in common". As I understand both > > I don't understand the difference between these two phrasings :) Me neither :-) > > MINUS-AntiJoin and MINUS-AntiJoin+Restriction, both restrict A if > > there is a tuple in B with the same values for all the bindings. > > Thus, a distinguishing test case for these would be: > > > > ?who foaf:givenname ?name > > MINUS { > > ?who2 foaf:holdsAccount ?act > > OPTIONAL { > > ?act foaf:accountName ?name2 . > > } > > } > > That's definitely a test case. Since it doesn't make any rational sense > to me, though, I have no real basis from which to draw a preference... > > One possible idea is to syntactically prohibit A MINUS B where A and B > share no variables in common :-) Not quiet sure how that would work: The MINUS is done on pairs of tuples, some may share a variable, some may not. Do variables in OPTIONAL count? The first is not syntax restriction, if I understand your idea here. The test cases I just emailed may help as I've tried to write something that is purely about the definition of the operator over tables during evaluation. Andy > > Lee > > > > >> ...I'm going to punt on UNSAID tonight because it's getting late and I > >> don't have an easy way to explain it. Andy explains it as a !EXISTS > >> filter (i.e., solve A and then for each solution in A, filter it against > >> a !EXISTS filter) - but without totally understanding what !EXISTS > >> means, I can't really see how that relates to these MINUS definitions. > >> > >> Greg (& someone else?) explained UNSAID today as AntiOptional. I'm > >> wondering if "AntiOptional" is actually the same as > >> MINUS-AntiJoin+Restriction? Can anyone tell? > >> > >> Lee > >> > >
Received on Wednesday, 8 July 2009 18:19:41 UTC