コード例 #1
0
 /**
  * Translate the negative axioms of the ontology that this ontology refers with a given {@link
  * QLAxiomsTranslator}.
  *
  * @return the translation of the negative axioms.
  */
 private Set<Rule> disjunctionsTranslation() {
   final Set<Rule> result = new HashSet<Rule>();
   for (final OWLDisjointClassesAxiom disjunction : ontologyNormalization.conceptDisjunctions()) {
     final List<OWLClassExpression> concepts = disjunction.getClassExpressionsAsList();
     assert concepts.size() <= 2;
     result.addAll(
         doubleAxiomsTranslator.disjunctionTranslation(concepts.get(0), concepts.get(1)));
   }
   for (final OWLDisjointObjectPropertiesAxiom disjunction :
       ontologyNormalization.roleDisjunctions()) {
     final List<OWLObjectPropertyExpression> roles =
         new LinkedList<OWLObjectPropertyExpression>(disjunction.getProperties());
     assert roles.size() <= 2;
     result.addAll(doubleAxiomsTranslator.disjunctionTranslation(roles.get(0), roles.get(1)));
   }
   for (final OWLDisjointDataPropertiesAxiom disjunction :
       ontologyNormalization.dataDisjunctions()) {
     final List<OWLDataPropertyExpression> roles =
         new LinkedList<OWLDataPropertyExpression>(disjunction.getProperties());
     assert roles.size() <= 2;
     result.addAll(doubleAxiomsTranslator.disjunctionTranslation(roles.get(0), roles.get(1)));
   }
   return result;
 }
コード例 #2
0
 @Override
 public void updateTranslation() throws UnsupportedAxiomsException {
   prepareUpdate();
   translation.clear();
   final boolean hasDisjunctions = ontologyNormalization.hasDisjunctions();
   RuntimesLogger.start("ontology translation");
   translation.addAll(translation(originalAxiomsTranslator));
   if (hasDisjunctions) {
     translation.addAll(translation(doubleAxiomsTranslator));
     translation.addAll(disjunctionsTranslation());
     RuntimesLogger.stop("ontology translation", "loading");
     RuntimesLogger.start("ontology classification");
     for (final OWLEntity e : graph.getUnsatisfiableEntities())
       if (e instanceof OWLClass)
         translation.addAll(doubleAxiomsTranslator.unsatisfiabilityTranslation((OWLClass) e));
       else if (e instanceof OWLProperty)
         translation.addAll(doubleAxiomsTranslator.unsatisfiabilityTranslation((OWLProperty) e));
     for (final OWLObjectProperty p : graph.getIrreflexiveRoles())
       translation.add(doubleAxiomsTranslator.unreflexivityTranslation(p));
     RuntimesLogger.stop("ontology classification", "loading");
   }
   RuntimesLogger.stop("ontology translation", "loading");
 }
コード例 #3
0
 // TODO optimize translatin: (e) can be discarded for roles for which there
 // aren't assertions
 private Set<Rule> translation(QLAxiomsTranslator axiomsTranslator) {
   final Set<Rule> result = new HashSet<Rule>();
   for (final OWLClassAssertionAxiom assertion : ontologyNormalization.conceptAssertions())
     result.addAll(axiomsTranslator.assertionTranslation(assertion));
   for (final OWLObjectPropertyAssertionAxiom assertion : ontologyNormalization.roleAssertions())
     result.addAll(axiomsTranslator.assertionTranslation(assertion));
   for (final OWLDataPropertyAssertionAxiom assertion : ontologyNormalization.dataAssertions())
     result.addAll(axiomsTranslator.assertionTranslation(assertion));
   for (final OWLSubClassOfAxiom subsumption : ontologyNormalization.conceptSubsumptions())
     result.addAll(
         axiomsTranslator.subsumptionTranslation(
             subsumption.getSubClass(), subsumption.getSuperClass()));
   for (final OWLSubPropertyAxiom<?> subsumption : ontologyNormalization.roleSubsumptions())
     if (subsumption instanceof OWLSubObjectPropertyOfAxiom) {
       result.addAll(
           axiomsTranslator.subsumptionTranslation(
               subsumption.getSubProperty(), subsumption.getSuperProperty()));
       final OWLSubObjectPropertyOfAxiom axiom = (OWLSubObjectPropertyOfAxiom) subsumption;
       final OWLObjectPropertyExpression ope1 = axiom.getSubProperty();
       final OWLObjectPropertyExpression ope2 = axiom.getSuperProperty();
       final OWLObjectPropertyExpression invOpe1 = ope1.getInverseProperty().getSimplified();
       final OWLObjectPropertyExpression invOpe2 = ope2.getInverseProperty().getSimplified();
       if ((ontologyNormalization.isSuper(some(ope1)) || ontologyNormalization.isSuper(ope1))
           && (ontologyNormalization.isSub(some(ope2)) || ontologyNormalization.isSub(ope2)))
         result.add(
             axiomsTranslator.domainSubsumptionTranslation(
                 axiom.getSubProperty(), axiom.getSuperProperty()));
       if ((ontologyNormalization.isSuper(some(invOpe1)) || ontologyNormalization.isSuper(invOpe1))
           && (ontologyNormalization.isSub(some(invOpe2)) || ontologyNormalization.isSub(invOpe2)))
         result.add(axiomsTranslator.rangeSubsumptionTranslation(invOpe1, invOpe2));
     } else if (subsumption instanceof OWLSubDataPropertyOfAxiom)
       result.addAll(
           axiomsTranslator.subsumptionTranslation(
               subsumption.getSubProperty(), subsumption.getSuperProperty()));
   for (final OWLPropertyExpression ope : ontologyNormalization.getRoles())
     if (ope instanceof OWLObjectPropertyExpression) {
       final OWLObjectProperty p = ((OWLObjectPropertyExpression) ope).getNamedProperty();
       final OWLObjectPropertyExpression invP = p.getInverseProperty();
       if (ontologyNormalization.isSub(some(p)) || ontologyNormalization.isSub(p))
         result.add(axiomsTranslator.domainTranslation(p));
       if (ontologyNormalization.isSub(some(invP)) || ontologyNormalization.isSub(invP))
         result.add(axiomsTranslator.rangeTranslation(p));
     }
   return result;
 }
コード例 #4
0
 @Override
 public boolean hasDisjunctions() {
   return ontologyNormalization.hasDisjunctions();
 }