public boolean contains(ObjectPropertyExpression propertyExpression){ return !propertyExpression.isInverse() && properties.contains(propertyExpression.getName()); }
public boolean contains(ObjectPropertyExpression propertyExpression){ return !propertyExpression.isInverse() && properties.contains(propertyExpression.getName()); }
private void checkSignature(ObjectPropertyExpression prop) { if (prop.isInverse()) prop = prop.getInverse(); if (!objectProperties.contains(prop.getName()) && !auxObjectProperties.contains(prop)) throw new IllegalArgumentException(OBJECT_PROPERTY_NOT_FOUND + prop); }
private void checkSignature(ObjectPropertyExpression prop) { if (prop.isInverse()) prop = prop.getInverse(); if (!objectProperties.contains(prop.getName()) && !auxObjectProperties.contains(prop)) throw new IllegalArgumentException(OBJECT_PROPERTY_NOT_FOUND + prop); }
/** * Normalizes and adds an irreflexive object property axiom * <p> * ReflexiveObjectProperty := 'ReflexiveObjectProperty' '(' axiomAnnotations ObjectPropertyExpression ')' * <p> * Implements rule [O3]:<br> * - ignores if bot (which is irreflexive by definition)<br> * - inconsistency if top (which is reflexive)<br> * - otherwise, removes the inverse if required * * @throws InconsistentOntologyException */ @Override public void addIrreflexiveObjectPropertyAxiom(ObjectPropertyExpression ope) throws InconsistentOntologyException { if (ope.isTop()) throw new InconsistentOntologyException(); if (ope.isBottom()) return; irreflexiveObjectPropertyAxioms.add(ope.isInverse() ? ope.getInverse() : ope); }
/** * Normalizes and adds a reflexive object property axiom * <p> * ReflexiveObjectProperty := 'ReflexiveObjectProperty' '(' axiomAnnotations ObjectPropertyExpression ')' * <p> * Implements rule [O3]:<br> * - ignores if top (which is reflexive by definition)<br> * - inconsistency if bot (which is not reflexive)<br> * - otherwise, removes the inverse if required * * @throws InconsistentOntologyException */ @Override public void addReflexiveObjectPropertyAxiom(ObjectPropertyExpression ope) throws InconsistentOntologyException { if (ope.isTop()) return; if (ope.isBottom()) throw new InconsistentOntologyException(); reflexiveObjectPropertyAxioms.add(ope.isInverse() ? ope.getInverse() : ope); }
/** * Normalizes and adds a reflexive object property axiom * <p> * ReflexiveObjectProperty := 'ReflexiveObjectProperty' '(' axiomAnnotations ObjectPropertyExpression ')' * <p> * Implements rule [O3]:<br> * - ignores if top (which is reflexive by definition)<br> * - inconsistency if bot (which is not reflexive)<br> * - otherwise, removes the inverse if required * * @throws InconsistentOntologyException */ @Override public void addReflexiveObjectPropertyAxiom(ObjectPropertyExpression ope) throws InconsistentOntologyException { if (ope.isTop()) return; if (ope.isBottom()) throw new InconsistentOntologyException(); reflexiveObjectPropertyAxioms.add(ope.isInverse() ? ope.getInverse() : ope); }
/** * Normalizes and adds an irreflexive object property axiom * <p> * ReflexiveObjectProperty := 'ReflexiveObjectProperty' '(' axiomAnnotations ObjectPropertyExpression ')' * <p> * Implements rule [O3]:<br> * - ignores if bot (which is irreflexive by definition)<br> * - inconsistency if top (which is reflexive)<br> * - otherwise, removes the inverse if required * * @throws InconsistentOntologyException */ @Override public void addIrreflexiveObjectPropertyAxiom(ObjectPropertyExpression ope) throws InconsistentOntologyException { if (ope.isTop()) throw new InconsistentOntologyException(); if (ope.isBottom()) return; irreflexiveObjectPropertyAxioms.add(ope.isInverse() ? ope.getInverse() : ope); }
private DataAtom<AtomPredicate> translate(ObjectPropertyExpression property, String x, String y) { Variable varX = termFactory.getVariable(x); Variable varY = termFactory.getVariable(y); if (property.isInverse()) return atomFactory.getIntensionalTripleAtom(varY, property.getIRI(), varX); else return atomFactory.getIntensionalTripleAtom(varX, property.getIRI(), varY); }
private ImmutableList<Function> getAtomsForGenerators(Collection<TreeWitnessGenerator> gens, Term r0) { return TreeWitnessGenerator.getMaximalBasicConcepts(gens, reasoner).stream() .map(con -> { log.debug(" BASIC CONCEPT: {}", con); if (con instanceof OClass) { return atomFactory.getMutableTripleBodyAtom(r0, ((OClass) con).getIRI()); } else if (con instanceof ObjectSomeValuesFrom) { ObjectPropertyExpression ope = ((ObjectSomeValuesFrom)con).getProperty(); return (!ope.isInverse()) ? atomFactory.getMutableTripleBodyAtom(r0, ope.getIRI(), getFreshVariable()) : atomFactory.getMutableTripleBodyAtom(getFreshVariable(), ope.getIRI(), r0); } else { DataPropertyExpression dpe = ((DataSomeValuesFrom)con).getProperty(); return atomFactory.getMutableTripleBodyAtom(r0, dpe.getIRI(), getFreshVariable()); } }) .collect(ImmutableCollectors.toList()); }
/** * Creates an object property assertion * <p> * ObjectPropertyAssertion := 'ObjectPropertyAssertion' '(' axiomAnnotations * ObjectPropertyExpression sourceIndividual targetIndividual ')' * <p> * Implements rule [O4]: * - ignore (return null) if the property is top * - inconsistency if the property is bot * - swap the arguments to eliminate inverses */ public static ObjectPropertyAssertion createObjectPropertyAssertion(ObjectPropertyExpression ope, ObjectConstant o1, ObjectConstant o2) throws InconsistentOntologyException { if (ope.isTop()) return null; if (ope.isBottom()) throw new InconsistentOntologyException(); if (ope.isInverse()) return new ObjectPropertyAssertionImpl(ope.getInverse(), o2, o1); else return new ObjectPropertyAssertionImpl(ope, o1, o2); }
private static void chooseObjectPropertyRepresentatives(EquivalencesDAGImpl<ObjectPropertyExpression> dag) { for (Equivalences<ObjectPropertyExpression> set : dag) { // skip if has already been done if (set.getRepresentative() != null) continue; ObjectPropertyExpression rep = Collections.min(set.getMembers(), objectPropertyComparator); ObjectPropertyExpression repInv = rep.getInverse(); Equivalences<ObjectPropertyExpression> setInv = dag.getVertex(repInv); if (rep.isInverse()) { repInv = Collections.min(setInv.getMembers(), objectPropertyComparator); rep = repInv.getInverse(); setInv.setIndexed(); } else set.setIndexed(); set.setRepresentative(rep); if (!set.contains(repInv)) { // if not symmetric // (each set either consists of symmetric properties // or none of the properties in the set is symmetric) setInv.setRepresentative(repInv); } } }
private static void chooseObjectPropertyRepresentatives(EquivalencesDAGImpl<ObjectPropertyExpression> dag) { for (Equivalences<ObjectPropertyExpression> set : dag) { // skip if has already been done if (set.getRepresentative() != null) continue; ObjectPropertyExpression rep = Collections.min(set.getMembers(), objectPropertyComparator); ObjectPropertyExpression repInv = rep.getInverse(); Equivalences<ObjectPropertyExpression> setInv = dag.getVertex(repInv); if (rep.isInverse()) { repInv = Collections.min(setInv.getMembers(), objectPropertyComparator); rep = repInv.getInverse(); setInv.setIndexed(); } else set.setIndexed(); set.setRepresentative(rep); if (!set.contains(repInv)) { // if not symmetric // (each set either consists of symmetric properties // or none of the properties in the set is symmetric) setInv.setRepresentative(repInv); } } }
/** * Creates an object property assertion * <p> * ObjectPropertyAssertion := 'ObjectPropertyAssertion' '(' axiomAnnotations * ObjectPropertyExpression sourceIndividual targetIndividual ')' * <p> * Implements rule [O4]: * - ignore (return null) if the property is top * - inconsistency if the property is bot * - swap the arguments to eliminate inverses */ public static ObjectPropertyAssertion createObjectPropertyAssertion(ObjectPropertyExpression ope, ObjectConstant o1, ObjectConstant o2) throws InconsistentOntologyException { if (ope.isTop()) return null; if (ope.isBottom()) throw new InconsistentOntologyException(); if (ope.isInverse()) return new ObjectPropertyAssertionImpl(ope.getInverse(), o2, o1); else return new ObjectPropertyAssertionImpl(ope, o1, o2); }
ObjectPropertyExpression equivalent = reasoner.objectPropertiesDAG().getCanonicalForm(ope); if (equivalent != null && !equivalent.equals(ope)) { if (!equivalent.isInverse()) return atomFactory.getMutableTripleBodyAtom(bodyAtom.getTerm(0), equivalent.getIRI(), bodyAtom.getTerm(2)); else
for (Equivalences<ObjectPropertyExpression> subpropNode : reasoner.objectPropertiesDAG().getSub(propNode)) { for (ObjectPropertyExpression subprop : subpropNode) { if (subprop.isInverse()) continue; DataAtom<AtomPredicate> body = translate(subprop, variableXname, variableYname);
if (R.isInverse()) SA = SA.getInverse();