Yep, that works too, of course. And it is the preferred way of doing it. My bad.
On Nov 14, 2007 1:23 PM, Robert Kirby <[EMAIL PROTECTED]> wrote: > How about > > (defrule find_it2 > (things (Id ?pId)(elements $? ?elementName $?)) > (otherthing (one_Element ?elementName)) > => > (printout t "found it:" ?pId crlf)) > > which is described at the end of *6.4. Matching in Multislots* > <http://herzberg.ca.sandia.gov/jess/docs/70/rules.html#multimatch>? > > Bob Kirby > > > At 09:15 AM 11/14/2007, Jason Morris wrote: > > 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] > -------------------------------------------------------------------- > > > > > -- ----------------------------------------------------------- Jason Morris Morris Technical Solutions LLC http://www.morris-technical-solutions.com