@Test public void propertyChainInstances() { // Tests #367 objectProperties(_p, _q, _r); individuals(_a, _b, _c); _kb.addSubProperty(list(_p, _q), _r); _kb.addPropertyValue(_p, _a, _b); _kb.addPropertyValue(_q, _b, _c); explainEntailment(_kb.hasPropertyValue(_a, _r, _c), ATermUtils.makePropAtom(_p, _a, _b), ATermUtils.makePropAtom(_q, _b, _c), ATermUtils.makeSubProp(list(_p, _q), _r)); }
@Ignore("Fails due to #294") @Test public void propertyChainNested() { // Tests #367, #294 classes(_A, _B, _C); objectProperties(_p, _q, _r, _f); _kb.addSubProperty(list(_p, _q), _p); _kb.addSubProperty(list(_p, _r), _f); _kb.addSubProperty(_r, _q); _kb.addSubClass(_A, some(_p, some(_r, some(_r, _B)))); _kb.addSubClass(some(_f, _B), _C); explainEntailment(_kb.isSubClassOf(_A, _C), ATermUtils.makeSub(_A, some(_p, some(_q, _B))), ATermUtils.makeSub(some(_r, _B), _C), ATermUtils.makeSubProp(list(_p, _q), _r), ATermUtils.makeSubProp(list(_r, _p), _f)); }
@Test public void testELExpressivityAnonymousInverseChain() { classes(_C, _D); objectProperties(_p, _q, _r); _kb.addSubProperty(list(_p, inv(_q)), _r); _kb.addSubClass(_C, some(_p, _D)); assertFalse(_kb.getExpressivity().isEL()); assertFalse(SimplifiedELClassifier.class.equals(_kb.getTaxonomyBuilder().getClass())); } }
@Test public void propertyChainClasses() { // Tests #367 classes(_A, _B, _C); objectProperties(_p, _q, _r); _kb.addSubProperty(list(_p, _q), _r); _kb.addSubClass(_A, some(_p, some(_q, _B))); _kb.addSubClass(some(_r, _B), _C); explainEntailment(_kb.isSubClassOf(_A, _C), ATermUtils.makeSub(_A, some(_p, some(_q, _B))), ATermUtils.makeSub(some(_r, _B), _C), ATermUtils.makeSubProp(list(_p, _q), _r)); }
@Ignore("See ticket #294") @Test public void testNestedPropertyChains() { individuals(_a, _b, _c, _d); objectProperties(_p, _q, _r, _s, _f); _kb.addTransitiveProperty(_r); _kb.addTransitiveProperty(_s); _kb.addSubProperty(list(_p, _q), _r); _kb.addSubProperty(list(_r, _s), _f); _kb.addPropertyValue(_p, _a, _b); _kb.addPropertyValue(_q, _b, _c); _kb.addPropertyValue(_s, _c, _d); assertTrue(_kb.hasPropertyValue(_a, _f, _d)); assertTrue(_kb.isType(_a, hasValue(_f, _d))); }
@Test public void testRoles2c() { classes(_A, _B, _C, _D, _E, _F, _G); objectProperties(_p, _q, _r, _s); _kb.addSubProperty(list(_p, _q), _p); _kb.addSubProperty(list(_p, _q), _r); _kb.addSubClass(_A, some(_p, _B)); _kb.addSubClass(_B, some(_q, _C)); _kb.addSubClass(_C, some(_q, _D)); _kb.addSubClass(some(_r, _D), _E); final Taxonomy<ATermAppl> hierarchy = getHierarchy(); assertEquals(singletonSets(_E), hierarchy.getSupers(_A, true)); }
@Test public void nestedPropertyChains() { classes(_C); objectProperties(_p, _q, _r, _f); _kb.addSubProperty(list(_p, _q), _r); _kb.addSubProperty(list(_r, _q), _f); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSatisfiable(_C)); assertTrue(_kb.isSatisfiable(all(inv(_f), not(_C)))); assertFalse(_kb.isSatisfiable(and(_C, some(_p, some(_q, some(_q, all(inv(_f), not(_C)))))))); }
@Test public void testRoles2a() { classes(_A, _B, _C, _D, _E, _F, _G); objectProperties(_p, _q, _r, _s); _kb.addSubProperty(list(_p, _p), _p); _kb.addSubProperty(_q, _p); _kb.addSubClass(_A, some(_q, some(_p, _B))); _kb.addSubClass(some(_p, _B), _C); final Taxonomy<ATermAppl> hierarchy = getHierarchy(); assertEquals(singletonSets(_C), hierarchy.getSupers(_A, true)); }
@Test public void validLiteralStringRestriction2() { dataProperties(_p); individuals(_a, _b, _c); final ATermAppl uri = term("http//example.com/datatype"); _kb.addDatatypeDefinition(uri, oneOf(literal("a"), literal("b"))); _kb.addRange(_p, uri); _kb.addPropertyValue(_p, _a, literal("c")); _kb.addAllDifferent(list(_a, _b, _c)); assertFalse(_kb.isConsistent()); } }
@Ignore("See ticket #294") @Test public void testTransitivePropertyChain() { classes(_C, _D); objectProperties(_p, _q, _r); _kb.addSubProperty(list(_p, _q), _r); _kb.addTransitiveProperty(_p); _kb.addSubClass(_C, some(_p, some(_q, some(_p, some(_q, _D))))); _kb.addSubClass(_C, all(_r, not(_D))); assertFalse(_kb.isSatisfiable(_C)); }
@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 testRoles3a() { classes(_A, _B, _C, _D, _E, _F, _G); objectProperties(_p, _q, _r, _s); _kb.addSubProperty(list(_p, _q, _r), _p); _kb.addSubClass(_A, some(_p, _B)); _kb.addSubClass(_B, some(_q, _C)); _kb.addSubClass(_C, some(_r, _D)); _kb.addSubClass(some(_p, _D), _E); final Taxonomy<ATermAppl> hierarchy = getHierarchy(); assertEquals(singletonSets(_E), hierarchy.getSupers(_A, true)); }
@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 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 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 cdClassificationWithPropChain() { classes(_C, _D, _E); objectProperties(_p, _q, _r); _kb.addSubProperty(list(_p, _q), _r); _kb.addSubClass(_C, some(_p, some(_q, _D))); _kb.addSubClass(_D, all(inv(_r), _E)); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSubClassOf(_C, _E)); _kb.classify(); _kb.printClassTree(); assertTrue(_kb.isSubClassOf(_C, _E)); } }
@Test public void propertyChainInverseCardinality() { classes(_C, _D); objectProperties(_p, _q, _r); // functionality has no effect, it is used to force // double blocking instead of equality blocking _kb.addFunctionalProperty(_p); _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 somePQallAnonInvR1() { classes(_C); objectProperties(_p, _q, _r); _kb.addSubProperty(list(_p, _q), _r); assertTrue(_kb.isConsistent()); assertTrue(_kb.isSatisfiable(_C)); assertTrue(_kb.isSatisfiable(all(inv(_r), not(_C)))); assertFalse(_kb.isSatisfiable(and(_C, some(_p, some(_q, all(inv(_r), not(_C))))))); }
@Test public void testRoles2b() { classes(_A, _B, _C, _D, _E, _F, _G); objectProperties(_p, _q, _r, _s); _kb.addSubProperty(list(_p, _q), _p); _kb.addSubProperty(_r, _q); _kb.addSubClass(_A, and(_F, some(_p, _B))); _kb.addSubClass(_B, and(_G, some(_r, _C))); _kb.addSubClass(_C, some(_q, _D)); _kb.addSubClass(some(_p, _D), _E); final Taxonomy<ATermAppl> hierarchy = getHierarchy(); assertEquals(singletonSets(_E, _F), hierarchy.getSupers(_A, true)); }
@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))))))); }