Hi Hans,

Try this solution:

(clear)
(watch all)

(deftemplate things
   (slot Id)
   (multislot elements))
(deftemplate otherthing
     (slot one_Element))

(deffacts init
    (things (Id 1) (elements a b c))
    (otherthing (one_Element a)))

;Get all Ids of things
;Where AElement of elements equals one_Element

(defrule find_it
   (things (Id ?pId)(elements $?elements))
   (otherthing (one_Element ?foo&:(member$ ?foo ?elements)))
 =>
   (printout t crlf "Found it: " ?pId crlf crlf))

; Program
(reset)
(run)

/** OUTPUT
MAIN::find_it: +1+1+1+1+2+t
 ==> Focus MAIN
 ==> f-0 (MAIN::initial-fact)
 ==> f-1 (MAIN::things (Id 1) (elements a b c))
 ==> f-2 (MAIN::otherthing (one_Element a))
==> Activation: MAIN::find_it :  f-1, f-2
FIRE 1 MAIN::find_it f-1, f-2

Found it: 1

 <== Focus MAIN
**/

Cheers,
Jason

-----------------------------------------------------------
Jason Morris
Morris Technical Solutions LLC
http://www.morris-technical-solutions.com

On Nov 14, 2007 10:43 AM, sotski <[EMAIL PROTECTED]> wrote:

>
> Hey all!
> I have a newbie question. I read the Answers to the "matching in two
> multislots of two different templates" post.
> I have very similiar problem but not the same ;-) I simplify the problem
> for
> you:
> ;;Templates:
> (deftemplate things
>    (slot Id)
>    (multislot elements))
> (deftemplate otherthing
>      (slot one_Element))
>
> now I want to write a rule which does the following:
>
> get all Ids of things
> where AElement of elements equals one_Element
>
> I wrote a rule:
>
> (defrule find_it
>    (things (Id ?pId)(elements $?elementName))
>    (otherthing (one_Element ?foo))
>    (test (eq ($?elementName ?foo))
>  =>
>    (printout t "found it:" ?pId crlf))
>
> But it doesen't fire.
> I assert facts from java and they are of type RU.SYMBOL
>
> Thx for your help
> Bye
> Hans
> --
> View this message in context:
> http://www.nabble.com/matching-problem-tf4805951.html#a13749159
> Sent from the Jess mailing list archive at Nabble.com.
>
> --------------------------------------------------------------------
> 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