@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); }
assertNotSubClass(kb, C, A); assertNotSubClass(kb, C, B); assertNotSubClass(kb, A, C); assertNotSubClass(kb, B, C); assertFalse(kb.isType(a, C)); assertFalse(kb.isType(b, C));
@Test public void testQualifiedCardinalityObjectProperty() { final ATermAppl sub = term("sub"); final ATermAppl sup = term("sup"); classes(_c, _d, sub, sup); objectProperties(_p, _f); _kb.addFunctionalProperty(_f); _kb.addSubClass(sub, sup); assertSatisfiable(_kb, and(min(_p, 2, and(_c, _d)), max(_p, 2, _c), some(_p, or(and(_c, not(_d)), _c)))); assertSubClass(_kb, min(_p, 4, TOP), min(_p, 2, TOP)); assertNotSubClass(_kb, min(_p, 1, TOP), min(_p, 2, TOP)); assertNotSubClass(_kb, min(_p, 1, _c), min(_p, 1, _d)); assertNotSubClass(_kb, and(some(_p, _c), some(_p, not(_c))), min(_p, 2, _d)); assertSubClass(_kb, min(_p, 3, _c), min(_p, 2, _c)); assertSubClass(_kb, min(_p, 3, _c), min(_p, 2, TOP)); assertSubClass(_kb, min(_p, 2, _c), min(_p, 2, TOP)); assertNotSubClass(_kb, min(_p, 2, _c), min(_p, 2, _d)); assertSubClass(_kb, min(_p, 2, and(_c, _d)), some(_p, _c)); assertSubClass(_kb, max(_p, 1, sup), max(_p, 2, sub)); assertSubClass(_kb, and(max(_f, 1, TOP), all(_f, _c)), max(_f, 1, _c)); assertSubClass(_kb, and(min(_p, 2, _c), min(_p, 2, not(_c))), min(_p, 4, TOP)); }
@Test public void testQualifiedCardinalityDataProperty() { final KnowledgeBase kb = new KnowledgeBaseImpl(); final ATermAppl c = restrict(Datatypes.INTEGER, minInclusive(literal(10))); final ATermAppl d = restrict(Datatypes.INTEGER, maxInclusive(literal(20))); final ATermAppl p = term("p"); final ATermAppl f = term("f"); final ATermAppl sub = Datatypes.SHORT; final ATermAppl sup = Datatypes.INTEGER; kb.addDatatype(sub); kb.addDatatype(sup); kb.addDatatypeProperty(p); kb.addDatatypeProperty(f); kb.addFunctionalProperty(f); assertSatisfiable(kb, and(min(p, 2, and(c, d)), max(p, 2, c), some(p, or(and(c, not(d)), c)))); assertSubClass(kb, min(p, 4, TOP_LIT), min(p, 2, TOP_LIT)); assertNotSubClass(kb, min(p, 1, TOP_LIT), min(p, 2, TOP_LIT)); assertNotSubClass(kb, min(p, 1, c), min(p, 1, d)); assertNotSubClass(kb, and(some(p, c), some(p, not(c))), min(p, 2, d)); assertSubClass(kb, min(p, 3, c), min(p, 2, c)); assertSubClass(kb, min(p, 3, c), min(p, 2, TOP_LIT)); assertSubClass(kb, min(p, 2, c), min(p, 2, TOP_LIT)); assertNotSubClass(kb, min(p, 2, c), min(p, 2, d)); assertSubClass(kb, min(p, 2, and(c, d)), some(p, c)); assertSubClass(kb, max(p, 1, sup), max(p, 2, sub)); assertSubClass(kb, and(max(f, 1, TOP_LIT), all(f, c)), max(f, 1, c)); assertSubClass(kb, and(min(p, 2, c), min(p, 2, not(c))), min(p, 4, TOP_LIT)); }