}
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()) {