a thought w.r.t. Standard_RIF_must_support_normative_rules

Let me briefly raise a thought w.r.t.
http://www.w3.org/2005/rules/wg/wiki/Standard_RIF_must_support_normative_rules

This works fine as can be seen from following prolog example
in which the '=>' is coming from
http://eulersharp.sourceforge.net/2006/02swap/euler.pl (*)

%=======================================================================
prefix(rpo,'http://eulersharp.sourceforge.net/2003/03swap/rpo-rules#').
prefix(p,'http://eulersharp.sourceforge.net/2006/02swap/med#').
%=======================================================================
:- dynamic(p:isPrescribed/2).

rpo:mu(p:ann,p:gastroEntritis,0.8).
rpo:mu(p:ann,p:gastricUlcer,0.006).
rpo:mu(p:ann,p:postSurgery,0).

p:prescribedFor(p:aspirin,p:gastroEntritis).

p:excludedFor(p:aspirin,p:gastricUlcer).
p:excludedFor(p:aspirin,p:postSurgery).

p:excludedFor(_,D), rpo:mu(_,D,N), N > 0.01 => bottom.

p:prescribedFor(Med,D), rpo:mu(Who,D,N), N > 0.7 => 
p:isPrescribed(Who,Med).
%=======================================================================

and it follows that
p:isPrescribed(p:ann, p:aspirin).

When we change the case to
rpo:mu(p:ann,p:gastricUlcer,0.6).
then the prescription doesn't follow anymore, which is fine.

BUT when we don't have the fact that
rpo:mu(p:ann,p:gastricUlcer,0.6).
we still get
p:isPrescribed(p:ann, p:aspirin).
which is not so fine!

To cope with that, no integrity constraint is used in
http://eulersharp.sourceforge.net/2006/02swap/med.pl
and I believe it is safe in the presence of missing data.

-- 
Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/

(*) this 3 lines of prolog came a long way and is basically saying
that given X=>Y and X do not(Y) i.e. euler path detection to not
step in own steps; is like SATCHMO reasoner; thanks Francois!

Received on Thursday, 13 April 2006 12:52:53 UTC