All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.ac.manchester.cs.owl.owlapi.concurrent.ConcurrentOWLOntologyImpl Maven / Gradle / Ivy

There is a newer version: 5.5.1
Show newest version
/* This file is part of the OWL API.
 * The contents of this file are subject to the LGPL License, Version 3.0.
 * Copyright 2014, The University of Manchester
 * 
 * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License along with this program.  If not, see http://www.gnu.org/licenses/.
 *
 * Alternatively, the contents of this file may be used under the terms of the Apache License, Version 2.0 in which case, the provisions of the Apache License Version 2.0 are applicable instead of those above.
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */
package uk.ac.manchester.cs.owl.owlapi.concurrent;

import static org.semanticweb.owlapi.util.OWLAPIPreconditions.verifyNotNull;

import java.io.OutputStream;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.function.Predicate;
import java.util.stream.Stream;
import javax.annotation.Nullable;
import javax.inject.Inject;
import org.semanticweb.owlapi.io.OWLOntologyDocumentTarget;
import org.semanticweb.owlapi.model.AxiomType;
import org.semanticweb.owlapi.model.ChangeDetails;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLAnnotation;
import org.semanticweb.owlapi.model.OWLAnnotationAssertionAxiom;
import org.semanticweb.owlapi.model.OWLAnnotationAxiom;
import org.semanticweb.owlapi.model.OWLAnnotationProperty;
import org.semanticweb.owlapi.model.OWLAnnotationPropertyDomainAxiom;
import org.semanticweb.owlapi.model.OWLAnnotationPropertyRangeAxiom;
import org.semanticweb.owlapi.model.OWLAnnotationSubject;
import org.semanticweb.owlapi.model.OWLAnonymousIndividual;
import org.semanticweb.owlapi.model.OWLAsymmetricObjectPropertyAxiom;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLClassAssertionAxiom;
import org.semanticweb.owlapi.model.OWLClassAxiom;
import org.semanticweb.owlapi.model.OWLClassExpression;
import org.semanticweb.owlapi.model.OWLDataProperty;
import org.semanticweb.owlapi.model.OWLDataPropertyAssertionAxiom;
import org.semanticweb.owlapi.model.OWLDataPropertyAxiom;
import org.semanticweb.owlapi.model.OWLDataPropertyDomainAxiom;
import org.semanticweb.owlapi.model.OWLDataPropertyExpression;
import org.semanticweb.owlapi.model.OWLDataPropertyRangeAxiom;
import org.semanticweb.owlapi.model.OWLDatatype;
import org.semanticweb.owlapi.model.OWLDatatypeDefinitionAxiom;
import org.semanticweb.owlapi.model.OWLDeclarationAxiom;
import org.semanticweb.owlapi.model.OWLDifferentIndividualsAxiom;
import org.semanticweb.owlapi.model.OWLDisjointClassesAxiom;
import org.semanticweb.owlapi.model.OWLDisjointDataPropertiesAxiom;
import org.semanticweb.owlapi.model.OWLDisjointObjectPropertiesAxiom;
import org.semanticweb.owlapi.model.OWLDisjointUnionAxiom;
import org.semanticweb.owlapi.model.OWLDocumentFormat;
import org.semanticweb.owlapi.model.OWLEntity;
import org.semanticweb.owlapi.model.OWLEquivalentClassesAxiom;
import org.semanticweb.owlapi.model.OWLEquivalentDataPropertiesAxiom;
import org.semanticweb.owlapi.model.OWLEquivalentObjectPropertiesAxiom;
import org.semanticweb.owlapi.model.OWLFunctionalDataPropertyAxiom;
import org.semanticweb.owlapi.model.OWLFunctionalObjectPropertyAxiom;
import org.semanticweb.owlapi.model.OWLHasKeyAxiom;
import org.semanticweb.owlapi.model.OWLImportsDeclaration;
import org.semanticweb.owlapi.model.OWLIndividual;
import org.semanticweb.owlapi.model.OWLIndividualAxiom;
import org.semanticweb.owlapi.model.OWLInverseFunctionalObjectPropertyAxiom;
import org.semanticweb.owlapi.model.OWLInverseObjectPropertiesAxiom;
import org.semanticweb.owlapi.model.OWLIrreflexiveObjectPropertyAxiom;
import org.semanticweb.owlapi.model.OWLLogicalAxiom;
import org.semanticweb.owlapi.model.OWLMutableOntology;
import org.semanticweb.owlapi.model.OWLNamedIndividual;
import org.semanticweb.owlapi.model.OWLNamedObjectVisitor;
import org.semanticweb.owlapi.model.OWLNamedObjectVisitorEx;
import org.semanticweb.owlapi.model.OWLNegativeDataPropertyAssertionAxiom;
import org.semanticweb.owlapi.model.OWLNegativeObjectPropertyAssertionAxiom;
import org.semanticweb.owlapi.model.OWLObject;
import org.semanticweb.owlapi.model.OWLObjectProperty;
import org.semanticweb.owlapi.model.OWLObjectPropertyAssertionAxiom;
import org.semanticweb.owlapi.model.OWLObjectPropertyAxiom;
import org.semanticweb.owlapi.model.OWLObjectPropertyDomainAxiom;
import org.semanticweb.owlapi.model.OWLObjectPropertyExpression;
import org.semanticweb.owlapi.model.OWLObjectPropertyRangeAxiom;
import org.semanticweb.owlapi.model.OWLObjectVisitor;
import org.semanticweb.owlapi.model.OWLObjectVisitorEx;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyChange;
import org.semanticweb.owlapi.model.OWLOntologyID;
import org.semanticweb.owlapi.model.OWLOntologyManager;
import org.semanticweb.owlapi.model.OWLOntologyStorageException;
import org.semanticweb.owlapi.model.OWLPrimitive;
import org.semanticweb.owlapi.model.OWLReflexiveObjectPropertyAxiom;
import org.semanticweb.owlapi.model.OWLSameIndividualAxiom;
import org.semanticweb.owlapi.model.OWLSubAnnotationPropertyOfAxiom;
import org.semanticweb.owlapi.model.OWLSubClassOfAxiom;
import org.semanticweb.owlapi.model.OWLSubDataPropertyOfAxiom;
import org.semanticweb.owlapi.model.OWLSubObjectPropertyOfAxiom;
import org.semanticweb.owlapi.model.OWLSymmetricObjectPropertyAxiom;
import org.semanticweb.owlapi.model.OWLTransitiveObjectPropertyAxiom;
import org.semanticweb.owlapi.model.parameters.AxiomAnnotations;
import org.semanticweb.owlapi.model.parameters.ChangeApplied;
import org.semanticweb.owlapi.model.parameters.Imports;
import org.semanticweb.owlapi.model.parameters.Navigation;
import org.semanticweb.owlapi.util.OWLAxiomSearchFilter;
import uk.ac.manchester.cs.owl.owlapi.HasTrimToSize;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 08/04/15
 */

