code: @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);
      }
docs: 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