I hope the error message makes it clear that at the line where you're
calling "assert", there is no variable named ?pn which is in
scope. The only variable ?pn is defined inside a "not" CE, and
variables defined inside a "not" are not available outside of that
"not". Think about it: what this line says is that if there is not an
order for some part number, and that part number (which doesn't exist)
is not an ipod nano, then place such an order. But this matches not only
the existing ipod nano product, but all possible ipod nano products --
i.e., any value for ?pn would satisfy this rule. Since there are an
infinite number of possible values, this rule doesn't make
sense. Instead, you need to move the ipod nano Product pattern up to
the top of the rule, outside of the "not", so that the rule specifies
that it's looking for the one concrete value of ?pn that makes sense.

I think vsingh wrote:
[Charset utf-8 unsupported, filtering to ASCII...]
> 
> Pls help me debug this error...
> 
> 
> Jess> (defrule recommendipodnano (object(is-a Customer)(customer-id ?id)) 
> (not (and (object(is-a SalesOrder)(OrderNumber ?o)(customer-id ?id))         
> (object(is-a LineItem)(OrderNumber ?o)(partnumber ?pn))         
> (object(is-a Product)(partnumber ?pn)(name ___ipod nano___))))  => (assert
> (object(is-a Recommend)(OrderNumber ?o)(partnumber ?pn))) 
> )
> TRUE
> Jess> (run)
> Jess reported an error in routine Context.getVariable
>       while executing (assert (MAIN::object (is-a Recommend) (is-a-name nil)
> (OBJECT nil) (rdfs:label ) (owl:versionInfo ) (rdfs:comment ) (rdfs:member )
> (:NAME ) (rdfs:isDefinedBy ) (rdfs:seeAlso ) (owl:differentFrom )
> (owl:sameAs ) (rdf:value ) (protege:inferredType ) (rdf:type ) (name )
> (category ) (partnumber ?pn) (price ) (requires ) (address ) (customer-id )
> (OrderNumber ?o) (quantity )))
>       while executing defrule MAIN::recommendipodnano
>       while executing (run).
>   Message: No such variable pn.
>   Program text: ( run )  at line 39.
>       at jess.Context.getVariable(Unknown Source)
>       at jess.Variable.resolveValue(Unknown Source)
>       at jess.Fact.a(Unknown Source)
>       at jess.bj.call(Unknown Source)
>       at jess.ep.a(Unknown Source)
>       at jess.Funcall.execute(Unknown Source)
>       at jess.Defrule.a(Unknown Source)
>       at jess.Activation.if(Unknown Source)
>       at jess.a8.a(Unknown Source)
>       at jess.a8.int(Unknown Source)
>       at jess.Rete.run(Unknown Source)
>       at jess.a0.call(Unknown Source)
>       at jess.ep.a(Unknown Source)
>       at jess.Funcall.execute(Unknown Source)
>       at jess.Jesp.a(Unknown Source)
>       at jess.Jesp.for(Unknown Source)
>       at jess.Jesp.parse(Unknown Source)
>       at jess.Jesp.parse(Unknown Source)
>       at jess.Main.execute(Unknown Source)
>       at JessTab.JessTabEngine.run(JessTabEngine.java:114)
>       at java.lang.Thread.run(Unknown Source)
> .......Pls reply at earliest....thanks
> 
> -- 
> View this message in context: 
> http://www.nabble.com/No-such-Variable-error-tf2123743.html#a5858821
> Sent from the Jess forum 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]
> --------------------------------------------------------------------
> 



---------------------------------------------------------
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://herzberg.ca.sandia.gov
--------------------------------------------------------------------
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