@Override public boolean contains(final KnowledgeBase kb, final GraphLoader loader, final Node s, final Node p, final Node o) { return kb.isDifferentFrom(loader.node2term(s), loader.node2term(o)); } });
@Override public boolean contains(final KnowledgeBase kb, final GraphLoader loader, final Node s, final Node p, final Node o) { return kb.isDifferentFrom(loader.node2term(s), loader.node2term(o)); } });
@Override public boolean contains(final KnowledgeBase kb, final GraphLoader loader, final Node s, final Node p, final Node o) { return kb.isDifferentFrom(loader.node2term(s), loader.node2term(o)); } });
return kb.isSameAs(arguments.get(0), arguments.get(1)); case DifferentFrom: return kb.isDifferentFrom(arguments.get(0), arguments.get(1)); case EquivalentClass: return kb.isEquivalentClass(arguments.get(0), arguments.get(1));
return kb.isSameAs(arguments.get(0), arguments.get(1)); case DifferentFrom: return kb.isDifferentFrom(arguments.get(0), arguments.get(1)); case EquivalentClass: return kb.isEquivalentClass(arguments.get(0), arguments.get(1));
return kb.isSameAs(arguments.get(0), arguments.get(1)); case DifferentFrom: return kb.isDifferentFrom(arguments.get(0), arguments.get(1)); case EquivalentClass: return kb.isEquivalentClass(arguments.get(0), arguments.get(1));
@Override public void visit(final OWLDifferentIndividualsAxiom axiom) { _isEntailed = true; for (final OWLIndividual ind : asList(axiom.individuals())) if (ind.isAnonymous()) { deferAxiom(axiom); return; } final OWLIndividual[] list = axiom.individuals().toArray(OWLIndividual[]::new); for (int i = 0; i < list.length - 1; i++) { final OWLIndividual head = list[i]; for (int j = i + 1; j < list.length; j++) { final OWLIndividual next = list[j]; if (!_kb.isDifferentFrom(_reasoner.term(head), _reasoner.term(next))) { _isEntailed = false; return; } } } }
@Override public void visit(final OWLDifferentIndividualsAxiom axiom) { _isEntailed = true; for (final OWLIndividual ind : asList(axiom.individuals())) if (ind.isAnonymous()) { deferAxiom(axiom); return; } final OWLIndividual[] list = axiom.individuals().toArray(OWLIndividual[]::new); for (int i = 0; i < list.length - 1; i++) { final OWLIndividual head = list[i]; for (int j = i + 1; j < list.length; j++) { final OWLIndividual next = list[j]; if (!_kb.isDifferentFrom(_reasoner.term(head), _reasoner.term(next))) { _isEntailed = false; return; } } } }
@Override public void visit(final OWLDifferentIndividualsAxiom axiom) { _isEntailed = true; for (final OWLIndividual ind : asList(axiom.individuals())) if (ind.isAnonymous()) { deferAxiom(axiom); return; } final OWLIndividual[] list = axiom.individuals().toArray(OWLIndividual[]::new); for (int i = 0; i < list.length - 1; i++) { final OWLIndividual head = list[i]; for (int j = i + 1; j < list.length; j++) { final OWLIndividual next = list[j]; if (!_kb.isDifferentFrom(_reasoner.term(head), _reasoner.term(next))) { _isEntailed = false; return; } } } }
/** * Verify that differentFrom assertions survive ABox reset */ @Test public void differentAfterReset() { _kb.addIndividual(_robert); _kb.addIndividual(_chris); _kb.addDifferent(_robert, _chris); _kb.addDatatypeProperty(_ssn); final ATermAppl literal = ATermUtils.makePlainLiteral("xxx"); _kb.addPropertyValue(_ssn, _chris, literal); assertTrue(_kb.isConsistent()); assertTrue(_kb.isDifferentFrom(_robert, _chris)); assertTrue(_kb.isDifferentFrom(_chris, _robert)); // ABox property removal should cause ABox reset. assertTrue(_kb.removePropertyValue(_ssn, _chris, literal)); assertTrue(_kb.isChanged(ChangeType.ABOX_DEL)); assertTrue(_kb.isConsistent()); assertTrue(_kb.isDifferentFrom(_robert, _chris)); assertTrue(_kb.isDifferentFrom(_chris, _robert)); }
@Test public void differentFromObjects() { individuals(_a, _b, _c); objectProperties(_p, _q); _kb.addDisjointProperty(_p, _q); _kb.addPropertyValue(_p, _a, _b); _kb.addPropertyValue(_q, _a, _c); assertTrue(_kb.isDifferentFrom(_b, _c)); }
@Test public void differentFromSubjects() { individuals(_a, _b, _c); objectProperties(_p, _q); _kb.addDisjointProperty(_p, _q); _kb.addPropertyValue(_p, _a, _c); _kb.addPropertyValue(_q, _b, _c); assertTrue(_kb.isDifferentFrom(_a, _b)); }
@Test public void irreflexivePropertyCausingDifferentFrom() { // test #433 individuals(_a, _b); objectProperties(_p); _kb.addIrreflexiveProperty(_p); _kb.addPropertyValue(_p, _a, _b); assertTrue(_kb.isConsistent()); assertTrue(_kb.isDifferentFrom(_a, _b)); } }
assertFalse(_kb.isDifferentFrom(a, b));
@Test public void testRuleEquality() { final ATermAppl r = term("r"); final ATermAppl i = term("i"); final ATermAppl j = term("j"); final AtomIObject x = new AtomIVariable("x"); final AtomIObject y = new AtomIVariable("y"); _kb.addIndividual(i); _kb.addIndividual(j); _kb.addObjectProperty(r); _kb.addSubClass(TOP, min(r, 1, TOP)); _kb.addSubClass(TOP, oneOf(i, j)); _kb.addRule(new Rule(Collections.singletonList(new DifferentIndividualsAtom(x, y)), Collections.singletonList(new IndividualPropertyAtom(r, x, y)))); _kb.realize(); assertTrue(_kb.isConsistent()); assertTrue(_kb.isDifferentFrom(i, j)); }
@Override public ExtendedIterator<Triple> find(final KnowledgeBase kb, final PelletInfGraph openllet, final Node s, final Node p, final Node o) { ExtendedIterator<Triple> result = NullIterator.instance(); final ATermAppl subj = openllet.getLoader().node2term(s); final ATermAppl obj = openllet.getLoader().node2term(o); if (kb.isIndividual(subj) || kb.isIndividual(obj)) { if (kb.isIndividual(subj)) { final List<ATermAppl> properties = kb.getProperties(openllet.getLoader().node2term(s), openllet.getLoader().node2term(o)); result = propertyFiller(s, properties, o); if (kb.isIndividual(obj)) { if (kb.isSameAs(subj, obj)) result = result.andThen(new SingletonIterator<>(Triple.create(s, OWL.sameAs.asNode(), o))); if (kb.isDifferentFrom(subj, obj)) result = result.andThen(new SingletonIterator<>(Triple.create(s, OWL.differentFrom.asNode(), o))); } } } else if (!openllet.isSkipBuiltinPredicates()) for (final Node pred : BUILTIN_PREDICATES) result = result.andThen(findTriple(kb, openllet, s, pred, o)); return result; } });
@Override public ExtendedIterator<Triple> find(final KnowledgeBase kb, final PelletInfGraph openllet, final Node s, final Node p, final Node o) { ExtendedIterator<Triple> result = NullIterator.instance(); final ATermAppl subj = openllet.getLoader().node2term(s); final ATermAppl obj = openllet.getLoader().node2term(o); if (kb.isIndividual(subj) || kb.isIndividual(obj)) { if (kb.isIndividual(subj)) { final List<ATermAppl> properties = kb.getProperties(openllet.getLoader().node2term(s), openllet.getLoader().node2term(o)); result = propertyFiller(s, properties, o); if (kb.isIndividual(obj)) { if (kb.isSameAs(subj, obj)) result = result.andThen(new SingletonIterator<>(Triple.create(s, OWL.sameAs.asNode(), o))); if (kb.isDifferentFrom(subj, obj)) result = result.andThen(new SingletonIterator<>(Triple.create(s, OWL.differentFrom.asNode(), o))); } } } else if (!openllet.isSkipBuiltinPredicates()) for (final Node pred : BUILTIN_PREDICATES) result = result.andThen(findTriple(kb, openllet, s, pred, o)); return result; } });
@Override public ExtendedIterator<Triple> find(final KnowledgeBase kb, final PelletInfGraph openllet, final Node s, final Node p, final Node o) { ExtendedIterator<Triple> result = NullIterator.instance(); final ATermAppl subj = openllet.getLoader().node2term(s); final ATermAppl obj = openllet.getLoader().node2term(o); if (kb.isIndividual(subj) || kb.isIndividual(obj)) { if (kb.isIndividual(subj)) { final List<ATermAppl> properties = kb.getProperties(openllet.getLoader().node2term(s), openllet.getLoader().node2term(o)); result = propertyFiller(s, properties, o); if (kb.isIndividual(obj)) { if (kb.isSameAs(subj, obj)) result = result.andThen(new SingletonIterator<>(Triple.create(s, OWL.sameAs.asNode(), o))); if (kb.isDifferentFrom(subj, obj)) result = result.andThen(new SingletonIterator<>(Triple.create(s, OWL.differentFrom.asNode(), o))); } } } else if (!openllet.isSkipBuiltinPredicates()) for (final Node pred : BUILTIN_PREDICATES) result = result.andThen(findTriple(kb, openllet, s, pred, o)); return result; } });
@Test public void testLiteralMerge() { // Tests the issue described in #250 final KnowledgeBase kb = new KnowledgeBaseImpl(); final ATermAppl a = term("a"); final ATermAppl b = term("b"); final ATermAppl p = term("p"); kb.addIndividual(a); kb.addIndividual(b); kb.addDatatypeProperty(p); kb.addFunctionalProperty(p); // a has a p-successor which is an integer kb.addType(a, some(p, XSDInteger.getInstance().getName())); // bogus axiom to force full datatype reasoning kb.addType(a, max(p, 2, TOP_LIT)); // b has an asserted p value which is a string kb.addPropertyValue(p, b, literal("b")); // check consistency whihc assertTrue(kb.isConsistent()); // this query will force a and b to be merged which will cause // their p values to be merged assertTrue(kb.isDifferentFrom(a, b)); }
assertTrue(kb.hasPropertyValue(x, p, x)); assertTrue(kb.hasPropertyValue(y, weakR, y)); assertTrue(kb.isDifferentFrom(x, y)); assertTrue(kb.isDifferentFrom(y, x)); assertTrue(kb.isType(x, some(r, value(x)))); assertTrue(kb.isSatisfiable(and(self(p), self(inv(p)), max(p, 1, TOP))));