Not sure what "dynamic" means in this context. But you can use the "forall" 
conditional element to implement this rule. You could read the LHS here as "For 
all values of ?name in bag-of-items, there's a corresponding item fact."

(defrule check-bag-valid
    (forall
        (bag-of-items (names $?    ?name   $?))
        (item (name ?name)))
    =>
    (printout t "The bag is valid" crlf))

NOTE: Like many complex Jess rules, this one won't fire unless before adding 
your facts you've executed the "(reset)" command to asset (initial-fact).


-----Original Message-----
From: owner-jess-us...@sandia.gov [mailto:owner-jess-us...@sandia.gov] On 
Behalf Of Aurelien Mazurie
Sent: Friday, July 26, 2013 4:56 PM
To: jess-users
Subject: JESS: [EXTERNAL] Dynamic rule matching in the LHS

Dear Jess users,
I am wondering how to write a rule that would dynamically match multiple facts 
based on their names.

Let say I have two types of facts; one representing the information that an 
item (with a given name) exists, and the other one representing a list of items 
(e.g., as a list of names in a multislot). It could be something like
this:

  (deftemplate item (slot name))
  (deftemplate bag-of-items (multislot names))

  (assert (item (name A))
  (assert (bag-of-items (names A B))

What I am trying to write is a rule that would, for any bag-of-items fact, fire 
if all the items listed in the multislot 'name' are item facts that have been 
asserted.

I am wondering if there is an easy way to do that, or if I'll need to hack my 
way through it with loops and tests in the LHS of my rule.

Any suggestion?
Best,
Aurélien



--
View this message in context: 
http://jess.2305737.n4.nabble.com/Dynamic-rule-matching-in-the-LHS-tp4654176.html
Sent from the Jess mailing list archive at Nabble.com.


--------------------------------------------------------------------
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.
--------------------------------------------------------------------


--------------------------------------------------------------------
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.
--------------------------------------------------------------------

Reply via email to