2009-05-22 14:18:08 UTC
That would be great if OpenCyc was part of the AIMLBot.
I ended up starting with the 2.5 tag first becasue the 3.0 seemed like it was in the early stages of a complete rewrite. But the design looked very good for 3.0 and would have rather used it.
My code is integrated with yours into a project opensim4opencog
I renamed the namespace AIMLBot -> RTParser (recursive template parser).
I was secretly afraid to have a top-level SVN directory containing the word "AIML" mainly becasue we wanted the bot to use some AIML methodology for selecting engine rules but not be yet another AIML bot for secondlife. For example, feeding low level server events and letting AIML translating them to high-level events.
Other renames in Code:
Bot --> RTBot
Three members called ".bot" became ".Processor",".Proc",".RProcessor"
Mainly to avoid accidental conflicts later.
It's totally opensrc:
The base DLL
http://code.google.com/p/opensim4opencog/source/browse/trunk/#trunk/RTParser
The "Main"
http://code.google.com/p/opensim4opencog/source/browse/trunk/Actions/Communication/AimlCommand.cs
The Interesting AIML files:
http://code.google.com/p/opensim4opencog/source/browse/trunk/bin/aiml/Y_OpenCyc.aiml
http://code.google.com/p/opensim4opencog/source/browse/trunk/bin/aiml/Z_Secondlife.aiml
Some wilder changes:
<get>foo</get> is equiv to <get name="foo"/>
(this is so things like) <get><star/></get> was possible.
The same with:
<set>abc a b c</set> is equiv to <set name="abc">a b c</set>
Just the first token becomes the "name"
Added to Bot:
myBot.AddExecHandler(string lang,delegate string(string cmd, User user ));
for things like <system lang="lisp"> <system lang="subl"> <system lang="shell"> <system lang="c#"> <system lang="secondlife"> etc
(<guard> implicitly assumes it is also surrounded by a <system> tag)
<cycsystem> is pretty much a <system lang="subl">
That is a quick/incomplete overview of some of the things.
I tried to be a good boy at first using the CustomTagHandlers .. Added a the default constructor and things but couldn't quite get it working plus with some of the hacks to get/set ended up not loading the extra cyc tags thru the custom tag handlers. But possible I could give it a try again.
Although there will be some footprints anyways to AIMLBot such as the loading of custom <system> tag handler hooks I mentioned above.
The guard requires saving at each leaf node (where we save the template.OuterXML) maybe save the ref to additional XMLElements that were held inside <category> .
How ready is 3.0 right now? Can you write a quick ConsoleChat Program.cs wrapper around it? If so, I can probably help with some patches. We can go over decide how how much could be late loaded (Tag handlers or whatnot) vs the impact to the the final AIMLBot.dlls... Our hope is the lowest possible changes needed .. but any changes we do we make it even easier for people to support other things like SQL and other database interactions.