Okay, as mentioned previously, drools is 100% New Code, still.
Instead of starting with Natural Language functionality, though, I'm opting for the simpler java syntax, interpreted at run-time. Instead of using BeanShell or some other black-box expression interpreter, I'm of course, rolling my own. org.drools.exprtree.* now contains the expression tree for java expressions. (Well, most of them, so far, aside from logic && and ||, and bitwsie stuff, at this point). Any parser can build them, and then the engine can muck with them as it likes. Building my own trees gives me better access for decomposing complex expressions into an effecient RETE network. ie, this expression: Person person; person.getName().equals( person.getFather().getName() ); I can break that down into nodes that represent the following: person -> name person -> father So, knowing everyone's name, and everyone's parent, it's quick'n'easy to join across to find folks who's name is the same as their dad's. That expression turns into basically 2 tables, since rete goes relational on us: Table A has columns 'person' and 'name', while Table B has columns 'person' and 'father'. Join A to B to A, and select across where A.person==B.person B.father=A2.person A.name==A2.name And viola. Of course, won't perform the entire join every time a new fact is added. Only need to perform the portion of the permutations that include that fact row. Signing off. -bob _______________________________________________ drools-interest mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/drools-interest