- From: <jos.deroo@agfa.com>
- Date: Thu, 13 Apr 2006 18:18:51 +0200
- To: paula.patranjan@ifi.lmu.de
- Cc: public-rif-wg@w3.org
- Message-ID: <OF0F4EC094.0F3C0BE8-ONC125714F.005917CD-C125714F.005990A9@agfa.com>
Paula, it indeed feels so good when it works out! I like test cases and
running code :)
btw, the constraint is now a bit stronger as to avoid mixing diagnoses of
different patients
p:isPrescribed(W,M), p:excludedFor(M,D), not(rpo:mu(W,D,_)) => bottom.
Also my very best wishes for a happy Easter!
Regards,
Jos
--
Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/
Paula-Lavinia Patranjan <paula.patranjan@ifi.lmu.de>
13/04/2006 18:09
To: Jos De Roo/AMDUS/AGFA@AGFA
cc: public-rif-wg@w3.org
Subject: Re: a thought w.r.t.
Standard_RIF_must_support_normative_rules
Dear Jos,
Thank you for your time in trying this out. It's great when everything
works :)
My best wishes for a happy Easter!
Regards,
Paula
jos.deroo@agfa.com wrote:
> [a bit more after some more testing with normative rules..]
>
> Adding an additional normative rule
> p:excludedFor(_,D), not(rpo:mu(_,D,_)) => bottom.
> to the example
> http://eulersharp.sourceforge.net/2006/02swap/medic.pl
> seems to be fine indeed; waw..
>
> [putting my name in the requirement too]
>
>
> Hi Paula,
>
> Agreed, fully agreed; sorry if my point wasn't clear - am quite
> often too implicit and assuming too much about the context :-)
> Maybe it is resolved when there is a way to do that prescription
> example with normative rules, and making sure what Michael said in
>
http://lists.w3.org/Archives/Public/public-rule-workshop-discuss/2005Aug/0107.html
> [[
> in prescribing medicine a (good) doctor might first want to
> establish that there are no complications with ulcer, etc.
> ]]
> well, if you don't mind..
>
> Thanks,
> Jos
>
>
>> Hi Jos,
>>
>> I'm not sure I fully understand your point. However, I think the
>> requirement on standard RIF to support normative rules is quite clear
>> and is motivated by a range of real applications needing such kind of
>> rules. Consider the example of a car company working with a rule system
>> R1 and wanting to use as part of its business logic a set of rules
>> expressed with a rule system R2. By using RIF, R2 normative rules
>> expressed in the rule set should have a representation in RIF, so as to
>> be translated into a R1 rule set without loosing their meaning. If a
>> rule like NR: 'A customer can rent at most one car at a time' cannot be
>> translated from R2 to R1 through RIF, the rental company working with
R1
>>
>
>
>> should at least be aware of the fact that the business logic they want
>> is not really the one they get. The proces instances of business
>> processes with or without rule NR (a business rule here) might have
>> different results in some situations, such as ones when a customer has
>> more than one rental request for the same period of time.
>>
>> The statements above raise actually two requirements on RIF: one
>> concerning the support of normative rules and one for a means to
specify
>>
>
>
>> the capabilities of the RIF 'dialect' you use for translating rule
sets.
>>
>
>
>> Also related to these issues is the specification of an expected
>> behaviour in case RIF does not support some of your rule
>> system's/language's features.
>>
>> Regards,
>> Paula
>>
>>
>>
>> jos.deroo@agfa.com wrote:
>>
>>> 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.
>>>
>
>
Attachments
- application/octet-stream attachment: paula.patranjan.vcf
Received on Thursday, 13 April 2006 16:19:06 UTC