/**
 * Matthew Horridge Stanford Center for Biomedical Informatics Research 03/04/15
 */
@SuppressWarnings({"deprecation"})
public class ConcurrentOWLOntologyImpl implements OWLMutableOntology, HasTrimToSize {

    private final OWLOntology delegate;
    private final Lock readLock;
    private final Lock writeLock;

    /**
     * Constructs a ConcurrentOWLOntology that provides concurrent access to a
     * delegate {@link OWLOntology}.
     *
     * @param delegate The delegate {@link OWLOntology}.
     * @param readWriteLock The {@link java.util.concurrent.locks.ReadWriteLock} that will provide
     * the locking.
     * @throws java.lang.NullPointerException if any parameters are {@code null}.
     */
    @Inject
    public ConcurrentOWLOntologyImpl(OWLOntology delegate, ReadWriteLock readWriteLock) {
        this.delegate = verifyNotNull(delegate);
        verifyNotNull(readWriteLock);
        readLock = readWriteLock.readLock();
        writeLock = readWriteLock.writeLock();
    }

    @Override
    public int typeIndex() {
        return delegate.typeIndex();
    }

    @Override
    public void trimToSize() {
        writeLock.lock();
        try {
            if (delegate instanceof HasTrimToSize) {
                ((HasTrimToSize) delegate).trimToSize();
            }
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public void accept(OWLNamedObjectVisitor owlNamedObjectVisitor) {
        delegate.accept(owlNamedObjectVisitor);
    }

    @Override
    public  O accept(OWLNamedObjectVisitorEx owlNamedObjectVisitorEx) {
        return delegate.accept(owlNamedObjectVisitorEx);
    }

    @Override
    public int hashCode() {
        readLock.lock();
        try {
            return delegate.hashCode();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean equals(@Nullable Object obj) {
        readLock.lock();
        try {
            return delegate.equals(obj);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public OWLOntologyManager getOWLOntologyManager() {
        readLock.lock();
        try {
            return delegate.getOWLOntologyManager();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public void setOWLOntologyManager(@Nullable OWLOntologyManager owlOntologyManager) {
        writeLock.lock();
        try {
            delegate.setOWLOntologyManager(owlOntologyManager);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public OWLOntologyID getOntologyID() {
        readLock.lock();
        try {
            return delegate.getOntologyID();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean isAnonymous() {
        readLock.lock();
        try {
            return delegate.isAnonymous();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAnnotations() {
        readLock.lock();
        try {
            return delegate.getAnnotations();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDirectImportsDocuments() {
        readLock.lock();
        try {
            return delegate.getDirectImportsDocuments();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream directImportsDocuments() {
        readLock.lock();
        try {
            return delegate.directImportsDocuments();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDirectImports() {
        readLock.lock();
        try {
            return delegate.getDirectImports();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream directImports() {
        readLock.lock();
        try {
            return delegate.directImports();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getImports() {
        readLock.lock();
        try {
            return delegate.getImports();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream imports() {
        readLock.lock();
        try {
            return delegate.imports();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getImportsClosure() {
        readLock.lock();
        try {
            return delegate.getImportsClosure();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream importsClosure() {
        readLock.lock();
        try {
            return delegate.importsClosure();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getImportsDeclarations() {
        readLock.lock();
        try {
            return delegate.getImportsDeclarations();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean isEmpty() {
        readLock.lock();
        try {
            return delegate.isEmpty();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getTBoxAxioms(Imports imports) {
        readLock.lock();
        try {
            return delegate.getTBoxAxioms(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getABoxAxioms(Imports imports) {
        readLock.lock();
        try {
            return delegate.getABoxAxioms(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getRBoxAxioms(Imports imports) {
        readLock.lock();
        try {
            return delegate.getRBoxAxioms(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream tboxAxioms(Imports imports) {
        readLock.lock();
        try {
            return delegate.tboxAxioms(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream aboxAxioms(Imports imports) {
        readLock.lock();
        try {
            return delegate.aboxAxioms(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream rboxAxioms(Imports imports) {
        readLock.lock();
        try {
            return delegate.rboxAxioms(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getGeneralClassAxioms() {
        readLock.lock();
        try {
            return delegate.getGeneralClassAxioms();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getSignature() {
        readLock.lock();
        try {
            return delegate.getSignature();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getSignature(Imports imports) {
        readLock.lock();
        try {
            return delegate.getSignature(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream generalClassAxioms() {
        readLock.lock();
        try {
            return delegate.generalClassAxioms();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream signature() {
        readLock.lock();
        try {
            return delegate.signature();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream signature(Imports imports) {
        readLock.lock();
        try {
            return delegate.signature(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean isDeclared(OWLEntity owlEntity) {
        readLock.lock();
        try {
            return delegate.isDeclared(owlEntity);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean isDeclared(OWLEntity owlEntity, Imports imports) {
        readLock.lock();
        try {
            return delegate.isDeclared(owlEntity, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public void saveOntology() throws OWLOntologyStorageException {
        readLock.lock();
        try {
            delegate.saveOntology();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public void saveOntology(IRI iri) throws OWLOntologyStorageException {
        readLock.lock();
        try {
            delegate.saveOntology(iri);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public void saveOntology(OutputStream outputStream) throws OWLOntologyStorageException {
        readLock.lock();
        try {
            delegate.saveOntology(outputStream);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public void saveOntology(OWLDocumentFormat owlDocumentFormat)
        throws OWLOntologyStorageException {
        readLock.lock();
        try {
            delegate.saveOntology(owlDocumentFormat);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public void saveOntology(OWLDocumentFormat owlDocumentFormat, IRI iri)
        throws OWLOntologyStorageException {
        readLock.lock();
        try {
            delegate.saveOntology(owlDocumentFormat, iri);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public void saveOntology(OWLDocumentFormat owlDocumentFormat, OutputStream outputStream)
        throws OWLOntologyStorageException {
        readLock.lock();
        try {
            delegate.saveOntology(owlDocumentFormat, outputStream);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public void saveOntology(OWLOntologyDocumentTarget owlOntologyDocumentTarget)
        throws OWLOntologyStorageException {
        readLock.lock();
        try {
            delegate.saveOntology(owlOntologyDocumentTarget);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public void saveOntology(OWLDocumentFormat owlDocumentFormat,
        OWLOntologyDocumentTarget owlOntologyDocumentTarget)
        throws OWLOntologyStorageException {
        readLock.lock();
        try {
            delegate.saveOntology(owlDocumentFormat, owlOntologyDocumentTarget);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getNestedClassExpressions() {
        readLock.lock();
        try {
            return delegate.getNestedClassExpressions();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public void accept(OWLObjectVisitor owlObjectVisitor) {
        delegate.accept(owlObjectVisitor);
    }

    @Override
    public  O accept(OWLObjectVisitorEx owlObjectVisitorEx) {
        return delegate.accept(owlObjectVisitorEx);
    }

    @Override
    public boolean isTopEntity() {
        readLock.lock();
        try {
            return delegate.isTopEntity();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean isBottomEntity() {
        readLock.lock();
        try {
            return delegate.isBottomEntity();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public String toString() {
        readLock.lock();
        try {
            return delegate.toString();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public int compareTo(@Nullable OWLObject o) {
        readLock.lock();
        try {
            return delegate.compareTo(o);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsEntityInSignature(OWLEntity owlEntity) {
        readLock.lock();
        try {
            return delegate.containsEntityInSignature(owlEntity);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAnonymousIndividuals() {
        readLock.lock();
        try {
            return delegate.getAnonymousIndividuals();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getClassesInSignature() {
        readLock.lock();
        try {
            return delegate.getClassesInSignature();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getObjectPropertiesInSignature() {
        readLock.lock();
        try {
            return delegate.getObjectPropertiesInSignature();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDataPropertiesInSignature() {
        readLock.lock();
        try {
            return delegate.getDataPropertiesInSignature();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getIndividualsInSignature() {
        readLock.lock();
        try {
            return delegate.getIndividualsInSignature();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDatatypesInSignature() {
        readLock.lock();
        try {
            return delegate.getDatatypesInSignature();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAnnotationPropertiesInSignature() {
        readLock.lock();
        try {
            return delegate.getAnnotationPropertiesInSignature();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(Imports imports) {
        readLock.lock();
        try {
            return delegate.getAxioms(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public int getAxiomCount(Imports imports) {
        readLock.lock();
        try {
            return delegate.getAxiomCount(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getLogicalAxioms(Imports imports) {
        readLock.lock();
        try {
            return delegate.getLogicalAxioms(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public int getLogicalAxiomCount(Imports imports) {
        readLock.lock();
        try {
            return delegate.getLogicalAxiomCount(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Set getAxioms(AxiomType axiomType, Imports imports) {
        readLock.lock();
        try {
            return delegate.getAxioms(axiomType, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Stream axioms(AxiomType axiomType, Imports imports) {
        readLock.lock();
        try {
            return delegate.axioms(axiomType, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  int getAxiomCount(AxiomType axiomType, Imports imports) {
        readLock.lock();
        try {
            return delegate.getAxiomCount(axiomType, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsAxiom(OWLAxiom owlAxiom, Imports imports,
        AxiomAnnotations axiomAnnotations) {
        readLock.lock();
        try {
            return delegate.containsAxiom(owlAxiom, imports, axiomAnnotations);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxiomsIgnoreAnnotations(OWLAxiom owlAxiom, Imports imports) {
        readLock.lock();
        try {
            return delegate.getAxiomsIgnoreAnnotations(owlAxiom, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axiomsIgnoreAnnotations(OWLAxiom owlAxiom, Imports imports) {
        readLock.lock();
        try {
            return delegate.axiomsIgnoreAnnotations(owlAxiom, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getReferencingAxioms(OWLPrimitive owlPrimitive, Imports imports) {
        readLock.lock();
        try {
            return delegate.getReferencingAxioms(owlPrimitive, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream referencingAxioms(OWLPrimitive owlPrimitive, Imports imports) {
        readLock.lock();
        try {
            return delegate.referencingAxioms(owlPrimitive, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLClass owlClass, Imports imports) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlClass, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression,
        Imports imports) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlObjectPropertyExpression, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLDataProperty owlDataProperty, Imports imports) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlDataProperty, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLIndividual owlIndividual, Imports imports) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlIndividual, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLAnnotationProperty owlAnnotationProperty,
        Imports imports) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlAnnotationProperty, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLDatatype owlDatatype, Imports imports) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlDatatype, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms() {
        readLock.lock();
        try {
            return delegate.getAxioms();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axioms() {
        // XXX investigate locking access to streams
        readLock.lock();
        try {
            return delegate.axioms();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getLogicalAxioms() {
        readLock.lock();
        try {
            return delegate.getLogicalAxioms();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream logicalAxioms() {
        readLock.lock();
        try {
            return delegate.logicalAxioms();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Set getAxioms(AxiomType axiomType) {
        readLock.lock();
        try {
            return delegate.getAxioms(axiomType);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Stream axioms(AxiomType axiomType) {
        readLock.lock();
        try {
            return delegate.axioms(axiomType);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsAxiom(OWLAxiom owlAxiom) {
        readLock.lock();
        try {
            return delegate.containsAxiom(owlAxiom);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(boolean b) {
        readLock.lock();
        try {
            return delegate.getAxioms(b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public int getAxiomCount(boolean b) {
        readLock.lock();
        try {
            return delegate.getAxiomCount(b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getLogicalAxioms(boolean b) {
        readLock.lock();
        try {
            return delegate.getLogicalAxioms(b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public int getLogicalAxiomCount(boolean b) {
        readLock.lock();
        try {
            return delegate.getLogicalAxiomCount(b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Set getAxioms(AxiomType axiomType, boolean b) {
        readLock.lock();
        try {
            return delegate.getAxioms(axiomType, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  int getAxiomCount(AxiomType axiomType, boolean b) {
        readLock.lock();
        try {
            return delegate.getAxiomCount(axiomType, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsAxiom(OWLAxiom owlAxiom, boolean b) {
        readLock.lock();
        try {
            return delegate.containsAxiom(owlAxiom, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsAxiomIgnoreAnnotations(OWLAxiom owlAxiom, boolean b) {
        readLock.lock();
        try {
            return delegate.containsAxiomIgnoreAnnotations(owlAxiom, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxiomsIgnoreAnnotations(OWLAxiom owlAxiom, boolean b) {
        readLock.lock();
        try {
            return delegate.getAxiomsIgnoreAnnotations(owlAxiom, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getReferencingAxioms(OWLPrimitive owlPrimitive, boolean b) {
        readLock.lock();
        try {
            return delegate.getReferencingAxioms(owlPrimitive, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLClass owlClass, boolean b) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlClass, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression, boolean b) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlObjectPropertyExpression, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLDataProperty owlDataProperty, boolean b) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlDataProperty, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLIndividual owlIndividual, boolean b) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlIndividual, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLAnnotationProperty owlAnnotationProperty,
        boolean b) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlAnnotationProperty, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLDatatype owlDatatype, boolean b) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlDatatype, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public int getAxiomCount() {
        readLock.lock();
        try {
            return delegate.getAxiomCount();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public int getLogicalAxiomCount() {
        readLock.lock();
        try {
            return delegate.getLogicalAxiomCount();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  int getAxiomCount(AxiomType axiomType) {
        readLock.lock();
        try {
            return delegate.getAxiomCount(axiomType);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsAxiomIgnoreAnnotations(OWLAxiom owlAxiom) {
        readLock.lock();
        try {
            return delegate.containsAxiomIgnoreAnnotations(owlAxiom);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxiomsIgnoreAnnotations(OWLAxiom owlAxiom) {
        readLock.lock();
        try {
            return delegate.getAxiomsIgnoreAnnotations(owlAxiom);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axiomsIgnoreAnnotations(OWLAxiom owlAxiom) {
        readLock.lock();
        try {
            return delegate.axiomsIgnoreAnnotations(owlAxiom);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getReferencingAxioms(OWLPrimitive owlPrimitive) {
        readLock.lock();
        try {
            return delegate.getReferencingAxioms(owlPrimitive);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream referencingAxioms(OWLPrimitive owlPrimitive) {
        readLock.lock();
        try {
            return delegate.referencingAxioms(owlPrimitive);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLClass owlClass) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlClass);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLDataProperty owlDataProperty) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlDataProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLIndividual owlIndividual) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlIndividual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLAnnotationProperty owlAnnotationProperty) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlAnnotationProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAxioms(OWLDatatype owlDatatype) {
        readLock.lock();
        try {
            return delegate.getAxioms(owlDatatype);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axioms(OWLClass owlClass) {
        readLock.lock();
        try {
            return delegate.axioms(owlClass);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.axioms(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axioms(OWLDataProperty owlDataProperty) {
        readLock.lock();
        try {
            return delegate.axioms(owlDataProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axioms(OWLIndividual owlIndividual) {
        readLock.lock();
        try {
            return delegate.axioms(owlIndividual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axioms(OWLAnnotationProperty owlAnnotationProperty) {
        readLock.lock();
        try {
            return delegate.axioms(owlAnnotationProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axioms(OWLDatatype owlDatatype) {
        readLock.lock();
        try {
            return delegate.axioms(owlDatatype);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getClassesInSignature(Imports imports) {
        readLock.lock();
        try {
            return delegate.getClassesInSignature(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getObjectPropertiesInSignature(Imports imports) {
        readLock.lock();
        try {
            return delegate.getObjectPropertiesInSignature(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDataPropertiesInSignature(Imports imports) {
        readLock.lock();
        try {
            return delegate.getDataPropertiesInSignature(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getIndividualsInSignature(Imports imports) {
        readLock.lock();
        try {
            return delegate.getIndividualsInSignature(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getReferencedAnonymousIndividuals(Imports imports) {
        readLock.lock();
        try {
            return delegate.getReferencedAnonymousIndividuals(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream referencedAnonymousIndividuals(Imports imports) {
        readLock.lock();
        try {
            return delegate.referencedAnonymousIndividuals(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream referencedAnonymousIndividuals() {
        readLock.lock();
        try {
            return delegate.referencedAnonymousIndividuals();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDatatypesInSignature(Imports imports) {
        readLock.lock();
        try {
            return delegate.getDatatypesInSignature(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAnnotationPropertiesInSignature(Imports imports) {
        readLock.lock();
        try {
            return delegate.getAnnotationPropertiesInSignature(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsEntityInSignature(OWLEntity owlEntity, Imports imports) {
        readLock.lock();
        try {
            return delegate.containsEntityInSignature(owlEntity, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsEntityInSignature(IRI iri, Imports imports) {
        readLock.lock();
        try {
            return delegate.containsEntityInSignature(iri, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsClassInSignature(IRI iri, Imports imports) {
        readLock.lock();
        try {
            return delegate.containsClassInSignature(iri, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsObjectPropertyInSignature(IRI iri, Imports imports) {
        readLock.lock();
        try {
            return delegate.containsObjectPropertyInSignature(iri, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsDataPropertyInSignature(IRI iri, Imports imports) {
        readLock.lock();
        try {
            return delegate.containsDataPropertyInSignature(iri, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsAnnotationPropertyInSignature(IRI iri, Imports imports) {
        readLock.lock();
        try {
            return delegate.containsAnnotationPropertyInSignature(iri, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsDatatypeInSignature(IRI iri, Imports imports) {
        readLock.lock();
        try {
            return delegate.containsDatatypeInSignature(iri, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsIndividualInSignature(IRI iri, Imports imports) {
        readLock.lock();
        try {
            return delegate.containsIndividualInSignature(iri, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsDatatypeInSignature(IRI iri) {
        readLock.lock();
        try {
            return delegate.containsDatatypeInSignature(iri);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsEntityInSignature(IRI iri) {
        readLock.lock();
        try {
            return delegate.containsEntityInSignature(iri);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsClassInSignature(IRI iri) {
        readLock.lock();
        try {
            return delegate.containsClassInSignature(iri);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsObjectPropertyInSignature(IRI iri) {
        readLock.lock();
        try {
            return delegate.containsObjectPropertyInSignature(iri);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsDataPropertyInSignature(IRI iri) {
        readLock.lock();
        try {
            return delegate.containsDataPropertyInSignature(iri);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsAnnotationPropertyInSignature(IRI iri) {
        readLock.lock();
        try {
            return delegate.containsAnnotationPropertyInSignature(iri);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsIndividualInSignature(IRI iri) {
        readLock.lock();
        try {
            return delegate.containsIndividualInSignature(iri);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getEntitiesInSignature(IRI iri, Imports imports) {
        readLock.lock();
        try {
            return delegate.getEntitiesInSignature(iri, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getPunnedIRIs(Imports imports) {
        readLock.lock();
        try {
            return delegate.getPunnedIRIs(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsReference(OWLEntity owlEntity, Imports imports) {
        readLock.lock();
        try {
            return delegate.containsReference(owlEntity, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsReference(OWLEntity owlEntity) {
        readLock.lock();
        try {
            return delegate.containsReference(owlEntity);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getEntitiesInSignature(IRI iri) {
        readLock.lock();
        try {
            return delegate.getEntitiesInSignature(iri);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream entitiesInSignature(IRI iri) {
        readLock.lock();
        try {
            return delegate.entitiesInSignature(iri);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getClassesInSignature(boolean b) {
        readLock.lock();
        try {
            return delegate.getClassesInSignature(b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getObjectPropertiesInSignature(boolean b) {
        readLock.lock();
        try {
            return delegate.getObjectPropertiesInSignature(b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDataPropertiesInSignature(boolean b) {
        readLock.lock();
        try {
            return delegate.getDataPropertiesInSignature(b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getIndividualsInSignature(boolean b) {
        readLock.lock();
        try {
            return delegate.getIndividualsInSignature(b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getReferencedAnonymousIndividuals(boolean b) {
        readLock.lock();
        try {
            return delegate.getReferencedAnonymousIndividuals(b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDatatypesInSignature(boolean b) {
        readLock.lock();
        try {
            return delegate.getDatatypesInSignature(b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAnnotationPropertiesInSignature(boolean b) {
        readLock.lock();
        try {
            return delegate.getAnnotationPropertiesInSignature(b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsEntityInSignature(OWLEntity owlEntity, boolean b) {
        readLock.lock();
        try {
            return delegate.containsEntityInSignature(owlEntity, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsEntityInSignature(IRI iri, boolean b) {
        readLock.lock();
        try {
            return delegate.containsEntityInSignature(iri, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsClassInSignature(IRI iri, boolean b) {
        readLock.lock();
        try {
            return delegate.containsClassInSignature(iri, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsObjectPropertyInSignature(IRI iri, boolean b) {
        readLock.lock();
        try {
            return delegate.containsObjectPropertyInSignature(iri, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsDataPropertyInSignature(IRI iri, boolean b) {
        readLock.lock();
        try {
            return delegate.containsDataPropertyInSignature(iri, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsAnnotationPropertyInSignature(IRI iri, boolean b) {
        readLock.lock();
        try {
            return delegate.containsAnnotationPropertyInSignature(iri, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsDatatypeInSignature(IRI iri, boolean b) {
        readLock.lock();
        try {
            return delegate.containsDatatypeInSignature(iri, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsIndividualInSignature(IRI iri, boolean b) {
        readLock.lock();
        try {
            return delegate.containsIndividualInSignature(iri, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getEntitiesInSignature(IRI iri, boolean b) {
        readLock.lock();
        try {
            return delegate.getEntitiesInSignature(iri, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean containsReference(OWLEntity owlEntity, boolean b) {
        readLock.lock();
        try {
            return delegate.containsReference(owlEntity, b);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Set getAxioms(Class aClass, OWLObject owlObject,
        Imports imports,
        Navigation navigation) {
        readLock.lock();
        try {
            return delegate.getAxioms(aClass, owlObject, imports, navigation);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Stream axioms(Class aClass, OWLObject owlObject,
        Imports imports,
        Navigation navigation) {
        readLock.lock();
        try {
            return delegate.axioms(aClass, owlObject, imports, navigation);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Collection filterAxioms(
        OWLAxiomSearchFilter owlAxiomSearchFilter, Object o,
        Imports imports) {
        readLock.lock();
        try {
            return delegate.filterAxioms(owlAxiomSearchFilter, o, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean contains(OWLAxiomSearchFilter owlAxiomSearchFilter, Object o, Imports imports) {
        readLock.lock();
        try {
            return delegate.contains(owlAxiomSearchFilter, o, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public boolean contains(OWLAxiomSearchFilter owlAxiomSearchFilter, Object o) {
        readLock.lock();
        try {
            return delegate.contains(owlAxiomSearchFilter, o);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Set getAxioms(Class aClass,
        Class aClass1,
        OWLObject owlObject, Imports imports, Navigation navigation) {
        readLock.lock();
        try {
            return delegate.getAxioms(aClass, aClass1, owlObject, imports, navigation);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Stream axioms(Class aClass,
        Class aClass1,
        OWLObject owlObject, Imports imports, Navigation navigation) {
        readLock.lock();
        try {
            return delegate.axioms(aClass, aClass1, owlObject, imports, navigation);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getSubAnnotationPropertyOfAxioms(
        OWLAnnotationProperty owlAnnotationProperty) {
        readLock.lock();
        try {
            return delegate.getSubAnnotationPropertyOfAxioms(owlAnnotationProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAnnotationPropertyDomainAxioms(
        OWLAnnotationProperty owlAnnotationProperty) {
        readLock.lock();
        try {
            return delegate.getAnnotationPropertyDomainAxioms(owlAnnotationProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAnnotationPropertyRangeAxioms(
        OWLAnnotationProperty owlAnnotationProperty) {
        readLock.lock();
        try {
            return delegate.getAnnotationPropertyRangeAxioms(owlAnnotationProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream annotationPropertyDomainAxioms(
        OWLAnnotationProperty owlAnnotationProperty) {
        readLock.lock();
        try {
            return delegate.annotationPropertyDomainAxioms(owlAnnotationProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream annotationPropertyRangeAxioms(
        OWLAnnotationProperty owlAnnotationProperty) {
        readLock.lock();
        try {
            return delegate.annotationPropertyRangeAxioms(owlAnnotationProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDeclarationAxioms(OWLEntity owlEntity) {
        readLock.lock();
        try {
            return delegate.getDeclarationAxioms(owlEntity);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAnnotationAssertionAxioms(
        OWLAnnotationSubject owlAnnotationSubject) {
        readLock.lock();
        try {
            return delegate.getAnnotationAssertionAxioms(owlAnnotationSubject);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getSubClassAxiomsForSubClass(OWLClass owlClass) {
        readLock.lock();
        try {
            return delegate.getSubClassAxiomsForSubClass(owlClass);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getSubClassAxiomsForSuperClass(OWLClass owlClass) {
        readLock.lock();
        try {
            return delegate.getSubClassAxiomsForSuperClass(owlClass);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getEquivalentClassesAxioms(OWLClass owlClass) {
        readLock.lock();
        try {
            return delegate.getEquivalentClassesAxioms(owlClass);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDisjointClassesAxioms(OWLClass owlClass) {
        readLock.lock();
        try {
            return delegate.getDisjointClassesAxioms(owlClass);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDisjointUnionAxioms(OWLClass owlClass) {
        readLock.lock();
        try {
            return delegate.getDisjointUnionAxioms(owlClass);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getHasKeyAxioms(OWLClass owlClass) {
        readLock.lock();
        try {
            return delegate.getHasKeyAxioms(owlClass);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getObjectSubPropertyAxiomsForSubProperty(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getObjectSubPropertyAxiomsForSubProperty(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getObjectSubPropertyAxiomsForSuperProperty(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getObjectSubPropertyAxiomsForSuperProperty(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getObjectPropertyDomainAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getObjectPropertyDomainAxioms(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getObjectPropertyRangeAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getObjectPropertyRangeAxioms(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getInverseObjectPropertyAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getInverseObjectPropertyAxioms(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getEquivalentObjectPropertiesAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getEquivalentObjectPropertiesAxioms(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDisjointObjectPropertiesAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getDisjointObjectPropertiesAxioms(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getFunctionalObjectPropertyAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getFunctionalObjectPropertyAxioms(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getInverseFunctionalObjectPropertyAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getInverseFunctionalObjectPropertyAxioms(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getSymmetricObjectPropertyAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getSymmetricObjectPropertyAxioms(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAsymmetricObjectPropertyAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getAsymmetricObjectPropertyAxioms(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getReflexiveObjectPropertyAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getReflexiveObjectPropertyAxioms(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getIrreflexiveObjectPropertyAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getIrreflexiveObjectPropertyAxioms(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getTransitiveObjectPropertyAxioms(
        OWLObjectPropertyExpression owlObjectPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getTransitiveObjectPropertyAxioms(owlObjectPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDataSubPropertyAxiomsForSubProperty(
        OWLDataProperty owlDataProperty) {
        readLock.lock();
        try {
            return delegate.getDataSubPropertyAxiomsForSubProperty(owlDataProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDataSubPropertyAxiomsForSuperProperty(
        OWLDataPropertyExpression owlDataPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getDataSubPropertyAxiomsForSuperProperty(owlDataPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDataPropertyDomainAxioms(
        OWLDataProperty owlDataProperty) {
        readLock.lock();
        try {
            return delegate.getDataPropertyDomainAxioms(owlDataProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDataPropertyRangeAxioms(
        OWLDataProperty owlDataProperty) {
        readLock.lock();
        try {
            return delegate.getDataPropertyRangeAxioms(owlDataProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getEquivalentDataPropertiesAxioms(
        OWLDataProperty owlDataProperty) {
        readLock.lock();
        try {
            return delegate.getEquivalentDataPropertiesAxioms(owlDataProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDisjointDataPropertiesAxioms(
        OWLDataProperty owlDataProperty) {
        readLock.lock();
        try {
            return delegate.getDisjointDataPropertiesAxioms(owlDataProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getFunctionalDataPropertyAxioms(
        OWLDataPropertyExpression owlDataPropertyExpression) {
        readLock.lock();
        try {
            return delegate.getFunctionalDataPropertyAxioms(owlDataPropertyExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getClassAssertionAxioms(OWLIndividual owlIndividual) {
        readLock.lock();
        try {
            return delegate.getClassAssertionAxioms(owlIndividual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getClassAssertionAxioms(
        OWLClassExpression owlClassExpression) {
        readLock.lock();
        try {
            return delegate.getClassAssertionAxioms(owlClassExpression);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDataPropertyAssertionAxioms(
        OWLIndividual owlIndividual) {
        readLock.lock();
        try {
            return delegate.getDataPropertyAssertionAxioms(owlIndividual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getObjectPropertyAssertionAxioms(
        OWLIndividual owlIndividual) {
        readLock.lock();
        try {
            return delegate.getObjectPropertyAssertionAxioms(owlIndividual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getNegativeObjectPropertyAssertionAxioms(
        OWLIndividual owlIndividual) {
        readLock.lock();
        try {
            return delegate.getNegativeObjectPropertyAssertionAxioms(owlIndividual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getNegativeDataPropertyAssertionAxioms(
        OWLIndividual owlIndividual) {
        readLock.lock();
        try {
            return delegate.getNegativeDataPropertyAssertionAxioms(owlIndividual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getSameIndividualAxioms(OWLIndividual owlIndividual) {
        readLock.lock();
        try {
            return delegate.getSameIndividualAxioms(owlIndividual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDifferentIndividualAxioms(
        OWLIndividual owlIndividual) {
        readLock.lock();
        try {
            return delegate.getDifferentIndividualAxioms(owlIndividual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getDatatypeDefinitions(OWLDatatype owlDatatype) {
        readLock.lock();
        try {
            return delegate.getDatatypeDefinitions(owlDatatype);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public ChangeApplied applyChange(OWLOntologyChange owlOntologyChange) {
        writeLock.lock();
        try {
            return getMutableOntology().applyChange(owlOntologyChange);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public ChangeDetails applyChangesAndGetDetails(List list) {
        writeLock.lock();
        try {
            return getMutableOntology().applyChangesAndGetDetails(list);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public ChangeApplied addAxiom(OWLAxiom owlAxiom) {
        writeLock.lock();
        try {
            return getMutableOntology().addAxiom(owlAxiom);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public ChangeApplied addAxioms(Collection set) {
        writeLock.lock();
        try {
            return getMutableOntology().addAxioms(set);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public ChangeApplied addAxioms(OWLAxiom... set) {
        writeLock.lock();
        try {
            return getMutableOntology().addAxioms(set);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public ChangeApplied add(OWLAxiom owlAxiom) {
        writeLock.lock();
        try {
            return getMutableOntology().add(owlAxiom);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public ChangeApplied add(Collection set) {
        writeLock.lock();
        try {
            return getMutableOntology().add(set);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public ChangeApplied add(OWLAxiom... set) {
        writeLock.lock();
        try {
            return getMutableOntology().add(set);
        } finally {
            writeLock.unlock();
        }
    }

    private OWLMutableOntology getMutableOntology() {
        return (OWLMutableOntology) delegate;
    }

    @Override
    public Stream importsDeclarations() {
        readLock.lock();
        try {
            return delegate.importsDeclarations();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Stream axioms(OWLAxiomSearchFilter filter, Object key,
        Imports includeImportsClosure) {
        readLock.lock();
        try {
            return delegate.axioms(filter, key, includeImportsClosure);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Stream axioms(OWLAxiomSearchFilter filter, Object key) {
        readLock.lock();
        try {
            return delegate.axioms(filter, key);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Stream axioms(Class type,
        Class explicitClass,
        OWLObject entity, Navigation forSubPosition) {
        readLock.lock();
        try {
            return delegate.axioms(type, explicitClass, entity, forSubPosition);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream subAnnotationPropertyOfAxioms(
        OWLAnnotationProperty subProperty) {
        readLock.lock();
        try {
            return delegate.subAnnotationPropertyOfAxioms(subProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream datatypeDefinitions(OWLDatatype datatype) {
        readLock.lock();
        try {
            return delegate.datatypeDefinitions(datatype);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public ChangeApplied removeAxiom(OWLAxiom axiom) {
        writeLock.lock();
        try {
            return delegate.removeAxiom(axiom);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public ChangeApplied removeAxioms(Collection axioms) {
        writeLock.lock();
        try {
            return delegate.removeAxioms(axioms);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public ChangeApplied removeAxioms(OWLAxiom... axioms) {
        writeLock.lock();
        try {
            return delegate.removeAxioms(axioms);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public ChangeApplied remove(OWLAxiom axiom) {
        writeLock.lock();
        try {
            return delegate.remove(axiom);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public ChangeApplied remove(Collection axioms) {
        writeLock.lock();
        try {
            return delegate.remove(axioms);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public ChangeApplied remove(OWLAxiom... axioms) {
        writeLock.lock();
        try {
            return delegate.remove(axioms);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public ChangeApplied applyDirectChange(OWLOntologyChange change) {
        writeLock.lock();
        try {
            return delegate.applyDirectChange(change);
        } finally {
            writeLock.unlock();
        }
    }

    @Override
    public Stream disjointObjectPropertiesAxioms(
        OWLObjectPropertyExpression property) {
        readLock.lock();
        try {
            return delegate.disjointObjectPropertiesAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream objectPropertiesInSignature() {
        readLock.lock();
        try {
            return delegate.objectPropertiesInSignature();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream annotationAssertionAxioms(
        OWLAnnotationSubject entity) {
        readLock.lock();
        try {
            return delegate.annotationAssertionAxioms(entity);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream annotationAssertionAxioms(
        OWLAnnotationSubject entity, Imports imports) {
        readLock.lock();
        try {
            return delegate.annotationAssertionAxioms(entity, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream annotationPropertiesInSignature() {
        readLock.lock();
        try {
            return delegate.annotationPropertiesInSignature();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream annotationPropertiesInSignature(Imports imports) {
        readLock.lock();
        try {
            return delegate.annotationPropertiesInSignature(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream annotations() {
        readLock.lock();
        try {
            return delegate.annotations();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream annotations(OWLAnnotationProperty p) {
        readLock.lock();
        try {
            return delegate.annotations(p);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream annotations(Predicate p) {
        readLock.lock();
        try {
            return delegate.annotations(p);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream anonymousIndividuals() {
        readLock.lock();
        try {
            return delegate.anonymousIndividuals();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream asymmetricObjectPropertyAxioms(
        OWLObjectPropertyExpression property) {
        readLock.lock();
        try {
            return delegate.asymmetricObjectPropertyAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Stream axioms(Class type, OWLObject entity,
        Navigation forSubPosition) {
        readLock.lock();
        try {
            return delegate.axioms(type, entity, forSubPosition);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axioms(Imports imports) {
        readLock.lock();
        try {
            return delegate.axioms(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axioms(OWLAnnotationProperty property, Imports imports) {
        readLock.lock();
        try {
            return delegate.axioms(property, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axioms(OWLClass cls, Imports imports) {
        readLock.lock();
        try {
            return delegate.axioms(cls, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axioms(OWLDataProperty property, Imports imports) {
        readLock.lock();
        try {
            return delegate.axioms(property, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axioms(OWLDatatype datatype, Imports imports) {
        readLock.lock();
        try {
            return delegate.axioms(datatype, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axioms(OWLIndividual individual, Imports imports) {
        readLock.lock();
        try {
            return delegate.axioms(individual, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream axioms(OWLObjectPropertyExpression property,
        Imports imports) {
        readLock.lock();
        try {
            return delegate.axioms(property, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream classAssertionAxioms(OWLClassExpression ce) {
        readLock.lock();
        try {
            return delegate.classAssertionAxioms(ce);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream classAssertionAxioms(OWLIndividual individual) {
        readLock.lock();
        try {
            return delegate.classAssertionAxioms(individual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream classesInSignature() {
        readLock.lock();
        try {
            return delegate.classesInSignature();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream classesInSignature(Imports imports) {
        readLock.lock();
        try {
            return delegate.classesInSignature(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream dataPropertiesInSignature() {
        readLock.lock();
        try {
            return delegate.dataPropertiesInSignature();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream dataPropertiesInSignature(Imports imports) {
        readLock.lock();
        try {
            return delegate.dataPropertiesInSignature(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream dataPropertyAssertionAxioms(
        OWLIndividual individual) {
        readLock.lock();
        try {
            return delegate.dataPropertyAssertionAxioms(individual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream dataPropertyDomainAxioms(OWLDataProperty property) {
        readLock.lock();
        try {
            return delegate.dataPropertyDomainAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream dataPropertyRangeAxioms(OWLDataProperty property) {
        readLock.lock();
        try {
            return delegate.dataPropertyRangeAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream dataSubPropertyAxiomsForSubProperty(
        OWLDataProperty subProperty) {
        readLock.lock();
        try {
            return delegate.dataSubPropertyAxiomsForSubProperty(subProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream dataSubPropertyAxiomsForSuperProperty(
        OWLDataPropertyExpression superProperty) {
        readLock.lock();
        try {
            return delegate.dataSubPropertyAxiomsForSuperProperty(superProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream datatypesInSignature() {
        readLock.lock();
        try {
            return delegate.datatypesInSignature();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream datatypesInSignature(Imports imports) {
        readLock.lock();
        try {
            return delegate.datatypesInSignature(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream declarationAxioms(OWLEntity subject) {
        readLock.lock();
        try {
            return delegate.declarationAxioms(subject);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream differentIndividualAxioms(
        OWLIndividual individual) {
        readLock.lock();
        try {
            return delegate.differentIndividualAxioms(individual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream disjointClassesAxioms(OWLClass cls) {
        readLock.lock();
        try {
            return delegate.disjointClassesAxioms(cls);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream disjointDataPropertiesAxioms(
        OWLDataProperty property) {
        readLock.lock();
        try {
            return delegate.disjointDataPropertiesAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream disjointUnionAxioms(OWLClass owlClass) {
        readLock.lock();
        try {
            return delegate.disjointUnionAxioms(owlClass);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream entitiesInSignature(IRI iri, Imports imports) {
        readLock.lock();
        try {
            return delegate.entitiesInSignature(iri, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream equivalentClassesAxioms(OWLClass cls) {
        readLock.lock();
        try {
            return delegate.equivalentClassesAxioms(cls);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream equivalentDataPropertiesAxioms(
        OWLDataProperty property) {
        readLock.lock();
        try {
            return delegate.equivalentDataPropertiesAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream equivalentObjectPropertiesAxioms(
        OWLObjectPropertyExpression property) {
        readLock.lock();
        try {
            return delegate.equivalentObjectPropertiesAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Collection filterAxioms(OWLAxiomSearchFilter filter,
        Object key) {
        readLock.lock();
        try {
            return delegate.filterAxioms(filter, key);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream functionalDataPropertyAxioms(
        OWLDataPropertyExpression property) {
        readLock.lock();
        try {
            return delegate.functionalDataPropertyAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream functionalObjectPropertyAxioms(
        OWLObjectPropertyExpression property) {
        readLock.lock();
        try {
            return delegate.functionalObjectPropertyAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAnnotationAssertionAxioms(
        OWLAnnotationSubject entity, Imports imports) {
        readLock.lock();
        try {
            return delegate.getAnnotationAssertionAxioms(entity, imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getAnnotations(OWLAnnotationProperty annotationProperty) {
        readLock.lock();
        try {
            return delegate.getAnnotations(annotationProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Set getAxioms(Class type,
        Class explicitClass,
        OWLObject entity, Navigation forSubPosition) {
        readLock.lock();
        try {
            return delegate.getAxioms(type, explicitClass, entity, forSubPosition);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public  Set getAxioms(Class type, OWLObject entity,
        Navigation forSubPosition) {
        readLock.lock();
        try {
            return delegate.getAxioms(type, entity, forSubPosition);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    @Nullable
    public OWLDocumentFormat getFormat() {
        readLock.lock();
        try {
            return delegate.getFormat();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Set getReferencedAnonymousIndividuals() {
        readLock.lock();
        try {
            return delegate.getReferencedAnonymousIndividuals();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream hasKeyAxioms(OWLClass cls) {
        readLock.lock();
        try {
            return delegate.hasKeyAxioms(cls);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream individualsInSignature() {
        readLock.lock();
        try {
            return delegate.individualsInSignature();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream individualsInSignature(Imports imports) {
        readLock.lock();
        try {
            return delegate.individualsInSignature(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream inverseFunctionalObjectPropertyAxioms(
        OWLObjectPropertyExpression property) {
        readLock.lock();
        try {
            return delegate.inverseFunctionalObjectPropertyAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream inverseObjectPropertyAxioms(
        OWLObjectPropertyExpression property) {
        readLock.lock();
        try {
            return delegate.inverseObjectPropertyAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream irreflexiveObjectPropertyAxioms(
        OWLObjectPropertyExpression property) {
        readLock.lock();
        try {
            return delegate.irreflexiveObjectPropertyAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream logicalAxioms(Imports imports) {
        readLock.lock();
        try {
            return delegate.logicalAxioms(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream negativeDataPropertyAssertionAxioms(
        OWLIndividual individual) {
        readLock.lock();
        try {
            return delegate.negativeDataPropertyAssertionAxioms(individual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream negativeObjectPropertyAssertionAxioms(
        OWLIndividual individual) {
        readLock.lock();
        try {
            return delegate.negativeObjectPropertyAssertionAxioms(individual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream nestedClassExpressions() {
        readLock.lock();
        try {
            return delegate.nestedClassExpressions();
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream objectPropertiesInSignature(Imports imports) {
        readLock.lock();
        try {
            return delegate.objectPropertiesInSignature(imports);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream objectPropertyAssertionAxioms(
        OWLIndividual individual) {
        readLock.lock();
        try {
            return delegate.objectPropertyAssertionAxioms(individual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream objectPropertyDomainAxioms(
        OWLObjectPropertyExpression property) {
        readLock.lock();
        try {
            return delegate.objectPropertyDomainAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream objectPropertyRangeAxioms(
        OWLObjectPropertyExpression property) {
        readLock.lock();
        try {
            return delegate.objectPropertyRangeAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream objectSubPropertyAxiomsForSubProperty(
        OWLObjectPropertyExpression subProperty) {
        readLock.lock();
        try {
            return delegate.objectSubPropertyAxiomsForSubProperty(subProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream objectSubPropertyAxiomsForSuperProperty(
        OWLObjectPropertyExpression superProperty) {
        readLock.lock();
        try {
            return delegate.objectSubPropertyAxiomsForSuperProperty(superProperty);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream reflexiveObjectPropertyAxioms(
        OWLObjectPropertyExpression property) {
        readLock.lock();
        try {
            return delegate.reflexiveObjectPropertyAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream sameIndividualAxioms(OWLIndividual individual) {
        readLock.lock();
        try {
            return delegate.sameIndividualAxioms(individual);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream subClassAxiomsForSubClass(OWLClass cls) {
        readLock.lock();
        try {
            return delegate.subClassAxiomsForSubClass(cls);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream subClassAxiomsForSuperClass(OWLClass cls) {
        readLock.lock();
        try {
            return delegate.subClassAxiomsForSuperClass(cls);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream symmetricObjectPropertyAxioms(
        OWLObjectPropertyExpression property) {
        readLock.lock();
        try {
            return delegate.symmetricObjectPropertyAxioms(property);
        } finally {
            readLock.unlock();
        }
    }

    @Override
    public Stream transitiveObjectPropertyAxioms(
        OWLObjectPropertyExpression property) {
        readLock.lock();
        try {
            return delegate.transitiveObjectPropertyAxioms(property);
        } finally {
            readLock.unlock();
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy