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

RE: More on MINUS vs. UNSAID

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>
Message-ID: <B6CF1054FDC8B845BF93A6645D19BEA3646F2BC063@GVW1118EXC.americas.hpqcorp.net>


> -----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 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:15:39 GMT