While this reply does not deal directly with the rule under discussion, I continue to be amazed at the approaches used to "engineer" rule-based systems (which ultimately fail) and how little we hear from the the Olympic geniuses who are employed by the vendors (unless you are willing to pay $300/hr).

To me, rules engineering (at the requirements/analysis level) is a discipline that is simple:

(1) discover the "rules" that are found/described in the textual portions of the requirements.

(2) describe possible "information entities" that the rule's LHS uses to test for truth and that the rule's RHS would take action with (create/update/delete).

(3) model this information in such a way that the potential interactions between the rules can be documented, i.e. what conditional testing by LHS would be impacted by actions of the RHSs of other rules.

(4) elaborate on this information with a high-level "control" system to preclude the possibility of undesirable conflicts between rules.

Ironically, much of this can be set down in an Excel spreadsheet. The principal problem is that the merit of this approach seems to be lost on people until they have endured multiple project failures (myself included) and begin to look at rules engineering as something that is 180 degrees out of phase from ordinary procedural programming - it is a radically different paradigm that is not intuitively obvious to the uninitiated.

Once this technique becomes second nature to the rules designer, success (and $$$$$) will follow. I offer this advice free to beginners, but as a consultant I do not work for free.

Rich Halsey
----- Original Message ----- From: "James C. Owen" <[EMAIL PROTECTED]>
To: <jess-users@sandia.gov>
Sent: Monday, October 31, 2005 11:53 PM
Subject: Re: JESS: Jess error: Bad index


OK, this has been in my mail box for almost four hours and no one has said anything - so, here goes. FIRST - don't write B I G rules !!! Second, half of the logic is in the right hand side (AE) of the rule. Why? Third, there is absolutely NO explanation of what the rule does or what it is supposed to do, etc., etc. etc. Pretty much, this is written like a lot of rules that I see every day. Rules that show a thought process gone amok. So, break it down, think it out, make it simple, THEN see what's wrong with the logic. Actually, what is "wrong" with the rule is in the error message itself; apparently Jess thinks that there is a call to a Vector in the LHS of the rule and that index 123 is a bad index. Probably is.

On the other hand, even if you fix that part of the rule, it should still be taken out and shot for breaking the first three guidelines mentioned above. Anyway, it's almost midnight. Time for all good little rule boys to be in bed. Preferably with someone else. :-)

SDG
jco

On Oct 31, 2005, at 8:35 PM, Eunice Palmeira wrote:

I use  Jess 6.1 p4 and JessTab 1.3, when a run big rules like the rule
below the Jess report an error:

Jess reported an error in routine ValueVector.get
    while executing rule LHS (MTELN)
    while executing rule LHS (TECT).
  Message: Bad index 123 in call to get() on this vector:
(MAIN::object (is-a :JESS-DEFTEMPLATE) (is-a-name ":JESS-DEFTEMPLATE")
(OBJECT <External- Address:edu.stanford.smi.protege.model.DefaultSimpleInstance>)
(:NAME "Science_Instance_45") (:DIRECT-TYPE
<External-Address:edu.stanford.smi.protege.model.DefaultCls>)
(:DIRECT-INSTANCES ) ....

RULE:
(defrule e_201_links
(object (Page-Status ?l&RECOMMENDATION|REJECTED|CLASSIFIED| EXTRACTED|LIST)
             (is-a Processing-Monitor))
        ?s <- (object (is-a Suggestion-Recognizer) (What-to-Suggest
?k&LINK|LINK-TEXT)
           (Class-to-Suggest ?c) (Cases $?cs))
  ?f <- (Result (Page-Status ?))
 (not (Processed Links ?k))
    (object (is-a Agent) (treats-Class ?ca) (name ?nsa))
     ?g <- (object (is-a Case) (Concepts $?cb&:(> (length$ $?cb) 0))
(Keywords $?k) (Absent-Concepts $?ac))
    (test (and
           (integerp (member$ (instance-address ?g) $?cs))
     (or (eq ?c ?ca) (subclassp ?c ?ca))))
  =>
     (if (eq ?k LINK) then
         (insert-link ?nsa (search-in-list (create$ (words-of-concepts
$?cb) $?k)
                     (slot-get [LINKS] Values) (slot-get [PAGE]
Links)) ?f ?c 201)
      else         (insert-link ?nsa (search-in-list (create$
(words-of-concepts $?cb) $?k)
(slot-get [LINKS-TEXTS] Values) (slot-get [PAGE] Links)) ?f ?c 201))
    (assert (Processed Links ?k)))


Help me please,
       Eunice


--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users  [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify owner-jess- [EMAIL PROTECTED]
--------------------------------------------------------------------



--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]
--------------------------------------------------------------------

Reply via email to