It will be great to have a Gemini that accepts new lexical items at runtime.
I'm not sure if the current approach to this will meet your needs; some new design
work may be needed.
Currently, I'm not aware of any dynamic changes made to SR grammars by agents (but
this is something we've wanted, and something may already be in place).
With respect to the original NL agent, what happens is that the various agents
globally post their lexical items on the facilitator's global data area (the
blackboard). This is done by calling
write_bb(category, [LogicalPredicate, ListOfTokens]),
where ListOfTokens is in the format returned by QP library predicate
read_sent:chars_to_words/2, and LogicalPredicate indicates what should be the
result of recognizing the tokens in ListOfTokens.
If you go to
/homedir/oaa/agents/stable/
and do this:
grep write_bb\( *.pl | more
you'll see lots of examples of words being posted by different agents.
Then, the NL agent looks up these lexical items on the blackboard by calling
read_bb/2. (So, the NL agent can construct a simple logical form using the
logical predicates that are associated with the various lexical items.) To see
how this is used, look in nl.pl, and search for calls to get_from_bb/2.
- Dave