- From: <jos.deroo@agfa.com>
- Date: Thu, 24 Feb 2005 16:52:47 +0100
- To: geoff@sover.net
- Cc: andy.seaborne@hp.com, public-rdf-dawg-comments@w3.org
>> [...] >> >>> That seems more like: >>> A and (B or true) >>> than: >>> A and (B or not B) >>> >>> You can't really simulate an optional without some form of not (NAF). >> >> I still do the former, but that gives, as Andy says unhelpful answers. >> I also did the latter a while back, but then in a monotonic way using >> log:notIncludes, however a test case like > > Do you mean non-monotonic? It seems to me an implementation of OPTIONAL is > implicitly non-monotonic (at least for selects, possibly some > order-dependant forms of optional with construct are monotonic since you're > not actually returning NULLs) so it seems reasonable to have to use nonmon > features in your language to implement it. well Geoff, nonmon is exactly what I try to avoid in my implementation of RDF query inferencing e.g. by using such predicates as log:notIncludes which is described at http://www.w3.org/2000/10/swap/doc/Reach "Because a formula is a finite size, you can test for what it does not say" and that is pretty nifty :) >> http://www.w3.org/2001/sw/DataAccess/tests/#dawg-opt-query-001 >> is then not giving that "Eve" solution (it works nicely for instance >> when in the data :eve is used, but bnodes are existential variables >> and ?SRC log:notIncludes {_:eve_0 foaf:mbox <#mbox>} is not the case). >> I actually can't implement OPTIONAL > > That sounds like some sort of a quantification problem. In the query you > cite: > > PREFIX foaf: <http://xmlns.com/foaf/0.1/> > SELECT ?name ?mbox > WHERE > (?person foaf:name ?name) > [ (?person foaf:mbox ?mbox) ] > > > if you've implement that as: > > (?person foaf:name ?name) > and ((?person foaf:mbox ?mbox) or > not (?person foaf:mbox ?mbox)) > > you're not saying: not exists any person with a foaf:mbox, but: not exists a > foaf:mbox for each person bound by previous triple. > > Or did I entirely misunderstand what you meant :-)? it is implementation that is different :) ..have to reconstruct some past experience above query is rewritten in N3 as [] q:select {<> q:answer (?name ?mbox)}; q:where {?person foaf:name ?name. <dawg-data-01.n3> log:semantics ?F. ?F log:notIncludes {?person foaf:mbox ?mbox}}. [] q:select {<> q:answer (?name ?mbox)}; q:where {?person foaf:name ?name; foaf:mbox ?mbox}. and for the attempt where ?person foaf:name ?name. is matched with _:just_a_label foaf:name "Eve". the triple _:just_a_label foaf:mbox ?mbox is a *simple entailment* from dawg-data-01.n3 and hence is included (and we get no answer) which is of course just saying that we don't have negation :) -- Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/
Received on Thursday, 24 February 2005 15:53:45 UTC