@Test public void testGetSubClassBehavior() { classes(_c, _d, _e); _kb.addEquivalentClass(_c, _d); _kb.addSubClass(_e, _d); final Set<Set<ATermAppl>> result = new HashSet<>(); result.add(Collections.singleton(ATermUtils.BOTTOM)); result.add(Collections.singleton(_e)); assertEquals(result, _kb.getSubClasses(_c, false)); }
@Test public void minCardinalityOnIrreflexive() { // related to #400 classes(_A); objectProperties(_p); individuals(_a); _kb.addIrreflexiveProperty(_p); _kb.addSubClass(_A, min(_p, 1, TOP)); _kb.addEquivalentClass(_A, oneOf(_a)); _kb.addEquivalentClass(TOP, _A); assertFalse(_kb.isConsistent()); }
@Test public void testNestedSubProperty() { classes(_A, _B, _C); objectProperties(_p, _q, _r); _kb.addEquivalentClass(_A, some(_p, some(_q, _C))); _kb.addEquivalentClass(_B, some(_p, some(_r, _C))); _kb.addSubProperty(_q, _r); final Taxonomy<ATermAppl> hierarchy = getHierarchy(); assertEquals(singletonSets(_A), hierarchy.getSubs(_B, true)); }
@Test public void testCyclicTBox1() { final KnowledgeBase kb = new KnowledgeBaseImpl(); final ATermAppl C = term("C"); kb.addEquivalentClass(C, not(C)); assertFalse(kb.isConsistent()); }
@Test public void roleAbsorptionWithQCR() { classes(_A, _B, _C); objectProperties(_p); _kb.addSubClass(_A, _B); _kb.addEquivalentClass(_A, min(_p, 1, _B)); _kb.addSubClass(_C, min(_p, 1, TOP)); assertNotSubClass(_kb, _C, _A); }
@Test public void cachedIntersectionWithTop2() { classes(_B, _C, _D); objectProperties(_p); _kb.addEquivalentClass(_C, TOP); _kb.addEquivalentClass(_D, TOP); _kb.addSubClass(_B, some(_p, and(_C, _D))); assertTrue(_kb.isConsistent()); assertFalse(_kb.isSatisfiable(not(_C))); assertFalse(_kb.isSatisfiable(not(_D))); assertTrue(_kb.isSatisfiable(_B)); }
@Test public void testDisjoint() { classes(_A, _B, _C, _D, _E, _F, _G); objectProperties(_p, _q, _r, _s); _kb.addSubClass(and(_A, _B), ATermUtils.BOTTOM); _kb.addSubClass(_A, _B); _kb.addDisjointClass(_C, _D); _kb.addEquivalentClass(_C, _D); final Taxonomy<ATermAppl> hierarchy = getHierarchy(); assertEquals(SetUtils.create(_A, _C, _D), hierarchy.getEquivalents(ATermUtils.BOTTOM)); }
@Test public void testRange5() { classes(_A, _B, _C, _D, _E, _F, _G); objectProperties(_p, _q, _r, _s); _kb.addRange(_p, _A); _kb.addSubClass(_B, and(_A, some(_p, _C))); _kb.addSubClass(_C, _A); _kb.addEquivalentClass(_D, some(_p, _C)); final Taxonomy<ATermAppl> hierarchy = getHierarchy(); assertEquals(singletonSets(_B, _C), hierarchy.getSubs(_A, true)); }
@Test public void test354() { // test case for issue #354. classes(_B); objectProperties(_p); individuals(_a, _b, _c); _kb.addFunctionalProperty(_p); _kb.addEquivalentClass(_B, oneOf(_b, _c)); assertFalse(_kb.isType(_a, not(_B))); _kb.isSatisfiable(_B); assertFalse(_kb.isType(_a, not(_B))); }
@Test public void testGuessingRule() { classes(_C, _D); objectProperties(_p); individuals(_a, _b); _kb.addEquivalentClass(_C, hasValue(inv(_p), _a)); _kb.addType(_a, card(_p, 2, _D)); _kb.addType(_a, card(_p, 3, TOP)); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSatisfiable(_C)); }
@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 testRoleAbsorptionWithPropertyChain() { classes(_A, _B, _C, _D); objectProperties(_p, _q, _r); _kb.addSubProperty(list(_p, _q), _r); _kb.addSubClass(_C, _B); _kb.addEquivalentClass(_C, some(_r, _D)); _kb.addSubClass(_A, some(_p, some(_q, _D))); assertTrue(_kb.isSubClassOf(_A, _C)); _kb.classify(); assertTrue(_kb.isSubClassOf(_A, _C)); }
@Test public void somePallInvPSubClass() { classes(_B, _C, _D, _E); objectProperties(_p); _kb.addSubClass(_D, _E); _kb.addEquivalentClass(_E, some(_p, _C)); _kb.addSubClass(_C, _B); _kb.addSubClass(_B, all(inv(_p), not(_D))); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSatisfiable(_C)); assertFalse(_kb.isSatisfiable(_D)); }
@Test public void testEL3b() { classes(_A, _C, _D, _E, _F, _G); objectProperties(_p); _kb.addSubClass(_A, some(_p, _C)); _kb.addSubClass(_C, _D); _kb.addSubClass(_C, _E); _kb.addSubClass(some(_p, _G), _F); _kb.addEquivalentClass(_G, and(_D, _E)); final Taxonomy<ATermAppl> hierarchy = getHierarchy(); assertEquals(singletonSets(_D, _E), hierarchy.getSupers(_G, true)); assertEquals(singletonSets(_F), hierarchy.getSupers(_A, true)); }
@Test public void simpleRestriction() { classes(_C); dataProperties(_p); individuals(_a, _b); _kb.addDatatypeDefinition(_D, restrict(INTEGER, minInclusive(literal(1)))); _kb.addEquivalentClass(_C, some(_p, _D)); _kb.addPropertyValue(_p, _a, literal(2)); _kb.addPropertyValue(_p, _b, literal(3)); assertTrue(_kb.isType(_a, _C)); assertTrue(_kb.isType(_b, _C)); }
@Test public void functionalSubTrans() { classes(_A); objectProperties(_r, _f); _kb.addFunctionalProperty(_f); _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 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 testDatatypeDefinition() { classes(_A); dataProperties(_p); individuals(_a); _kb.addDatatypeDefinition(_D, restrict(Datatypes.INTEGER, minInclusive(literal(10)))); _kb.addPropertyValue(_p, _a, literal(15)); _kb.addEquivalentClass(_A, some(_p, _D)); explainEntailment(_kb.isType(_a, _A), ATermUtils.makeEqClasses(_A, some(_p, _D)), ATermUtils.makeDatatypeDefinition(_D, restrict(Datatypes.INTEGER, minInclusive(literal(10)))), ATermUtils.makePropAtom(_p, _a, literal(15))); }
@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))))); }
@Test public void nestedRestriction() { classes(_C); dataProperties(_p); individuals(_a, _b); _kb.addDatatypeDefinition(_E, restrict(INTEGER, maxInclusive(literal(2)))); _kb.addDatatypeDefinition(_D, restrict(_E, minInclusive(literal(1)))); _kb.addEquivalentClass(_C, some(_p, _D)); _kb.addPropertyValue(_p, _a, literal(2)); _kb.addPropertyValue(_p, _b, literal(3)); assertTrue(_kb.isType(_a, _C)); assertFalse(_kb.isType(_b, _C)); }