W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > July to September 2009

Re: More on MINUS vs. UNSAID

From: Lee Feigenbaum <lee@thefigtrees.net>
Date: Wed, 08 Jul 2009 13:17:11 -0400
Message-ID: <4A54D497.2040701@thefigtrees.net>
To: Eric Prud'hommeaux <eric@w3.org>
CC: SPARQL Working Group <public-rdf-dawg@w3.org>
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
>>     ?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 :)

> 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
>   ?who2 foaf:holdsAccount ?act
>     ?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 :-)


>> ...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 17:18:20 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 15:00:57 UTC