/** * Normalizes and adds subclass axiom * <p> * SubClassOf := 'SubClassOf' '(' axiomAnnotations subClassExpression superClassExpression ')' * <p> * Implements rule [C1]:<br> * - ignore the axiom if the first argument is owl:Nothing or the second argument is owl:Thing<br> * - replace by a disjointness axiom if the second argument is owl:Nothing but the first is not owl:Thing<br> * - inconsistency if the first argument is owl:Thing but the second one is not owl:Nothing * <p> * Implements rules [D5] and [O5] (in conjunction with DataSomeValuesFromImpl and ObjectSomeValuesFromImpl)<br> * - if the first argument is syntactically "equivalent" to owl:Thing, then replace it by owl:Thing * * @throws InconsistentOntologyException */ @Override public void addSubClassOfAxiom(ClassExpression ce1, ClassExpression ce2) throws InconsistentOntologyException { checkSignature(ce1); checkSignature(ce2); if (ce1.isTop()) ce1 = ClassImpl.owlThing; // rules [D5] and [O5] classAxioms.addInclusion(ce1, ce2); }