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