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); }