@Override
 public void visit(OWLDisjointObjectPropertiesAxiom axiom) {
   constructs.add(R);
   for (OWLObjectPropertyExpression prop : axiom.getProperties()) {
     prop.accept(this);
   }
 }
 public void visit(OWLSubPropertyChainOfAxiom axiom) {
   for (OWLObjectPropertyExpression prop : axiom.getPropertyChain()) {
     prop.accept(this);
   }
   axiom.getSuperProperty().accept(this);
   processAxiomAnnotations(axiom);
 }
 @Override
 public void visit(OWLSubPropertyChainOfAxiom axiom) {
   handleObject(axiom);
   for (OWLObjectPropertyExpression prop : axiom.getPropertyChain()) {
     prop.accept(this);
   }
   axiom.getSuperProperty().accept(this);
 }
 @Override
 public void visit(OWLDisjointObjectPropertiesAxiom axiom) {
   write("DisjointObjectProperties");
   writeSpace();
   for (OWLObjectPropertyExpression p : axiom.getProperties()) {
     p.accept(this);
     writeSpace();
   }
 }
 @Override
 public void visit(OWLSubPropertyChainOfAxiom axiom) {
   axiom.getSuperProperty().accept(this);
   OWLObjectPropertyExpression prop = (OWLObjectPropertyExpression) obj;
   List<OWLObjectPropertyExpression> chain = new ArrayList<OWLObjectPropertyExpression>();
   for (OWLObjectPropertyExpression p : axiom.getPropertyChain()) {
     p.accept(this);
     chain.add((OWLObjectPropertyExpression) obj);
   }
   obj = dataFactory.getOWLSubPropertyChainOfAxiom(chain, prop, duplicateAxiomAnnotations(axiom));
 }
 @Override
 public void visit(OWLHasKeyAxiom axiom) {
   handleObject(axiom);
   axiom.getClassExpression().accept(this);
   for (OWLObjectPropertyExpression prop : axiom.getObjectPropertyExpressions()) {
     prop.accept(this);
   }
   for (OWLDataPropertyExpression prop : axiom.getDataPropertyExpressions()) {
     prop.accept(this);
   }
 }
 public void visit(OWLEquivalentObjectPropertiesAxiom axiom) {
   for (OWLObjectPropertyExpression prop : axiom.getProperties()) {
     prop.accept(this);
   }
   processAxiomAnnotations(axiom);
 }