public Rule rule(String rule) { try { final Rule r = parser.parseRule(rule); hybridKB.getProgram().add(r); return r; } catch (final ParseException e) { throw new RuntimeException(e); } }
public void assertNegative(String query) { try { final NoHRRecursiveDescentParser parser = new NoHRRecursiveDescentParser(new DefaultVocabulary(ontology)); if (!query.endsWith(".")) query += "."; final Query q = parser.parseQuery(query); for (final Literal l : q.getLiterals()) { if (l instanceof NegativeLiteral) throw new IllegalArgumentException("literals must be positive"); if (!l.isGrounded()) throw new IllegalArgumentException("literals must be grounded"); hybridKB.getProgram().add(Model.rule(l.getAtom())); } Assert.assertTrue("should have inconsistent answers", hasAnswer(query, false, false, true)); Assert.assertFalse( "shouldn't have non inconsistent answers", hasAnswer(query, true, true, false)); } catch (final ParseException e) { fail(e); } }
private boolean hasAnswer( String query, boolean trueAnswers, boolean undefinedAnswers, boolean inconsistentAnswers) { try { final Query q = parser.parseQuery(query); return hybridKB.hasAnswer(q, trueAnswers, undefinedAnswers, inconsistentAnswers); } catch (final OWLProfilesViolationsException e) { Assert.fail(e.getMessage()); return false; } catch (final UnsupportedAxiomsException e) { Assert.fail(e.getMessage()); return false; } catch (final ParseException e) { Assert.fail(e.getMessage()); return false; } catch (final IllegalArgumentException e) { Assert.fail(e.getMessage()); return false; } }