jess-users  

Re: JESS: defquery parameters

Ernest Friedman-Hill
Fri, 13 Nov 2009 10:05:26 -0800

Hmmm. Indeed, you're right, and it's a limitation of the implementation, not easily lifted. I'll add it to the issues list.


On Nov 13, 2009, at 12:20 PM, Michael Welter wrote:

Can't a list be passed to defquery?

(deftemplate myfact
 (slot a)
 (slot b)
 (multislot c)
)

(deffacts f1
 (myfact (a 1)(b 1)(c (create$ p q c)))
 (myfact (a 1)(b 2)(c (create$ p q r)))
 (myfact (a 1)(b 3)(c (create$ p q z)))
)

(defquery q1
 (declare (variables ?pa ?pc))      ; $?pc throws an error
 (myfact
   (a ?pa)
   (b ?b)
   (c $?v&:(eq $?v $?pc))     ; won't work
   ;(c $?v&:(eq (nth$ 1 $?v) ?pc))     ; works
 )
)

(defrule r1
 (initial-fact)
=>
 (try
   (bind ?result (run-query* q1 1 (create$ p q r)))
 catch
   (printout t "query failed" crlf)
 )
 (while (?result next) do
   (printout t
     "b: " (?result getString b)
   crlf)
 )
)


Thanks


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

---------------------------------------------------------
Ernest Friedman-Hill
Informatics & Decision Sciences          Phone: (925) 294-2154
Sandia National Labs
PO Box 969, MS 9012                            ejfr...@sandia.gov
Livermore, CA 94550                             http://www.jessrules.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.
--------------------------------------------------------------------