To add one more option to Bob's list: as Jess is, after all, a rule- based language, the intent is that most of the time you'll be doing this sort of thing from a rule.

(defrule my-rule
    ?fact <- (objects (o_id 90)))
    =>
    (modify ?fact (o_description NoKnife)))


On Jul 17, 2007, at 11:14 AM, Robert Kirby wrote:

The modify function expects at least two parameters: the first is the fact to be modified and the rest are slot name and modification value pairs. If your Java code has the fact-id, then it could be inserted into the string passed to executeCommand (which is deprecated in 7.0 for eval). For instance, if the fact-id for o_id==90 were 20090, then
  r.eval("(modify 20090 (o_description NoKnife))");
should work.

A Jess query could look up the fact within a function:
(defquery object-id-query
    "Look up fact id."
    (declare (variables ?id))
    ?fact <- (objects (o_id ?id)))
(deffunction modify-object-description
    "Modify objects instance description"
    (?id ?description)
    (bind ?results (run-query* object-id-query ?id))
    (?results next)  ; Assumes exactly one objects instance with ?id
    (modify (?results get fact) (o_description ?description))
    (close ?results)
    nil)

then run
  r.eval("(modify-object-description 90 NoKnife)");

Bob Kirby

At 04:19 AM 7/17/2007, M Ismail wrote:
Hi,
i am using a template:

(deftemplate objects
(slot o_id)
(slot o_description)
(slot o_is_visible)
(slot o_makes_sound)
(slot o_sound_volume)
(slot o_framenumber)
)

and i want to modify the o_decription of the object with o_id = 90
how can i do that?  if i use:

r.executeCommand("(modify (objects (o_id 90) (o_description NoKnife)))");

then i get errors and it doesnt work

best regards,
M. Ismail

_________________________________________________________________
Het meest spraakmakende nieuws vind je op www.msn.nl http:// www.msn.nl

--------------------------------------------------------------------
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 owner-jess- [EMAIL PROTECTED]
--------------------------------------------------------------------

---------------------------------------------------------
Ernest Friedman-Hill
Advanced Software Research          Phone: (925) 294-2154
Sandia National Labs                FAX:   (925) 294-2234
PO Box 969, MS 9012                 [EMAIL PROTECTED]
Livermore, CA 94550                 http://www.jessrules.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