Hi Wolfgang, Thank you for all of your help. I finally got the rule to work as I wanted:
(defrule model-completion-example (BooleanPropertyImpl (OBJECT ?property)) (PageImpl (OBJECT ?container)) (test ((?container getChildren) contains ?property)) (test (eq (?property getEditor) nil)) => ... ) Cheers Jevon On Tue, Mar 8, 2011 at 9:06 PM, Wolfgang Laun <wolfgang.l...@gmail.com> wrote: > As the message says: children is some Java thing, but not a Jess list. (A > Java array would map to a Jess list.) > > Use the Java method for testing membership: > > ( test ( (?container getChildren) contains ?property) ) > > -W > > > On 8 March 2011 03:16, Jevon Wright <je...@jevon.org> wrote: >> >> Hi all, >> >> Thanks for your suggestions Ernest and Wolfgang, they definitely >> helped. I am now using the following rule: >> >> (defrule check-printout3 >> (BooleanPropertyImpl (OBJECT ?property)) >> (PageImpl (OBJECT ?container)) >> (test >> (member$ ?property (?container getChildren)) >> ) >> => >> ((System.out) println "Property with a container:") >> ((System.out) println ?property) >> ((System.out) println "IN:") >> ((System.out) println ?container) >> ) >> >> However I am still having a problem with accessing the children of the >> object. I now get the following error: >> >> Jess reported an error in routine Value.listValue >> while executing (member$ ?property(0,4,-1) (call >> ?container(1,6,-1) getChildren)) >> while executing rule LHS (Node2) >> while executing rule LHS (TECT). >> Message: >> '<Java-Object:org.eclipse.emf.ecore.util.EObjectContainmentEList>' >> is JAVA_OBJECT, not a list. >> at jess.Value.a(Unknown Source) >> >> As the message describes, PageImpl.getChildren() returns an >> org.eclipse.emf.ecore.util.EObjectContainmentEList. However, this >> object is an object that implements java.util.List and >> java.util.Collection, and extends java.util.AbstractList [1]. >> >> Any suggestions on how to access the contents of this list? Or do I >> need to write some form of a wrapper or translation layer? Thanks for >> all your help. >> >> Jevon >> >> [1]: >> http://download.eclipse.org/modeling/emf/emf/javadoc/2.4.2/org/eclipse/emf/ecore/util/EObjectContainmentEList.html >> >> On Sat, Mar 5, 2011 at 1:31 AM, Ernest Friedman-Hill <ejfr...@sandia.gov> >> wrote: >> > >> > Hi Jevon, >> > Read number 17 in our FAQ: http://www.jessrules.com/jess/FAQ.shtml#Q17 >> > The right way to write your final rule might be something like this, >> > depending on what kind of facts these are: >> > (defrule debug-four >> > (BooleanPropertyImpl (OBJECT ?property)) >> > (PageImpl (OBJECT ?container)) >> > (test (progn >> > (bind ?children (get-member ?container children))) >> > (member$ ?property ?children))) >> > => >> > ((System.out) println "...") >> > ) >> > >> > On Mar 4, 2011, at 2:18 AM, Jevon Wright wrote: >> > >> > Hi all, >> > >> > I am trying to write a Jess rule program to perform inference on an >> > EMF-based model instance. I can successfully load all of the model >> > elements into Jess, and check that these facts all exist: >> > >> > (defrule debug-one >> > ?property <- (BooleanPropertyImpl) >> > => >> > ((System.out) println "Found property:") >> > ((System.out) println ?property) >> > ) >> > >> > This rule works fine, and all of the BooleanPropertyImpl in the model >> > are found successfully. But I am having trouble with accessing members >> > of the elements, using either get-member, or call, or bind. >> > >> > (defrule debug-three >> > ?container <- (BooleanPropertyImpl) >> > (bind ?name (get-member ?container name)) >> > => >> > ((System.out) println "Found name:") >> > ((System.out) println ?name) >> > ) >> > >> > I expect this to bind object.getName() to ?name, but instead the parse >> > fails: >> > >> > Jess reported an error in routine Jesp.parsePattern. >> > Message: Bad slot value at token '('. >> > Program text: ( defrule debug-three ?container <- ( >> > BooleanPropertyImpl ) ( bind ?name ( at line 44 in file >> > rules/jess-test.clp. >> > at jess.Jesp.error(Unknown Source) >> > >> > What does this mean? Is this a syntax error? Is this an error with my >> > Java objects? Am I missing a runtime library? Should I be importing >> > other packages? I can't think of any other way to approach this >> > problem. >> > >> > The reason I am using get-member is that I was trying to see if an >> > elements' List contains another element: >> > >> > (defrule debug-four >> > ?property <- (BooleanPropertyImpl) >> > ?container <- (PageImpl) >> > (bind ?children (get-member ?container children))) >> > (member$ ?property ?children) >> > => >> > ((System.out) println "...") >> > ) >> > >> > However, this also fails with the exception above. Any ideas or >> > suggestions would be most welcome. :) >> > >> > Thanks >> > Jevon >> > >> > >> > -------------------------------------------------------------------- >> > 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. >> -------------------------------------------------------------------- >> > > -------------------------------------------------------------------- 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. --------------------------------------------------------------------