Re: RIF Core, and how much is PRD allowed to diverge from BLD [Was: Re: [PRD] Issues to resolve before publication]

Gary Hallmark wrote:
>
> Thanks, Harold.  If I may editorialize a bit:
> a. this example shows the use and utility of ground facts in 
> production rules (and BLD)
> b. this example shows the use of NAU
> c. this example shows that one widely known PR language is 
> sufficiently close to our own PS that we don't need to
> invent another PS nor should we apologize for the one we have
I wouldn't say that Clips was just "one", Clips (none COOL) should be 
considered the gold standard really. It's 20 years old and ALL modern PR 
rule engines are extensions to this. Some don't impelment the full Clips 
feature set - Conditional Element "Or" and Conditional Element "ForAll" 
is not supported in some systems, such as ILog JRules. But general 
pattern matching, 'not', 'exists', logical assertions (Truth 
Maintenance) are implemented in most PR engines in the same way or small 
variation on Clips. In general the only execution semantics that differ 
from Clips and Drools, JRules, OPSJ etc is the agenda conflict execution.

There are two main areas to consider ontop of Clips for modern systems. 
1) nested field accessors with maps and lists support. 2) support for 
derived out of working memory data, this is where a pattern has a source 
other than the WorkingMemory, typically from a result of an expression 
of a Conditional Element. Both these are needed to address modern day 
problems. PRR has addressed this somewhat.

Mark
> d. this example shows the utility of a non-trivial intersection of BLD 
> and PRD -- so that this CLIPS ruleset can be understood by any 
> RIF-compliant rule engine (PRD or BLD)
>
> Boley, Harold wrote:
>> Production Rule languages such as the widely used CLIPS
>> (http://en.wikipedia.org/wiki/CLIPS) employ predicates
>> like car_problem with named arguments.
>>
>>
>> CLIPS (Wikipedia rule1 is a "pure production rule"):
>>
>> (deffacts trouble_shooting
>>     (car_problem (name ignition_key) (status on))
>>     (car_problem (name engine) (status wont_start))
>>     (car_problem (name headlights) (status work))
>>  )
>>
>> (defrule rule1
>>     (car_problem (name ignition_key) (status on))
>>     (car_problem (name engine) (status wont_start))
>>      =>
>>     (assert (car_problem (name starter) (status faulty))
>>  )
>>
>>
>> RIF-BLD (simplified, with rule1 as a Horn-like rule):
>>
>> (* trouble_shooting *)
>> car_problem(name->ignition_key  status->on)
>> car_problem(name->engine        status->wont_start)
>> car_problem(name->headlights    status->work)
>>
>> (* rule1 *)
>> car_problem(name->starter       status->faulty) :-
>>   And(
>>       car_problem(name->ignition_key  status->on)
>>       car_problem(name->engine        status->wont_start) )
>>
>>
>> -- Harold
>>
>>
>> -----Original Message-----
>> From: public-rif-wg-request@w3.org [mailto:public-rif-wg-request@w3.org]
>> On Behalf Of Gary Hallmark
>> Sent: June 30, 2008 6:35 PM
>> To: Dave Reynolds
>> Cc: Christian de Sainte Marie; RIF WG
>> Subject: Re: RIF Core, and how much is PRD allowed to diverge from BLD
>> [Was: Re: [PRD] Issues to resolve before publication]
>>
>>
>> I'm sure the word "core" is overloaded and means many things to many 
>> people.
>>
>> Right now, I'm concerned with an operational meaning, which is literally
>>
>> the intersection of BLD and PRD.  The larger this intersection, the 
>> better.  I don't care so much for NAU per se, I just use it as an 
>> example.  Because it is in BLD, the default should be that it is in 
>> PRD as well, unless there is some evidence that it is more difficult 
>> for PRD
>>
>> than for BLD.  There is no such evidence -- in fact, it is common in PRD
>>
>> (Jess and CLIPS have it)
>>
>> Dave Reynolds wrote:
>>  
>>> Gary Hallmark wrote:
>>>    
>>>> To maximize rule interchange between production rule engines and 
>>>> logic rule engines, clearly Core should be "as big as possible".  
>>>> We can, should, and must decide that now.  I don't even know why I 
>>>> have to keep arguing this point.  The bias to keep BLD and PRD 
>>>> aligned with a large common core should be so high that the burden 
>>>> of proof is on you to show why NAU  should not be in Core.  You 
>>>> have provided no such proof.
>>>>       
>>> I haven't followed all the ins and outs of all this discussion but 
>>> even without PRD I'm not immediately convinced NAU should be in core.
>>>
>>> They seem relatively uncommon in rule languages. They got in, in the 
>>> end, on the grounds that they can be handled at the translation 
>>> stage for languages that don't support them. However, the notion of 
>>> a "Core"
>>>     
>>
>>  
>>> suggests some criteria of simplicity and minimality and there needs to
>>>     
>>
>>  
>>> be a higher burden of proof that these extra syntactic features have 
>>> value in the Core.
>>>
>>> Dave
>>>     
>>
>>   
>


-- 
JBoss, a Division of Red Hat
Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, 
SI4 1TE, United Kingdom. 
Registered in UK and Wales under Company Registration No. 3798903 
Directors: Michael Cunningham (USA), Charlie Peters (USA), Matt Parsons (USA) and Brendan Lane (Ireland)

Received on Tuesday, 1 July 2008 12:44:30 UTC