@Override public boolean isSatisfiable(final OWLClassExpression classExpression) throws ReasonerInterruptedException, TimeOutException, ClassExpressionNotInProfileException, FreshEntitiesException, InconsistentOntologyException { refreshCheck(); try { return _kb.isSatisfiable(term(classExpression)); } catch (final PelletRuntimeException e) { throw convert(e); } }
@Test public void cachedIntersectionWithTop1() { classes(_B, _C, _D); objectProperties(_p); _kb.addEquivalentClass(_C, TOP); _kb.addSubClass(_B, some(_p, and(_C, _D))); assertTrue(_kb.isConsistent()); assertFalse(_kb.isSatisfiable(not(_C))); assertTrue(_kb.isSatisfiable(_D)); assertTrue(_kb.isSatisfiable(_B)); }
@Test public void cachedIntersectionUnsat() { classes(_B, _C, _D); objectProperties(_p); _kb.addDisjointClass(_C, _D); _kb.addSubClass(_B, some(_p, some(inv(_p), and(_C, _D)))); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSatisfiable(_C)); assertTrue(_kb.isSatisfiable(_D)); assertFalse(_kb.isSatisfiable(_B)); }
@Test public void testBottomSatisfiable() { _kb.addClass(human); explainEntailment(!_kb.isSatisfiable(ATermUtils.makeAnd(ATermUtils.makeNot(human), ATermUtils.BOTTOM))); }
@Test public void somePQallAnonInvR2() { classes(_C); objectProperties(_p, _q, _r); _kb.addSubProperty(list(_p, _q), _r); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSatisfiable(_C)); assertTrue(_kb.isSatisfiable(some(_q, all(inv(_r), not(_C))))); assertFalse(_kb.isSatisfiable(and(_C, some(_p, some(_q, all(inv(_r), not(_C))))))); }
@Test public void testDisjointSelf() { final KnowledgeBase kb = new KnowledgeBaseImpl(); final ATermAppl A = term("A"); final ATermAppl p = term("p"); kb.addClass(A); kb.addObjectProperty(p); kb.addDisjointClasses(Arrays.asList(A, self(p))); kb.classify(); assertTrue(kb.isSatisfiable(A)); }
@Test public void someFunctionalP() { classes(_C, _D); objectProperties(_p); _kb.addFunctionalProperty(_p); _kb.addSubClass(_D, some(inv(_p), _C)); _kb.addSubClass(_C, some(_p, not(_D))); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSatisfiable(_C)); assertFalse(_kb.isSatisfiable(_D)); }
@Test public void someSubPallInvP() { classes(_C, _D); objectProperties(_p, _q); _kb.addSubProperty(_q, _p); _kb.addSubClass(_D, some(_q, _C)); _kb.addSubClass(_C, all(inv(_p), not(_D))); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSatisfiable(_C)); assertFalse(_kb.isSatisfiable(_D)); }
@Test public void somePallInvSubP() { classes(_C, _D); objectProperties(_p, _q); _kb.addSubProperty(_p, _q); _kb.addSubClass(_D, some(_p, _C)); _kb.addSubClass(_C, all(inv(_q), not(_D))); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSatisfiable(_C)); assertFalse(_kb.isSatisfiable(_D)); }
@Test public void functionalInv() { classes(_C, _D); objectProperties(_f); _kb.addFunctionalProperty(_f); _kb.addSubClass(_D, some(inv(_f), _C)); _kb.addSubClass(_C, some(_f, not(_D))); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSatisfiable(_C)); assertFalse(_kb.isSatisfiable(_D)); }
@Test public void somePallInvPwithReflexivity() { classes(_C, _D); objectProperties(_p, _r); _kb.addReflexiveProperty(_r); _kb.addSubClass(_D, some(_p, _C)); _kb.addSubClass(_C, all(inv(_p), not(_D))); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSatisfiable(_C)); assertFalse(_kb.isSatisfiable(_D)); }
@Test public void max1Inv() { classes(_C, _D); objectProperties(_f); _kb.addSubClass(_D, some(inv(_f), _C)); _kb.addSubClass(_C, and(some(_f, not(_D)), max(_f, 1, TOP))); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSatisfiable(_C)); assertFalse(_kb.isSatisfiable(_D)); }
@Test public void somePQallInvR() { classes(_C, _D); objectProperties(_p, _q, _r); _kb.addSubProperty(list(_p, _q), _r); _kb.addSubClass(_D, some(_p, some(_q, _C))); _kb.addSubClass(_C, all(inv(_r), not(_D))); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSatisfiable(_C)); assertFalse(_kb.isSatisfiable(_D)); }
@Test public void test518() { // tests if the interaction between some values restriction and inverses ends up creating a cycle in the // completion graph classes(_A, _B, _C); objectProperties(_p, _q); _kb.addInverseFunctionalProperty(_p); _kb.addSubProperty(_q, inv(_p)); assertFalse(_kb.isSatisfiable(some(_p, some(_q, all(_p, BOTTOM))))); }
@Test public void deadlockBlock() { classes(_C, _D); objectProperties(_p, _q, _r); _kb.addSubClass(_D, BOTTOM); assertTrue(_kb.isConsistent()); assertFalse(_kb.isSatisfiable(and(some(_p, some(_p, _D)), some(_p, _D)))); }
@Test public void transitivityInverse() { classes(_C, _D); objectProperties(_p, _q, _r); _kb.addTransitiveProperty(_r); _kb.addSubProperty(_r, _q); _kb.addSubClass(_D, all(_q, _C)); assertTrue(_kb.isConsistent()); assertFalse(_kb.isSatisfiable(some(_p, and(_D, some(_p, and(some(inv(_r), _D), some(_r, not(_C)))))))); }
@Test public void propertyChainInverse() { classes(_C, _D); objectProperties(_p, _q, _r); _kb.addSubProperty(list(_r, _p), _q); _kb.addSubClass(_D, all(_q, _C)); assertTrue(_kb.isConsistent()); assertFalse(_kb.isSatisfiable(some(_p, and(_D, some(_p, and(some(inv(_r), _D), some(_p, not(_C)))))))); }
@Test public void propertyChain() { classes(_C, _D); objectProperties(_p, _q, _r, _s); _kb.addDisjointClass(_C, _D); _kb.addSubProperty(list(_p, inv(_q), _r, _s), _s); _kb.addSubClass(_D, all(_s, _C)); _kb.addSubClass(_D, some(_p, some(inv(_q), some(_r, some(_s, _D))))); assertTrue(_kb.isConsistent()); assertFalse(_kb.isSatisfiable(_D)); }
@Test public void maxCardinalitySubTrans() { classes(_A); objectProperties(_r, _f); _kb.addSubClass(TOP, max(_f, 1, TOP)); _kb.addTransitiveProperty(_r); _kb.addSubProperty(_f, _r); _kb.addEquivalentClass(_D, and(_C, some(_f, not(_C)))); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSatisfiable(and(not(_A), some(inv(_f), _A), all(inv(_r), some(inv(_f), _A))))); }
@Test public void doubleBlockingExample() { classes(_C, _D); objectProperties(_f, _r); _kb.addTransitiveProperty(_r); _kb.addSubProperty(_f, _r); _kb.addEquivalentClass(_D, and(_C, some(_f, not(_C)))); _kb.addSubClass(TOP, max(_f, 1, TOP)); assertTrue(_kb.isConsistent()); assertFalse(_kb.isSatisfiable(and(not(_C), some(inv(_f), _D), all(inv(_r), some(inv(_f), _D))))); }