This is mainly a minor feature enhancement and bug fix release.
Summary of changes:
1. The bot used to get the wild-card matches mixed up if processing more than one sentence. This is now fixed with the appropriate unit tests written and the other applications updated. A new class "SubRequest" now encapsulates a query to the Graphmaster and holds the wild-card matches.
2. The normalization process for applying changes is now fixed so it doesn't always return uppercase. The case of the normalized result should match that of the user's raw input plus any replacements. This means <star/> tags return exactly what the user inputted, rather than a capitalized version of it.
3. There is the potential that the bot could get into an infinite loop when processing the template tag, especially if it encountered a srai tag that ultimately led back to itself. This hole has now been plugged in two ways:
a) Each time an AIML tag is processed the request is checked to make sure it hasn't timed out.
b) When the srai class calls a sub-request with the new path the new request object has the same StartedOn value as the original request.
4. Made changes to the way the path for queries to the Graphmaster are dealt with. It is now "backwards": (topic <topic> that <that> User input). This should provide a slight increase in efficiency.
5. Added some new tests and code for stopping a bot from accepting user input (something that should happen should it be changing the graphmaster for example). Updated other projects to reflect these changes too.
6. Changed the behaviour of the default constructor in the "Bot" class. Removed the loading of config files from the constructor so you now have to call the loadSettings() method to load the configuration files.
7. Included a very simple Web-services based example application.