public AnswerHandler(FOLKnowledgeBase kb, Sentence aQuery,
long maxQueryTime, FOLModelElimination folModelElimination)
{
finishTime = System.DateTime.UtcNow.Ticks + maxQueryTime;
Sentence refutationQuery = new NotSentence(aQuery);
// Want to use an answer literal to pull
// query variables where necessary
Literal answerLiteral = kb.createAnswerLiteral(refutationQuery);
answerLiteralVariables = kb.collectAllVariables(answerLiteral
.getAtomicSentence());
// Create the Set of Support based on the Query.
if (answerLiteralVariables.Count > 0)
{
Sentence refutationQueryWithAnswer = new ConnectedSentence(
Connectors.OR, refutationQuery, (Sentence)answerLiteral
.getAtomicSentence().copy());
sos = folModelElimination.createChainsFromClauses(kb
.convertToClauses(refutationQueryWithAnswer));
answerChain.addLiteral(answerLiteral);
}
else
{
sos = folModelElimination.createChainsFromClauses(kb
.convertToClauses(refutationQuery));
}
foreach (Chain s in sos)
{
s.setProofStep(new ProofStepGoal(s));
}
}