Thank you very much!! Juan Sequeda, Ph.D Student Dept. of Computer Sciences The University of Texas at Austin www.juansequeda.com www.semanticwebaustin.org
On Wed, Apr 8, 2009 at 4:56 PM, Ernest Friedman-Hill <[email protected]>wrote: > For a JavaBean to have a recognized property named "primarykey", then the > class must have a public, non-void, no-argument method named, precisely, > "getPrimarykey" -- i.e., > > public String getPrimarykey() { ... } > > If it does not, then java,beans.Introspector (and thus Jess) won't think > there's such a property. > > > > On Apr 8, 2009, at 5:48 PM, Juan Sequeda wrote: > > Not sure if I explained myself correctly. >> >> Initially I have the following deftemplate >> >> (deftemplate PK (slot primarykey) (slot relation)) >> >> and several rules including >> >> (defrule isObjProperty4D >> "Determine Object Properties" >> ?fk <- (FK (foreignkey ?a)(relation ?r) {nonBinFK == TRUE}) >> (NN (attribute ?a)) >> (UNQ (attribute ?a)) >> (not(PK (primarykey ?a))) >> => >> (printout t ?fk.foreignkey " foreign key of "?r" is an Object Property >> and Functional Property and Inverse and Cardinality 1 (Rule 4D)" crlf) >> ) >> >> >> However, if I change the deftemplate to >> >> (deftemplate PK (declare (from-class PK))) >> >> where my PK class has: >> >> private String primarykey; >> private String relation; >> >> plus the constructor and getters, >> >> then I get an error in the rule previously mentioned where I have PK: >> >> Jess reported an error in routine Jesp.parsePattern. >> Message: No such slot primarykey in template MAIN::PK at token >> 'primarykey'. >> >> However, there is a slot "primarykey" in the PK class. And with the >> previous deftemplate it works. >> >> Any insights? >> >> Thanks >> Juan Sequeda, Ph.D Student >> Dept. of Computer Sciences >> The University of Texas at Austin >> www.juansequeda.com >> www.semanticwebaustin.org >> >> >> On Wed, Apr 8, 2009 at 3:40 PM, Ernest Friedman-Hill <[email protected]> >> wrote: >> Not sure what "the exact same slot names as before" would mean, as the >> names that JavaBeans getter methods must have are different from the >> property names that get mapped into Jess templates. But even given that, I >> think the property name "bRel" is problematic. Remember that Jess follows >> the JavaBeans spec by using the java.beans.Introspector class to find bean >> properties. The JavaBeans spec includes a special case for names like >> "URLBase" that start with multiple caps. If you have a getter name like >> "getBRel", the JavaBeans property is "BRel", not "bRel". I think the only >> way to have a property by this name is to use a BeanInfo class and >> explicitly declare all the properties for your class. It would be easier >> just to use well-formed names. >> >> >> >> On Apr 8, 2009, at 4:15 PM, Juan Sequeda wrote: >> >> Hi everybody >> >> I have everything working in Jess. I define the deftemplates with slots: >> >> (deftemplate Rel (slot name) (slot bRel)) >> >> Now I am to embed jess in my java application. I was following the Price >> example, and created a model: a class for each of the templates and then >> replace it in my rules file: >> >> (deftemplate Rel (declare (from-class Rel))) >> >> The java class has the exact slot names as I had before. However, the >> second slot, bRel, is not read. >> >> if I replace it back to the original deftemplate with slots, it does work. >> Any pointers? >> >> Thanks >> >> Jess reported an error in routine Jesp.parsePattern. >> Message: No such slot bRel in template MAIN::Rel at token 'bRel'. >> Program text: ( defrule isClass "Determine if a relation is a Class" ?r >> <- ( Rel { bRel at line 25 in file generateOntology.clp. >> at jess.Jesp.error(Unknown Source) >> at jess.Jesp.a(Unknown Source) >> at jess.InfixSlotParser.a(Unknown Source) >> at jess.InfixSlotParser.a(Unknown Source) >> at jess.InfixSlotParser.a(Unknown Source) >> at jess.InfixSlotParser.if(Unknown Source) >> at jess.InfixSlotParser.if(Unknown Source) >> at jess.Jesp.a(Unknown Source) >> at jess.Jesp.a(Unknown Source) >> at jess.Jesp.if(Unknown Source) >> at jess.Jesp.parseDefrule(Unknown Source) >> at jess.Jesp.parseExpression(Unknown Source) >> at jess.Jesp.promptAndParseOneExpression(Unknown Source) >> at jess.Jesp.parse(Unknown Source) >> at jess.Batch.batch(Unknown Source) >> at jess.Batch.batch(Unknown Source) >> at jess.Batch.batch(Unknown Source) >> at jess.Batch.batch(Unknown Source) >> at jess.Rete.batch(Unknown Source) >> at >> org.morphster.sql2sw.rules.OntologyEngine.<init>(OntologyEngine.java:34) >> at >> org.morphster.sql2sw.rules.OntologyEngine.main(OntologyEngine.java:43) >> >> >> >> Juan Sequeda, Ph.D Student >> Dept. of Computer Sciences >> The University of Texas at Austin >> www.juansequeda.com >> www.semanticwebaustin.org >> >> --------------------------------------------------------- >> Ernest Friedman-Hill >> Informatics & Decision Sciences Phone: (925) 294-2154 >> Sandia National Labs >> 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] >> . >> -------------------------------------------------------------------- >> >> >> > --------------------------------------------------------- > Ernest Friedman-Hill > Informatics & Decision Sciences, Sandia National Laboratories > PO Box 969, MS 9012, 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]. > -------------------------------------------------------------------- > >
