public String predict(Example e)
{
String prediction = "~" + e.targetValue();
if (null != currentBestHypothesis)
{
FOLExample etp = new FOLExample(folDSDomain, e, 0);
kb.clear();
kb.tell(etp.getDescription());
kb.tell(currentBestHypothesis.getHypothesis());
InferenceResult ir = kb.ask(etp.getClassification());
if (ir.isTrue())
{
if (trueGoalValue.Equals(e.targetValue()))
{
prediction = e.targetValue();
}
}
else if (ir.isPossiblyFalse() || ir.isUnknownDueToTimeout())
{
if (!trueGoalValue.Equals(e.targetValue()))
{
prediction = e.targetValue();
}
}
}
return prediction;
}