How to build and develop the code
What
SolrSherlock is a system of interconnected software
agents. The game is to attend to all of those dependencies. Dependencies occur at two different times in the development process; they may be the same, and they may be different, depending on the situation:
- Compile time, where dependencies are related to Java and other resources while building the code
- Run time, where dependencies are the same as those for compile time, but may also require other components to be available, typically for communication
WHY
Developing SolrSherlock is a process of learning many different technologies, from Solr, to UIMA, and others like OpenNLP. Our intent is to create nodes here at DebateGraph which outline what we are learning. For this document, let us focus on the big picture, which is a description of the overall architecture. We begin by repeating an image found
here:
The image makes clear the
chain of events in which our
SolrAgentFramework exists. It is clear that the agent framework can exist and function outside of the context of Solr; simply don't make a connection to the Update Interceptor, and the framework is still free to perform whatever tasks it is given through any other messages to Agent Coordinator.
But, inside Solr, the prime directive for SolrSherlock, the system exists to accept new documents sent into Solr by users at web browsers, and to study those documents for many purposes, which include:
- Topic map maintenance: a merge agent asks Have I seen this before? and makes decisions on how to maintain the topic map in the face of new information
- Study that new information in terms of its relevance to known information or emerging ideas
From a slightly different perspective, the image above is re-drawn as the following image, originally found
here:
This image provides a broader exposure to how the agent framework interacts with the SolrSherlock universe, in this case, through the
TellAskAgent.
The term
Condo Server is used to name a web server which provides a
social interface to a Solr-based topic map. That server is capable of allowing SolrSherlock, through the TellAskAgent, to hold
conversations with users logged into the Condo Server. We think of the term
TellAsk in these contexts:
- Tell: a user (or other agent) tells SolrSherlock something such as:
- A command, e.g. Study this url: http://foo.org/
- A new bit of information, which could be one of:
- An answer to SolrSherlock's question
- A suggestion for a new topic or definition
- Ask: where a user (or other agent) asks a question to SolrSherlock
In many cases, a
conversation with SolrSherlock will have the feel of a
chatbot conversation, such as with
Eliza or
AliceBot.
HOW
Our prototype development occurs using Eclipse as a development environment. We use Github as our repository. Until we Mavenize our projects, we include all of the libraries (jar files) necessary for both compiling and running; some of those jar files are our own code, while most are libraries from other open source projects.