>> I am using Jess with Protege.  I want to write a rule that says: run
>> when you get an oject FOO with a non-empty slot called 'name' and
>> where there is no fact foo with property bar equal to the slot
>> value.  I would intuitively wirte that this way:
> (defrule doStuff ""
>  ?o <- (object (is-a FOO) (name ?name&~nil))
>  (not (foo (bar ?name)))
> =>
> ...
> )

But such a syntax seems to fail:

defrule doStuff ""
  ?o <- (object (is-a FOO) (name ?name&~nil))
  (not (foo (bar (?name trim))))

I changed that to:

defrule doStuff ""
  ?o <- (object (is-a FOO) (name ?name&~nil))
  (not (foo (bar ?name2&:(eq ?name (?name2 trim)))))

Any comment?

This e-mail is intended only for the above addressee. It may contain
privileged information. If you are not the addressee you must not copy,
distribute, disclose or use any of the information in it. If you have
received it in error please delete it and immediately notify the sender.
Security Notice: all e-mail, sent to or from this address, may be
accessed by someone other than the recipient, for system management and
security reasons. This access is controlled under Regulation of
Investigatory Powers Act 2000, Lawful Business Practises.

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