Re: JESS: [EXTERNAL] Dynamic rule-base analysis

2013-08-17 Thread Przemyslaw Woznowski
Thanks Wolfgang, this helps a lot! I must have missed the
getConditionalElements in the API. The analysis of the rule's LHS is
working great and it's RHS is more complex but do-able.

Once again, thanks for the advice,
Pete


On Thu, Aug 15, 2013 at 6:51 PM, Wolfgang Laun wolfgang.l...@gmail.comwrote:

 Rete has listDefrules and Defrule has getConditionalElements, which
 lets you retrieve its constituents, depending on it being a Pattern or
 Accumulate; if it is a Group you must recurse down... It's like
 walking an AST

 RHS is similar. But note that fact modifications are possible in
 functions, so if one of these is called on the RHS, you'll have to
 investigate in depth.

 Expect to have some fun ;-)

 Cheers
 Wolfgang


 On 14/08/2013, Przemyslaw Woznowski p.r.woznow...@cs.cf.ac.uk wrote:
  Dear Jess users.
 
  What I am trying to do is to dynamically list all the defrules together
  with their LHS and RHS facts excluding any conditions. Basically what I
  mean is that, for example, if there are Person and Car facts on the
 rule's
  LHS and the rule asserts an Owner fact, deletes the Car fact and modifies
  the Person fact. I would like to create a data structure that would, for
  each rule, carry it's name and the facts it needs to fire (excluding any
  conditions just deftemplate's name) and any deftemplates that appear on
 the
  rule's RHS. So for the example above, something like:
  Rule_1
   needs: Person, Car
   asserts: Owner
   modifies: Person
   deletes: Car
 
  I can get a list of all defrules via the listDefrules() method called on
  the Rete object but then it gets tricky. The listNodes() method called on
  the HasLHS object gives a textual description of the rule's LHS but I
  cannot find a method that would simply return name of facts on the LHS.
  Some text processing would solve the rule's LHS problem as I can look for
  occurrences of :: to find facts. However, the rule's RHS is more
  problematic as I cannot find a method that would give me what I want.
 
  I would appreciate your help with this one.
 
  Best regards,
  Pete
 
  --
  Przemyslaw (Pete) Woznowski, PhD candidate  RA
  Email: p.r.woznow...@cs.cardiff.ac.uk
  Room C/2.06, Desk 8
  Cardiff School of Computer Science  Informatics,
  Cardiff University,
  Queen's Buildings,
  5 The Parade, Roath,
  Cardiff, CF24 3AA, UK
   School of Healthcare Studies,
  Cardiff University
  Cardigan House
  Heath Park Campus
  Cardiff, CF14 4XN, UK
 
 
 To unsubscribe, send the words 'unsubscribe jess-users y...@address.com'
 in the BODY of a message to majord...@sandia.gov, NOT to the list
 (use your own address!) List problems? Notify owner-jess-us...@sandia.gov.
 




-- 
Przemyslaw (Pete) Woznowski, PhD candidate  RA
Email: p.r.woznow...@cs.cardiff.ac.uk
Room C/2.06, Desk 8
Cardiff School of Computer Science  Informatics,
Cardiff University,
Queen's Buildings,
5 The Parade, Roath,
Cardiff, CF24 3AA, UK
 School of Healthcare Studies,
Cardiff University
Cardigan House
Heath Park Campus
Cardiff, CF14 4XN, UK


JESS: [EXTERNAL] Dynamic rule-base analysis

2013-08-15 Thread Przemyslaw Woznowski
Dear Jess users.

What I am trying to do is to dynamically list all the defrules together
with their LHS and RHS facts excluding any conditions. Basically what I
mean is that, for example, if there are Person and Car facts on the rule's
LHS and the rule asserts an Owner fact, deletes the Car fact and modifies
the Person fact. I would like to create a data structure that would, for
each rule, carry it's name and the facts it needs to fire (excluding any
conditions just deftemplate's name) and any deftemplates that appear on the
rule's RHS. So for the example above, something like:
Rule_1
 needs: Person, Car
 asserts: Owner
 modifies: Person
 deletes: Car

I can get a list of all defrules via the listDefrules() method called on
the Rete object but then it gets tricky. The listNodes() method called on
the HasLHS object gives a textual description of the rule's LHS but I
cannot find a method that would simply return name of facts on the LHS.
Some text processing would solve the rule's LHS problem as I can look for
occurrences of :: to find facts. However, the rule's RHS is more
problematic as I cannot find a method that would give me what I want.

I would appreciate your help with this one.

Best regards,
Pete

-- 
Przemyslaw (Pete) Woznowski, PhD candidate  RA
Email: p.r.woznow...@cs.cardiff.ac.uk
Room C/2.06, Desk 8
Cardiff School of Computer Science  Informatics,
Cardiff University,
Queen's Buildings,
5 The Parade, Roath,
Cardiff, CF24 3AA, UK
 School of Healthcare Studies,
Cardiff University
Cardigan House
Heath Park Campus
Cardiff, CF14 4XN, UK