find_package(Boost REQUIRED regex system filesystem program_options
    serialization)

rock_library(owlapi
    SOURCES
        KnowledgeBase.cpp
        db/FileBackend.cpp
        db/rdf/Redland.cpp
        db/rdf/SopranoDB.cpp
        db/rdf/Sparql.cpp
        db/rdf/SparqlInterface.cpp
        db/rdf/Variable.cpp
        io/OWLOntologyIO.cpp
        io/OWLOntologyReader.cpp
        io/OWLIOBase.cpp
        io/OWLReader.cpp
        io/OWLWriter.cpp
        io/RedlandReader.cpp
        io/RedlandWriter.cpp
        io/XMLUtils.cpp
        model/IRI.cpp
        model/NodeID.cpp
        model/OWLAxiom.cpp
        model/OWLCardinalityRestriction.cpp
        model/OWLClass.cpp
        model/OWLClassAssertionAxiom.cpp
        model/OWLClassExpression.cpp
        model/OWLDataOneOf.cpp
        model/OWLDataProperty.cpp
        model/OWLDataPropertyAssertionAxiom.cpp
        model/OWLDataRange.cpp
        model/OWLDataType.cpp
        model/OWLDeclarationAxiom.cpp
        model/OWLDisjointClassesAxiom.cpp
        model/OWLDisjointUnionAxiom.cpp
        model/OWLEntity.cpp
        model/OWLEquivalentClassesAxiom.cpp
        model/OWLExactCardinalityRestriction.cpp
        model/OWLLiteral.cpp
        model/OWLLiteralDouble.cpp
        model/OWLLiteralInteger.cpp
        model/OWLObject.cpp
        model/OWLObjectPropertyAssertionAxiom.cpp
        model/OWLOntology.cpp
        model/OWLOntologyAsk.cpp
        model/OWLOntologyTell.cpp
        model/OWLPropertyExpression.cpp
        model/OWLQualifiedRestriction.cpp
        model/OWLRestriction.cpp
        model/OWLSubClassOfAxiom.cpp
        model/OWLValueRestriction.cpp
        model/QueryCache.cpp
        model/URI.cpp
        model/RemoveAxiom.cpp
        model/OWLAxiomChange.cpp
        model/OWLAxiomRetractVisitor.cpp
        model/OWLAxiomAddVisitor.cpp
        model/OWLOntologyChange.cpp
        reasoner/factpp/Types.cpp
    HEADERS
        Exceptions.hpp
        KnowledgeBase.hpp
        OWLApi.hpp
        SharedPtr.hpp
        Vocabulary.hpp
        db/FileBackend.hpp
        db/rdf/Redland.hpp
        db/rdf/SopranoDB.hpp
        db/rdf/Sparql.hpp
        db/rdf/SparqlInterface.hpp
        db/rdf/Variable.hpp
        io/OWLOntologyIO.hpp
        io/OWLOntologyReader.hpp
        io/OWLIOBase.hpp
        io/OWLReader.hpp
        io/OWLWriter.hpp
        io/RedlandReader.hpp
        io/RedlandWriter.hpp
        io/XMLUtils.hpp
        model/ChangeApplied.hpp
        model/HasAnnotations.hpp
        model/HasIRI.hpp
        model/IRI.hpp
        model/NodeID.hpp
        model/OWLAllValuesFromRestriction.hpp
        model/OWLAnnotation.hpp
        model/OWLAnnotationAxiom.hpp
        model/OWLAnnotationObject.hpp
        model/OWLAnnotationProperty.hpp
        model/OWLAnnotationValue.hpp
        model/OWLAnonymousClassExpression.hpp
        model/OWLAnonymousIndividual.hpp
        model/OWLAsymmetricObjectPropertyAxiom.hpp
        model/OWLAxiom.hpp
        model/OWLAxiomVisitor.hpp
        model/OWLAxiomRetractVisitor.hpp
        model/OWLAxiomAddVisitor.hpp
        model/OWLCardinalityRestriction.hpp
        model/OWLClass.hpp
        model/OWLClassAssertionAxiom.hpp
        model/OWLClassAxiom.hpp
        model/OWLClassExpression.hpp
        model/OWLDataOneOf.hpp
        model/OWLDataProperty.hpp
        model/OWLDataPropertyAssertionAxiom.hpp
        model/OWLDataPropertyAxiom.hpp
        model/OWLDataPropertyDomainAxiom.hpp
        model/OWLDataPropertyExpression.hpp
        model/OWLDataPropertyRangeAxiom.hpp
        model/OWLDataRange.hpp
        model/OWLDataType.hpp
        model/OWLDeclarationAxiom.hpp
        model/OWLDisjointClassesAxiom.hpp
        model/OWLDisjointObjectPropertiesAxiom.hpp
        model/OWLDisjointDataPropertiesAxiom.hpp
        model/OWLDisjointUnionAxiom.hpp
        model/OWLEntity.hpp
        model/OWLEquivalentClassesAxiom.hpp
        model/OWLEquivalentObjectPropertiesAxiom.hpp
        model/OWLEquivalentDataPropertiesAxiom.hpp
        model/OWLExactCardinalityRestriction.hpp
        model/OWLFunctionalDataPropertyAxiom.hpp
        model/OWLFunctionalObjectPropertyAxiom.hpp
        model/OWLHasSelfRestriction.hpp
        model/OWLHasValueRestriction.hpp
        model/OWLIndividual.hpp
        model/OWLIndividualAxiom.hpp
        model/OWLInverseFunctionalObjectPropertyAxiom.hpp
        model/OWLInverseObjectPropertiesAxiom.hpp
        model/OWLInverseObjectProperty.hpp
        model/OWLIrreflexiveObjectPropertyAxiom.hpp
        model/OWLLiteral.hpp
        model/OWLLiteralDouble.hpp
        model/OWLLiteralInteger.hpp
        model/OWLLiteralNonNegativeInteger.hpp
        model/OWLLiteralNumeric.hpp
        model/OWLLogicalAxiom.hpp
        model/OWLLogicalEntity.hpp
        model/OWLMaxCardinalityRestriction.hpp
        model/OWLMinCardinalityRestriction.hpp
        model/OWLNamedIndividual.hpp
        model/OWLNamedObject.hpp
        model/OWLNaryAxiom.hpp
        model/OWLNaryClassAxiom.hpp
        model/OWLObject.hpp
        model/OWLObjectAllValuesFrom.hpp
        model/OWLObjectExactCardinality.hpp
        model/OWLObjectHasSelf.hpp
        model/OWLObjectHasValue.hpp
        model/OWLObjectMaxCardinality.hpp
        model/OWLObjectMinCardinality.hpp
        model/OWLObjectProperty.hpp
        model/OWLObjectPropertyAssertionAxiom.hpp
        model/OWLObjectPropertyAxiom.hpp
        model/OWLObjectPropertyCharacteristicAxiom.hpp
        model/OWLObjectPropertyDomainAxiom.hpp
        model/OWLObjectPropertyExpression.hpp
        model/OWLObjectPropertyRangeAxiom.hpp
        model/OWLObjectSomeValuesFrom.hpp
        model/OWLOntology.hpp
        model/OWLOntologyAsk.hpp
        model/OWLOntologyTell.hpp
        model/OWLProperty.hpp
        model/OWLPropertyAssertionAxiom.hpp
        model/OWLPropertyAssertionObject.hpp
        model/OWLPropertyAxiom.hpp
        model/OWLPropertyDomainAxiom.hpp
        model/OWLPropertyExpression.hpp
        model/OWLPropertyRange.hpp
        model/OWLPropertyRangeAxiom.hpp
        model/OWLQualifiedRestriction.hpp
        model/OWLReasoner.hpp
        model/OWLReflexiveObjectPropertyAxiom.hpp
        model/OWLRestriction.hpp
        model/OWLSomeValuesFromRestriction.hpp
        model/OWLSubClassOfAxiom.hpp
        model/OWLSubDataPropertyOfAxiom.hpp
        model/OWLSubObjectPropertyOfAxiom.hpp
        model/OWLSubPropertyAxiom.hpp
        model/OWLSymmetricObjectPropertyAxiom.hpp
        model/OWLTransitiveObjectPropertyAxiom.hpp
        model/OWLUnaryPropertyAxiom.hpp
        model/OWLValueRestriction.hpp
        model/QueryCache.hpp
        model/URI.hpp
        model/RemoveAxiom.hpp
        model/OWLAxiomChange.hpp
        model/OWLOntologyChange.hpp
        model/OWLOntologyChangeVisitor.hpp
        reasoner/factpp/AxiomVisitor.hpp
        reasoner/factpp/Types.hpp
        vocabularies/OWL.hpp
        vocabularies/RDF.hpp
        vocabularies/RDFS.hpp
        vocabularies/XSD.hpp
    DEPS_PKGCONFIG
        base-logging
        factpp
        liburiparser
        soprano
        redland
        raptor2
        utilmm
        icu-i18n
        icu-io
        icu-le
        icu-lx
        icu-uc
    DEPS_PLAIN
        Boost_PROGRAM_OPTIONS
        Boost_REGEX
        Boost_SYSTEM
        Boost_FILESYSTEM
)

target_include_directories(owlapi PUBLIC ${Boost_INCLUDE_DIR})

rock_executable(owlapi-ontology_reader
    SOURCES utils/OntologyReaderMain.cpp
    DEPS owlapi)

rock_executable(owlapi-utils
    SOURCES utils/OWLApi.cpp
    DEPS owlapi)
