- From: Dan Connolly <connolly@w3.org>
- Date: Wed, 16 Dec 2009 21:55:36 -0600
- To: public-cwm-talk <public-cwm-talk@w3.org>
I found another bug. This time I isolated it to a test case:
cwm can run log:uri as a reverse built-in to bind ?X in:
{
?X log:uri "http://example#abc"
} => { ?X owl:differentFrom ?X }.
but with --why, the corresponding proof step is borked:
[
a :Fact;
:gives {<test/reason/revfunc.n3#X>
log:uri exa:abc .
} ]
the ?X shouldn't stay in the proof; it should
get replaced by the result of the reverse function,
<http://example#abc>.
I checked in a test case:
swap$ python2.5 cwm.py test/reason/revfunc.n3 --think
--filter=test/reason/contradiction.n3 --why >,pf.n3
swap$ PYTHONPATH=.. python2.5 check.py ,pf.n3
Proof failed: Built-in fact does not give
correct results: predicate: log:uri subject: X object: exa:abc result:
None
Proof invalid: Built-in fact does not give correct results:
predicate: log:uri subject: X object: exa:abc result: None
looks to me like the problem is around
query.py line 1713:
return [(nb1, diag.tracking and
BecauseBuiltIn(con, subj, pred, result))
for nb1, env3 in
subj.unify(result, Env(), Env(), self.neededToRun[SUBJ])]
subj is getting passed to BecauseBuiltIn, but what should
get passed is the result of unification.
That's as far as I got; I tried to figure out what unify()
returns in order to pass it to BecauseBuiltIn, but I got
lost in the code.
My kingdom for more doctests! (see check.py for at least
some examples.)
--
Dan Connolly, W3C http://www.w3.org/People/Connolly/
gpg D3C2 887B 0F92 6005 C541 0875 0F91 96DE 6E52 C29E
Received on Thursday, 17 December 2009 03:55:38 UTC