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