Hi Joao,
This is easy enough. Try this..
(clear)
(watch all)
(deftemplate person
(slot name)
(slot age))
; Your queries
(defquery person-by-age
(declare (variables ?_age))
(person (name ?name) (age ?age&:(> ?age ?_age))))
(defquery find-oldest
(person (name ?name1) (age ?age1))
(not (person (name ?name2) (age ?age2&:(> ?age2 ?age1)))))
; Load some facts
(deffacts init
(person (name Ann) (age 12))
(person (name Bob) (age 14))
(person (name Carl) (age 8))
(person (name David) (age 11))
(person (name Ed) (age 9)))
; Reset the rule engine to load our facts
(reset)
; Get the result sets for the queries
(bind ?result1 (run-query* person-by-age 10))
(bind ?result2 (run-query* find-oldest))
; Print out the results
(while (?result1 next)
(printout t
(?result1 getString name) ", age "
(?result1 getInt age) crlf))
(while (?result2 next)
(printout t "Oldest is: "
(?result2 getString name1) ", age "
(?result2 getInt age1) crlf))
/** OUTPUT
Jess> (batch age.clp)
MAIN::person-by-age: +1+1+1+2+t
MAIN::find-oldest: +1+1=1+2+2+t
==> Focus MAIN
==> f-0 (MAIN::initial-fact)
==> f-1 (MAIN::person (name Ann) (age 12))
==> f-2 (MAIN::person (name Bob) (age 14))
==> f-3 (MAIN::person (name Carl) (age 8))
==> f-4 (MAIN::person (name David) (age 11))
==> f-5 (MAIN::person (name Ed) (age 9))
==> f-6 (MAIN::__query-trigger-person-by-age 10)
<== f-6 (MAIN::__query-trigger-person-by-age 10)
==> f-7 (MAIN::__query-trigger-find-oldest)
<== f-7 (MAIN::__query-trigger-find-oldest)
Ann, age 12
Bob, age 14
David, age 11
Oldest is: Bob, age 14
FALSE
**/
Cheers,
Jason
-----------------------------------------------------------
Morris Technical Solutions LLC
[EMAIL PROTECTED]
(517) 304-5883