@prefix : <http://odahub.io/ontology#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://odahub.io/ontology#> .

<http://odahub.io/ontology> rdf:type owl:Ontology ;
                             <http://purl.org/dc/elements/1.1/abstract> """IVOA kindly provides various data and object types, but very little is availble about workflow types. 
                                It is possible to combine function types (e.g. https://fno.io) with data types. 
                                In this ontology we define supporting types, our own versions of some of the generic types, 
                                and anything else needed to descrie Astrophysical Analysis Workflows.
                                Please refer to https://odahub.io/docs/guide-ontology/ for instructions on how to contribute.""" ;
                             <http://purl.org/dc/elements/1.1/creator> <https://github.com/andriineronov> ,
                                                                       <https://github.com/burnout87> ,
                                                                       <https://github.com/dsavchenko> ,
                                                                       <https://github.com/volodymyrss> ;
                             <http://purl.org/dc/elements/1.1/description> """Astrophysical Workflows, and corresponding input-output data types (Data Products, Input Parameters, etc) 
                                used in MMODA project (https://www.astro.unige.ch/mmoda/, https://odahub.io/)""" ;
                             <http://purl.org/dc/elements/1.1/source> "https://github.com/volodymyrss/hugo-odahub.git" ;
                             <http://purl.org/dc/elements/1.1/title> "MMODA Astrophysical Workflow Ontology" ,
                                                                     "MMODA Astrophysical Workflows and Data Products" ;
                             <http://purl.org/vocab/vann/preferredNamespaceUri> "http://odahub.io/ontology" ;
                             owl:versionIRI "26a20b0" ;
                             <http://xmlns.com/foaf/0.1/logo> <https://www.astro.unige.ch/mmoda/sites/all/themes/bootstrap_mmoda/logo.png> .

#################################################################
#    Annotation properties
#################################################################

###  http://odahub.io/ontology#allowed_value
:allowed_value rdf:type owl:AnnotationProperty .


###  http://odahub.io/ontology#format
:format rdf:type owl:AnnotationProperty .


###  http://odahub.io/ontology#lower_limit
:lower_limit rdf:type owl:AnnotationProperty .


###  http://odahub.io/ontology#symbol
:symbol rdf:type owl:AnnotationProperty .


###  http://odahub.io/ontology#title
:title rdf:type owl:AnnotationProperty .


###  http://odahub.io/ontology#unit
:unit rdf:type owl:AnnotationProperty .


###  http://odahub.io/ontology#upper_limit
:upper_limit rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/elements/1.1/abstract
<http://purl.org/dc/elements/1.1/abstract> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/elements/1.1/creator
<http://purl.org/dc/elements/1.1/creator> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/elements/1.1/description
<http://purl.org/dc/elements/1.1/description> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/elements/1.1/source
<http://purl.org/dc/elements/1.1/source> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/elements/1.1/title
<http://purl.org/dc/elements/1.1/title> rdf:type owl:AnnotationProperty .


###  http://purl.org/vocab/vann/preferredNamespaceUri
<http://purl.org/vocab/vann/preferredNamespaceUri> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/2002/07/owl#versionIRI
owl:versionIRI rdf:type owl:AnnotationProperty .


###  http://xmlns.com/foaf/0.1/logo
<http://xmlns.com/foaf/0.1/logo> rdf:type owl:AnnotationProperty .


#################################################################
#    Object Properties
#################################################################

###  http://odahub.io/ontology#accessMode
:accessMode rdf:type owl:ObjectProperty ;
            rdfs:domain :StorageResource ;
            rdfs:range :StorageAccessType .


###  http://odahub.io/ontology#hasCoordinates
:hasCoordinates rdf:type owl:ObjectProperty ;
                rdfs:subPropertyOf owl:topObjectProperty ;
                rdfs:domain :AstrophysicalObject ;
                rdfs:range :SkyCoordinates ;
                rdfs:label "hasCoordinates" .


###  http://odahub.io/ontology#hasDec
:hasDec rdf:type owl:ObjectProperty ;
        rdfs:subPropertyOf owl:topObjectProperty ;
        rdfs:domain :SkyCoordinates ;
        rdfs:range :Declination ;
        rdfs:label "hasDec" .


###  http://odahub.io/ontology#hasRA
:hasRA rdf:type owl:ObjectProperty ;
       rdfs:subPropertyOf owl:topObjectProperty ;
       rdfs:domain :SkyCoordinates ;
       rdfs:range :RightAscension ;
       rdfs:label "hasRA" .


###  http://odahub.io/ontology#has_format
:has_format rdf:type owl:ObjectProperty ;
            rdfs:subPropertyOf owl:topObjectProperty ;
            rdf:type owl:FunctionalProperty ;
            rdfs:domain :WorkflowParameter ;
            rdfs:range :ParameterFormat .


###  http://odahub.io/ontology#has_unit
:has_unit rdf:type owl:ObjectProperty ;
          rdfs:subPropertyOf owl:topObjectProperty ;
          rdf:type owl:FunctionalProperty ;
          rdfs:domain :WorkflowParameter ;
          rdfs:range <http://odahub.io/ontology/unit#Unit> .


###  http://odahub.io/ontology#isRequesting
:isRequesting rdf:type owl:ObjectProperty ;
              rdfs:subPropertyOf owl:topObjectProperty ;
              rdfs:domain :Workflow ;
              rdfs:range :AstrophysicalObject ,
                         :SkyCoordinates .


###  http://odahub.io/ontology#isRequestingAstroObject
:isRequestingAstroObject rdf:type owl:ObjectProperty ;
                         rdfs:subPropertyOf :isRequesting ;
                         rdfs:domain :Workflow ;
                         rdfs:range :AstrophysicalObject ;
                         rdfs:comment "This properties indicates that the :Workflow is making internally a call to another :Workflow, which derives some data about an :AstrophysicalObject" .


###  http://odahub.io/ontology#isRequestingParameter
:isRequestingParameter rdf:type owl:ObjectProperty ;
                       rdfs:subPropertyOf :isRequesting .


###  http://odahub.io/ontology#isUsing
:isUsing rdf:type owl:ObjectProperty ;
         rdfs:subPropertyOf :isRequesting ;
         rdfs:domain :Workflow ;
         rdfs:range :Workflow .


###  http://odahub.io/ontology#usesOptionalResource
:usesOptionalResource rdf:type owl:ObjectProperty ;
                      rdfs:subPropertyOf :usesResource .


###  http://odahub.io/ontology#usesRequiredResource
:usesRequiredResource rdf:type owl:ObjectProperty ;
                      rdfs:subPropertyOf :usesResource .


###  http://odahub.io/ontology#usesResource
:usesResource rdf:type owl:ObjectProperty ;
              rdfs:subPropertyOf owl:topObjectProperty ;
              rdfs:domain :Workflow ;
              rdfs:range :Resource .


#################################################################
#    Data properties
#################################################################

###  http://odahub.io/ontology#memory_per_process
:memory_per_process rdf:type owl:DatatypeProperty ,
                             owl:FunctionalProperty ;
                    rdfs:domain :ComputeResource .


###  http://odahub.io/ontology#mount
:mount rdf:type owl:DatatypeProperty ,
                owl:FunctionalProperty ;
       rdfs:domain :HTTPURLFile .


###  http://odahub.io/ontology#n_processes
:n_processes rdf:type owl:DatatypeProperty ,
                      owl:FunctionalProperty ;
             rdfs:domain :ComputeResource .


###  http://odahub.io/ontology#resourceBindingEnvVarName
:resourceBindingEnvVarName rdf:type owl:DatatypeProperty ;
                           rdfs:domain :Resource .


###  http://odahub.io/ontology#value
:value rdf:type owl:DatatypeProperty ;
       rdfs:subPropertyOf owl:topDataProperty ;
       rdf:type owl:FunctionalProperty ;
       rdfs:domain :WorkflowParameter .


#################################################################
#    Classes
#################################################################

###  http://odahub.io/ontology#Angle
:Angle rdf:type owl:Class ;
       rdfs:subClassOf :Float ,
                       [ rdf:type owl:Restriction ;
                         owl:onProperty :has_unit ;
                         owl:someValuesFrom <http://odahub.io/ontology/unit#AngleUnit>
                       ] .


###  http://odahub.io/ontology#AngleDegrees
:AngleDegrees rdf:type owl:Class ;
              rdfs:subClassOf :Angle ,
                              :degree .


###  http://odahub.io/ontology#AngleMinutes
:AngleMinutes rdf:type owl:Class ;
              rdfs:subClassOf :Angle ,
                              :arcmin .


###  http://odahub.io/ontology#AngleSeconds
:AngleSeconds rdf:type owl:Class ;
              rdfs:subClassOf :Angle ,
                              :arcsec .


###  http://odahub.io/ontology#Angstrom
:Angstrom rdf:type owl:Class ;
          rdfs:subClassOf :ExpressedInUnit ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :has_unit ;
                            owl:hasValue <http://odahub.io/ontology/unit#Angstrom>
                          ] .


###  http://odahub.io/ontology#AstrophysicalObject
:AstrophysicalObject rdf:type owl:Class ;
                     rdfs:subClassOf :String ;
                     rdfs:comment "Any Astrophysical object, possibly contained in space and/or time: Galaxy, Gamma-Ray Burst, Universe. Note that an object can be spatially or temporarily contained within another: e.g. a BlazarFlare is an episode of Blazar life, and a SunSpot is on the Sun." ;
                     rdfs:label "AstrophysicalObject" .


###  http://odahub.io/ontology#AstrophysicalObjectOfInterest
:AstrophysicalObjectOfInterest rdf:type owl:Class ;
                               rdfs:subClassOf :AstrophysicalObject ;
                               rdfs:label "AstrophysicalObjectOfInterest" .


###  http://odahub.io/ontology#AstroqueryModule
:AstroqueryModule rdf:type owl:Class ;
                  rdfs:subClassOf owl:Thing ;
                  rdfs:comment "An astroquery module is used internally by workflows to access data (observations, catalogs, etc)." ;
                  rdfs:label "AstroqueryModule" .


###  http://odahub.io/ontology#Boolean
:Boolean rdf:type owl:Class ;
         rdfs:subClassOf :ParameterProduct ,
                         :WorkflowParameter ,
                         [ rdf:type owl:Restriction ;
                           owl:onProperty :value ;
                           owl:allValuesFrom xsd:boolean
                         ] .


###  http://odahub.io/ontology#ComputeResource
:ComputeResource rdf:type owl:Class ;
                 rdfs:subClassOf :Resource .


###  http://odahub.io/ontology#Dask
:Dask rdf:type owl:Class ;
      rdfs:subClassOf :ComputeResource .


###  http://odahub.io/ontology#DataProduct
:DataProduct rdf:type owl:Class ;
             rdfs:subClassOf owl:Thing ;
             rdfs:label "DataProduct" .


###  http://odahub.io/ontology#Declination
:Declination rdf:type owl:Class ;
             rdfs:subClassOf :Angle ,
                             :Quantity ,
                             :WorkflowParameter ;
             rdfs:label "Declination" .


###  http://odahub.io/ontology#DeclinationDegrees
:DeclinationDegrees rdf:type owl:Class ;
                    rdfs:subClassOf :AngleDegrees ,
                                    :Declination ;
                    rdfs:label "DeclinationDegrees" .


###  http://odahub.io/ontology#DiscoveryWorkflow
:DiscoveryWorkflow rdf:type owl:Class ;
                   rdfs:subClassOf :Workflow ;
                   <http://purl.org/dc/elements/1.1/description> "workflow which takes some dataset (crucially, unavailable at the time of the Workflow publishing) and produces some Evidence or a Decision" ;
                   rdfs:label "DiscoveryWorkflow" .


###  http://odahub.io/ontology#Distance
:Distance rdf:type owl:Class ;
          rdfs:subClassOf :Length .


###  http://odahub.io/ontology#Distance_Mpc
:Distance_Mpc rdf:type owl:Class ;
              rdfs:subClassOf :Distance ,
                              :Mpc .


###  http://odahub.io/ontology#Distance_km
:Distance_km rdf:type owl:Class ;
             rdfs:subClassOf :Distance ,
                             :km .


###  http://odahub.io/ontology#Distance_kpc
:Distance_kpc rdf:type owl:Class ;
              rdfs:subClassOf :Distance ,
                              :kpc .


###  http://odahub.io/ontology#Distance_m
:Distance_m rdf:type owl:Class ;
            rdfs:subClassOf :Distance ,
                            :m .


###  http://odahub.io/ontology#Distance_pc
:Distance_pc rdf:type owl:Class ;
             rdfs:subClassOf :Distance ,
                             :pc .


###  http://odahub.io/ontology#EndTime
:EndTime rdf:type owl:Class ;
         rdfs:subClassOf :TimeInstant ,
                         :WorkflowParameter ;
         rdfs:label "EndTime" .


###  http://odahub.io/ontology#EndTimeISOT
:EndTimeISOT rdf:type owl:Class ;
             rdfs:subClassOf :EndTime ,
                             :TimeInstantISOT ;
             rdfs:label "EndTimeISOT" .


###  http://odahub.io/ontology#EndTimeMJD
:EndTimeMJD rdf:type owl:Class ;
            rdfs:subClassOf :EndTime ,
                            :TimeInstantMJD .


###  http://odahub.io/ontology#Energy
:Energy rdf:type owl:Class ;
        rdfs:subClassOf :Float ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :has_unit ;
                          owl:someValuesFrom <http://odahub.io/ontology/unit#EnergyUnit>
                        ] .


###  http://odahub.io/ontology#Energy_GeV
:Energy_GeV rdf:type owl:Class ;
            rdfs:subClassOf :Energy ,
                            :GeV .


###  http://odahub.io/ontology#Energy_MeV
:Energy_MeV rdf:type owl:Class ;
            rdfs:subClassOf :Energy ,
                            :MeV .


###  http://odahub.io/ontology#Energy_TeV
:Energy_TeV rdf:type owl:Class ;
            rdfs:subClassOf :Energy ,
                            :TeV .


###  http://odahub.io/ontology#Energy_eV
:Energy_eV rdf:type owl:Class ;
           rdfs:subClassOf :Energy ,
                           :eV .


###  http://odahub.io/ontology#Energy_keV
:Energy_keV rdf:type owl:Class ;
            rdfs:subClassOf :Energy ,
                            :keV .


###  http://odahub.io/ontology#ExpressedInFormat
:ExpressedInFormat rdf:type owl:Class ;
                   rdfs:subClassOf :WorkflowParameter .


###  http://odahub.io/ontology#ExpressedInISOT
:ExpressedInISOT rdf:type owl:Class ;
                 rdfs:subClassOf :ExpressedInFormat ,
                                 [ rdf:type owl:Restriction ;
                                   owl:onProperty :has_format ;
                                   owl:hasValue :ISOT
                                 ] ,
                                 [ rdf:type owl:Restriction ;
                                   owl:onProperty :value ;
                                   owl:allValuesFrom xsd:string
                                 ] .


###  http://odahub.io/ontology#ExpressedInMJD
:ExpressedInMJD rdf:type owl:Class ;
                rdfs:subClassOf :ExpressedInFormat ,
                                [ rdf:type owl:Restriction ;
                                  owl:onProperty :has_format ;
                                  owl:hasValue :MJD
                                ] ,
                                [ rdf:type owl:Restriction ;
                                  owl:onProperty :value ;
                                  owl:allValuesFrom xsd:float
                                ] .


###  http://odahub.io/ontology#ExpressedInUnit
:ExpressedInUnit rdf:type owl:Class ;
                 rdfs:subClassOf :NumericParameter .


###  http://odahub.io/ontology#FileReference
:FileReference rdf:type owl:Class ;
               rdfs:subClassOf :String .


###  http://odahub.io/ontology#FileURL
:FileURL rdf:type owl:Class ;
         rdfs:subClassOf :FileReference .


###  http://odahub.io/ontology#Float
:Float rdf:type owl:Class ;
       rdfs:subClassOf :NumericParameter ,
                       :ParameterProduct ,
                       [ rdf:type owl:Restriction ;
                         owl:onProperty :value ;
                         owl:allValuesFrom xsd:float
                       ] .


###  http://odahub.io/ontology#Frequency
:Frequency rdf:type owl:Class ;
           rdfs:subClassOf :Float ,
                           [ rdf:type owl:Restriction ;
                             owl:onProperty :has_unit ;
                             owl:someValuesFrom <http://odahub.io/ontology/unit#EnergyUnit>
                           ] .


###  http://odahub.io/ontology#FrequencyGHz
:FrequencyGHz rdf:type owl:Class ;
              rdfs:subClassOf :Frequency ,
                              :GHz .


###  http://odahub.io/ontology#FrequencyHz
:FrequencyHz rdf:type owl:Class ;
             rdfs:subClassOf :Frequency ,
                             :Hz .


###  http://odahub.io/ontology#FrequencyMHz
:FrequencyMHz rdf:type owl:Class ;
              rdfs:subClassOf :Frequency ,
                              :MHz .


###  http://odahub.io/ontology#GHz
:GHz rdf:type owl:Class ;
     rdfs:subClassOf :ExpressedInUnit ,
                     [ rdf:type owl:Restriction ;
                       owl:onProperty :has_unit ;
                       owl:hasValue <http://odahub.io/ontology/unit#GHz>
                     ] .


###  http://odahub.io/ontology#Gaia
:Gaia rdf:type owl:Class ;
      rdfs:subClassOf :Instrument ;
      rdfs:label "Gaia" .


###  http://odahub.io/ontology#GaiaFilter
:GaiaFilter rdf:type owl:Class ;
            rdfs:subClassOf owl:Thing ;
            rdfs:label "GaiaFilter" .


###  http://odahub.io/ontology#GeV
:GeV rdf:type owl:Class ;
     rdfs:subClassOf :ExpressedInUnit ,
                     [ rdf:type owl:Restriction ;
                       owl:onProperty :has_unit ;
                       owl:hasValue <http://odahub.io/ontology/unit#GeV>
                     ] .


###  http://odahub.io/ontology#HTTPURLFile
:HTTPURLFile rdf:type owl:Class ;
             rdfs:subClassOf :StorageResource .


###  http://odahub.io/ontology#Hz
:Hz rdf:type owl:Class ;
    rdfs:subClassOf :ExpressedInUnit ,
                    [ rdf:type owl:Restriction ;
                      owl:onProperty :has_unit ;
                      owl:hasValue <http://odahub.io/ontology/unit#Hz>
                    ] .


###  http://odahub.io/ontology#ISGRIEnergy
:ISGRIEnergy rdf:type owl:Class ;
             rdfs:subClassOf :Energy_keV ,
                             [ rdf:type owl:Restriction ;
                               owl:onProperty :value ;
                               owl:allValuesFrom [ rdf:type rdfs:Datatype ;
                                                   owl:onDatatype xsd:float ;
                                                   owl:withRestrictions ( [ xsd:minInclusive "15.0"^^xsd:float
                                                                          ]
                                                                          [ xsd:maxInclusive "800.0"^^xsd:float
                                                                          ]
                                                                        )
                                                 ]
                             ] .


###  http://odahub.io/ontology#Image
:Image rdf:type owl:Class ;
       rdfs:subClassOf :NumpyDataProduct .


###  http://odahub.io/ontology#Instrument
:Instrument rdf:type owl:Class ;
            rdfs:subClassOf owl:Thing ;
            rdfs:label "Instrument" .


###  http://odahub.io/ontology#Integer
:Integer rdf:type owl:Class ;
         rdfs:subClassOf :NumericParameter ,
                         :ParameterProduct ,
                         [ rdf:type owl:Restriction ;
                           owl:onProperty :value ;
                           owl:allValuesFrom xsd:integer
                         ] .


###  http://odahub.io/ontology#JEMXEnergy
:JEMXEnergy rdf:type owl:Class ;
            rdfs:subClassOf :Energy_keV ,
                            [ rdf:type owl:Restriction ;
                              owl:onProperty :value ;
                              owl:allValuesFrom [ rdf:type rdfs:Datatype ;
                                                  owl:onDatatype xsd:float ;
                                                  owl:withRestrictions ( [ xsd:minInclusive "3.0"^^xsd:float
                                                                         ]
                                                                         [ xsd:maxInclusive "35.0"^^xsd:float
                                                                         ]
                                                                       )
                                                ]
                            ] .


###  http://odahub.io/ontology#Length
:Length rdf:type owl:Class ;
        rdfs:subClassOf :Float ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :has_unit ;
                          owl:someValuesFrom <http://odahub.io/ontology/unit#LengthUnit>
                        ] .


###  http://odahub.io/ontology#LightCurve
:LightCurve rdf:type owl:Class ;
            rdfs:subClassOf :NumpyDataProduct ,
                            <http://www.ivoa.net/rdf/product-type#timeseries> ;
            rdfs:label "LightCurve" .


###  http://odahub.io/ontology#LocalDB
:LocalDB rdf:type owl:Class ;
         rdfs:subClassOf :StorageResource .


###  http://odahub.io/ontology#LongString
:LongString rdf:type owl:Class ;
            rdfs:subClassOf :String .


###  http://odahub.io/ontology#MHz
:MHz rdf:type owl:Class ;
     rdfs:subClassOf :ExpressedInUnit ,
                     [ rdf:type owl:Restriction ;
                       owl:onProperty :has_unit ;
                       owl:hasValue <http://odahub.io/ontology/unit#MHz>
                     ] .


###  http://odahub.io/ontology#MeV
:MeV rdf:type owl:Class ;
     rdfs:subClassOf :ExpressedInUnit ,
                     [ rdf:type owl:Restriction ;
                       owl:onProperty :has_unit ;
                       owl:hasValue <http://odahub.io/ontology/unit#MeV>
                     ] .


###  http://odahub.io/ontology#Mpc
:Mpc rdf:type owl:Class ;
     rdfs:subClassOf :ExpressedInUnit ,
                     [ rdf:type owl:Restriction ;
                       owl:onProperty :has_unit ;
                       owl:hasValue <http://odahub.io/ontology/unit#Mpc>
                     ] .


###  http://odahub.io/ontology#NumericParameter
:NumericParameter rdf:type owl:Class ;
                  rdfs:subClassOf :WorkflowParameter .


###  http://odahub.io/ontology#NumpyDataProduct
:NumpyDataProduct rdf:type owl:Class ;
                  rdfs:subClassOf :DataProduct .


###  http://odahub.io/ontology#ODAAstropyTable
:ODAAstropyTable rdf:type owl:Class ;
                 rdfs:subClassOf :DataProduct .


###  http://odahub.io/ontology#ODABinaryProduct
:ODABinaryProduct rdf:type owl:Class ;
                  rdfs:subClassOf :DataProduct .


###  http://odahub.io/ontology#ODAPictureProduct
:ODAPictureProduct rdf:type owl:Class ;
                   rdfs:subClassOf :DataProduct .


###  http://odahub.io/ontology#ODATextProduct
:ODATextProduct rdf:type owl:Class ;
                rdfs:subClassOf :DataProduct .


###  http://odahub.io/ontology#POSIXPath
:POSIXPath rdf:type owl:Class ;
           rdfs:subClassOf :FileReference .


###  http://odahub.io/ontology#ParameterFormat
:ParameterFormat rdf:type owl:Class ;
                 rdfs:subClassOf owl:Thing .


###  http://odahub.io/ontology#ParameterProduct
:ParameterProduct rdf:type owl:Class ;
                  rdfs:subClassOf :DataProduct .


###  http://odahub.io/ontology#Percentage
:Percentage rdf:type owl:Class ;
            rdfs:subClassOf :Float ,
                            [ rdf:type owl:Restriction ;
                              owl:onProperty :value ;
                              owl:allValuesFrom [ rdf:type rdfs:Datatype ;
                                                  owl:onDatatype xsd:float ;
                                                  owl:withRestrictions ( [ xsd:minInclusive "0.0"^^xsd:float
                                                                         ]
                                                                         [ xsd:maxInclusive "100.0"^^xsd:float
                                                                         ]
                                                                       )
                                                ]
                            ] .


###  http://odahub.io/ontology#PhosphorosFiltersTable
:PhosphorosFiltersTable rdf:type owl:Class ;
                        rdfs:subClassOf :StructuredParameter .


###  http://odahub.io/ontology#PhotometricBand
:PhotometricBand rdf:type owl:Class ;
                 rdfs:subClassOf :String ,
                                 [ rdf:type owl:Restriction ;
                                   owl:onProperty :value ;
                                   owl:allValuesFrom [ rdf:type rdfs:Datatype ;
                                                       owl:oneOf [ rdf:type rdf:List ;
                                                                   rdf:first "H" ;
                                                                   rdf:rest [ rdf:type rdf:List ;
                                                                              rdf:first "J" ;
                                                                              rdf:rest [ rdf:type rdf:List ;
                                                                                         rdf:first "K" ;
                                                                                         rdf:rest [ rdf:type rdf:List ;
                                                                                                    rdf:first "L" ;
                                                                                                    rdf:rest [ rdf:type rdf:List ;
                                                                                                               rdf:first "M" ;
                                                                                                               rdf:rest [ rdf:type rdf:List ;
                                                                                                                          rdf:first "N" ;
                                                                                                                          rdf:rest [ rdf:type rdf:List ;
                                                                                                                                     rdf:first "Q" ;
                                                                                                                                     rdf:rest [ rdf:type rdf:List ;
                                                                                                                                                rdf:first "b" ;
                                                                                                                                                rdf:rest [ rdf:type rdf:List ;
                                                                                                                                                           rdf:first "g" ;
                                                                                                                                                           rdf:rest [ rdf:type rdf:List ;
                                                                                                                                                                      rdf:first "i" ;
                                                                                                                                                                      rdf:rest [ rdf:type rdf:List ;
                                                                                                                                                                                 rdf:first "r" ;
                                                                                                                                                                                 rdf:rest [ rdf:type rdf:List ;
                                                                                                                                                                                            rdf:first "u" ;
                                                                                                                                                                                            rdf:rest [ rdf:type rdf:List ;
                                                                                                                                                                                                       rdf:first "v" ;
                                                                                                                                                                                                       rdf:rest [ rdf:type rdf:List ;
                                                                                                                                                                                                                  rdf:first "y" ;
                                                                                                                                                                                                                  rdf:rest [ rdf:type rdf:List ;
                                                                                                                                                                                                                             rdf:first "z" ;
                                                                                                                                                                                                                             rdf:rest rdf:nil
                                                                                                                                                                                                                           ]
                                                                                                                                                                                                                ]
                                                                                                                                                                                                     ]
                                                                                                                                                                                          ]
                                                                                                                                                                               ]
                                                                                                                                                                    ]
                                                                                                                                                         ]
                                                                                                                                              ]
                                                                                                                                   ]
                                                                                                                        ]
                                                                                                             ]
                                                                                                  ]
                                                                                       ]
                                                                            ]
                                                                 ]
                                                     ]
                                 ] .


###  http://odahub.io/ontology#PointOfInterest
:PointOfInterest rdf:type owl:Class ;
                 rdfs:subClassOf :SkyCoordinates ;
                 rdfs:label "PointOfInterest" .


###  http://odahub.io/ontology#PointOfInterestDEC
:PointOfInterestDEC rdf:type owl:Class ;
                    rdfs:subClassOf :DeclinationDegrees ,
                                    :WorkflowParameter ;
                    rdfs:label "PointOfInterestDEC" .


###  http://odahub.io/ontology#PointOfInterestRA
:PointOfInterestRA rdf:type owl:Class ;
                   rdfs:subClassOf :RightAscensionDegrees ,
                                   :WorkflowParameter ;
                   rdfs:label "PointOfInterestRA" .


###  http://odahub.io/ontology#Quantity
:Quantity rdf:type owl:Class ;
          rdfs:subClassOf owl:Thing ;
          rdfs:label "Quantity" .


###  http://odahub.io/ontology#Resource
:Resource rdf:type owl:Class .


###  http://odahub.io/ontology#RightAscension
:RightAscension rdf:type owl:Class ;
                rdfs:subClassOf :Angle ,
                                :Quantity ,
                                :WorkflowParameter ;
                rdfs:label "RightAscension" .


###  http://odahub.io/ontology#RightAscensionDegrees
:RightAscensionDegrees rdf:type owl:Class ;
                       rdfs:subClassOf :AngleDegrees ,
                                       :RightAscension ;
                       rdfs:label "RightAscensionDegrees" .


###  http://odahub.io/ontology#S3
:S3 rdf:type owl:Class ;
    rdfs:subClassOf :StorageResource .


###  http://odahub.io/ontology#SecretStorageResource
:SecretStorageResource rdf:type owl:Class ;
                       rdfs:subClassOf :Resource .


###  http://odahub.io/ontology#SkyCoordinates
:SkyCoordinates rdf:type owl:Class ;
                rdfs:subClassOf :Quantity ,
                                :WorkflowParameter ;
                rdfs:comment """Sky coordinates. Typically represented as a string as known to https://docs.astropy.org/en/stable/api/astropy.coordinates.SkyCoord.html .
Subclasses may have other ways to express the content.""" ;
                rdfs:label "SkyCoordinates" .


###  http://odahub.io/ontology#Spectrum
:Spectrum rdf:type owl:Class ;
          rdfs:subClassOf :NumpyDataProduct .


###  http://odahub.io/ontology#StartTime
:StartTime rdf:type owl:Class ;
           rdfs:subClassOf :TimeInstant ,
                           :WorkflowParameter ;
           rdfs:label "StartTime" .


###  http://odahub.io/ontology#StartTimeISOT
:StartTimeISOT rdf:type owl:Class ;
               rdfs:subClassOf :StartTime ,
                               :TimeInstantISOT ;
               rdfs:label "StartTimeISOT" .


###  http://odahub.io/ontology#StartTimeMJD
:StartTimeMJD rdf:type owl:Class ;
              rdfs:subClassOf :StartTime ,
                              :TimeInstantMJD .


###  http://odahub.io/ontology#StorageAccessType
:StorageAccessType rdf:type owl:Class ;
                   rdfs:subClassOf owl:Thing .


###  http://odahub.io/ontology#StorageResource
:StorageResource rdf:type owl:Class ;
                 rdfs:subClassOf :Resource .


###  http://odahub.io/ontology#String
:String rdf:type owl:Class ;
        rdfs:subClassOf :ParameterProduct ,
                        :WorkflowParameter ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :value ;
                          owl:allValuesFrom xsd:string
                        ] .


###  http://odahub.io/ontology#StructuredParameter
:StructuredParameter rdf:type owl:Class ;
                     rdfs:subClassOf :WorkflowParameter .


###  http://odahub.io/ontology#TeV
:TeV rdf:type owl:Class ;
     rdfs:subClassOf :ExpressedInUnit ,
                     [ rdf:type owl:Restriction ;
                       owl:onProperty :has_unit ;
                       owl:hasValue <http://odahub.io/ontology/unit#TeV>
                     ] .


###  http://odahub.io/ontology#TimeFormat
:TimeFormat rdf:type owl:Class ;
            rdfs:subClassOf :ParameterFormat .


###  http://odahub.io/ontology#TimeInstant
:TimeInstant rdf:type owl:Class ;
             rdfs:subClassOf :ParameterProduct ,
                             :Quantity ,
                             :WorkflowParameter ;
             rdfs:label "TimeInstant" .


###  http://odahub.io/ontology#TimeInstantISOT
:TimeInstantISOT rdf:type owl:Class ;
                 rdfs:subClassOf :ExpressedInISOT ,
                                 :TimeInstant .


###  http://odahub.io/ontology#TimeInstantMJD
:TimeInstantMJD rdf:type owl:Class ;
                rdfs:subClassOf :ExpressedInMJD ,
                                :TimeInstant .


###  http://odahub.io/ontology#TimeInterval
:TimeInterval rdf:type owl:Class ;
              rdfs:subClassOf :Float ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :has_unit ;
                                owl:someValuesFrom <http://odahub.io/ontology/unit#TimeUnit>
                              ] .


###  http://odahub.io/ontology#TimeIntervalDays
:TimeIntervalDays rdf:type owl:Class ;
                  rdfs:subClassOf :TimeInterval ,
                                  :day .


###  http://odahub.io/ontology#TimeIntervalHours
:TimeIntervalHours rdf:type owl:Class ;
                   rdfs:subClassOf :TimeInterval ,
                                   :hour .


###  http://odahub.io/ontology#TimeIntervalSeconds
:TimeIntervalSeconds rdf:type owl:Class ;
                     rdfs:subClassOf :TimeInterval ,
                                     :second .


###  http://odahub.io/ontology#VisibleBand
:VisibleBand rdf:type owl:Class ;
             rdfs:subClassOf :PhotometricBand ,
                             [ rdf:type owl:Restriction ;
                               owl:onProperty :value ;
                               owl:allValuesFrom [ rdf:type rdfs:Datatype ;
                                                   owl:oneOf [ rdf:type rdf:List ;
                                                               rdf:first "b" ;
                                                               rdf:rest [ rdf:type rdf:List ;
                                                                          rdf:first "g" ;
                                                                          rdf:rest [ rdf:type rdf:List ;
                                                                                     rdf:first "r" ;
                                                                                     rdf:rest [ rdf:type rdf:List ;
                                                                                                rdf:first "v" ;
                                                                                                rdf:rest rdf:nil
                                                                                              ]
                                                                                   ]
                                                                        ]
                                                             ]
                                                 ]
                             ] ;
             :allowed_value "b" ,
                            "g" ,
                            "r" ,
                            "v" .


###  http://odahub.io/ontology#Wavelength
:Wavelength rdf:type owl:Class ;
            rdfs:subClassOf :Length ,
                            :Quantity ;
            rdfs:label "Wavelength" .


###  http://odahub.io/ontology#Wavelength_A
:Wavelength_A rdf:type owl:Class ;
              rdfs:subClassOf :Angstrom ,
                              :Wavelength .


###  http://odahub.io/ontology#Wavelength_m
:Wavelength_m rdf:type owl:Class ;
              rdfs:subClassOf :Wavelength ,
                              :m .


###  http://odahub.io/ontology#Wavelength_micron
:Wavelength_micron rdf:type owl:Class ;
                   rdfs:subClassOf :Wavelength ,
                                   :micron .


###  http://odahub.io/ontology#Wavelength_nm
:Wavelength_nm rdf:type owl:Class ;
               rdfs:subClassOf :Wavelength ,
                               :nm .


###  http://odahub.io/ontology#Workflow
:Workflow rdf:type owl:Class ;
          rdfs:subClassOf owl:Thing ;
          rdfs:label "Workflow" .


###  http://odahub.io/ontology#WorkflowParameter
:WorkflowParameter rdf:type owl:Class ;
                   rdfs:label "WorkflowParameter" .


###  http://odahub.io/ontology#arcmin
:arcmin rdf:type owl:Class ;
        rdfs:subClassOf :ExpressedInUnit ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :has_unit ;
                          owl:hasValue <http://odahub.io/ontology/unit#arcmin>
                        ] .


###  http://odahub.io/ontology#arcsec
:arcsec rdf:type owl:Class ;
        rdfs:subClassOf :ExpressedInUnit ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :has_unit ;
                          owl:hasValue <http://odahub.io/ontology/unit#arcsec>
                        ] .


###  http://odahub.io/ontology#day
:day rdf:type owl:Class ;
     rdfs:subClassOf :ExpressedInUnit ,
                     [ rdf:type owl:Restriction ;
                       owl:onProperty :has_unit ;
                       owl:hasValue <http://odahub.io/ontology/unit#Day>
                     ] .


###  http://odahub.io/ontology#degree
:degree rdf:type owl:Class ;
        rdfs:subClassOf :ExpressedInUnit ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :has_unit ;
                          owl:hasValue <http://odahub.io/ontology/unit#Degree>
                        ] .


###  http://odahub.io/ontology#eV
:eV rdf:type owl:Class ;
    rdfs:subClassOf :ExpressedInUnit ,
                    [ rdf:type owl:Restriction ;
                      owl:onProperty :has_unit ;
                      owl:hasValue <http://odahub.io/ontology/unit#eV>
                    ] .


###  http://odahub.io/ontology#hour
:hour rdf:type owl:Class ;
      rdfs:subClassOf :ExpressedInUnit ,
                      [ rdf:type owl:Restriction ;
                        owl:onProperty :has_unit ;
                        owl:hasValue <http://odahub.io/ontology/unit#Hour>
                      ] .


###  http://odahub.io/ontology#keV
:keV rdf:type owl:Class ;
     rdfs:subClassOf :ExpressedInUnit ,
                     [ rdf:type owl:Restriction ;
                       owl:onProperty :has_unit ;
                       owl:hasValue <http://odahub.io/ontology/unit#keV>
                     ] .


###  http://odahub.io/ontology#km
:km rdf:type owl:Class ;
    rdfs:subClassOf :ExpressedInUnit ,
                    [ rdf:type owl:Restriction ;
                      owl:onProperty :has_unit ;
                      owl:hasValue <http://odahub.io/ontology/unit#km>
                    ] .


###  http://odahub.io/ontology#kpc
:kpc rdf:type owl:Class ;
     rdfs:subClassOf :ExpressedInUnit ,
                     [ rdf:type owl:Restriction ;
                       owl:onProperty :has_unit ;
                       owl:hasValue <http://odahub.io/ontology/unit#kpc>
                     ] .


###  http://odahub.io/ontology#m
:m rdf:type owl:Class ;
   rdfs:subClassOf :ExpressedInUnit ,
                   [ rdf:type owl:Restriction ;
                     owl:onProperty :has_unit ;
                     owl:hasValue <http://odahub.io/ontology/unit#m>
                   ] .


###  http://odahub.io/ontology#micron
:micron rdf:type owl:Class ;
        rdfs:subClassOf :ExpressedInUnit ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :has_unit ;
                          owl:hasValue <http://odahub.io/ontology/unit#micron>
                        ] .


###  http://odahub.io/ontology#nm
:nm rdf:type owl:Class ;
    rdfs:subClassOf :ExpressedInUnit ,
                    [ rdf:type owl:Restriction ;
                      owl:onProperty :has_unit ;
                      owl:hasValue <http://odahub.io/ontology/unit#nm>
                    ] .


###  http://odahub.io/ontology#optional
:optional rdf:type owl:Class ;
          rdfs:subClassOf :WorkflowParameter .


###  http://odahub.io/ontology#pc
:pc rdf:type owl:Class ;
    rdfs:subClassOf :ExpressedInUnit ,
                    [ rdf:type owl:Restriction ;
                      owl:onProperty :has_unit ;
                      owl:hasValue <http://odahub.io/ontology/unit#pc>
                    ] .


###  http://odahub.io/ontology#second
:second rdf:type owl:Class ;
        rdfs:subClassOf :ExpressedInUnit ,
                        [ rdf:type owl:Restriction ;
                          owl:onProperty :has_unit ;
                          owl:hasValue <http://odahub.io/ontology/unit#Second>
                        ] .


###  http://odahub.io/ontology/unit#AngleUnit
<http://odahub.io/ontology/unit#AngleUnit> rdf:type owl:Class ;
                                           rdfs:subClassOf <http://odahub.io/ontology/unit#Unit> .


###  http://odahub.io/ontology/unit#EnergyUnit
<http://odahub.io/ontology/unit#EnergyUnit> rdf:type owl:Class ;
                                            rdfs:subClassOf <http://odahub.io/ontology/unit#Unit> .


###  http://odahub.io/ontology/unit#LengthUnit
<http://odahub.io/ontology/unit#LengthUnit> rdf:type owl:Class ;
                                            rdfs:subClassOf <http://odahub.io/ontology/unit#Unit> .


###  http://odahub.io/ontology/unit#TimeUnit
<http://odahub.io/ontology/unit#TimeUnit> rdf:type owl:Class ;
                                          rdfs:subClassOf <http://odahub.io/ontology/unit#Unit> .


###  http://odahub.io/ontology/unit#Unit
<http://odahub.io/ontology/unit#Unit> rdf:type owl:Class ;
                                      rdfs:subClassOf owl:Thing ;
                                      rdfs:label "Unit" .


###  http://www.ivoa.net/rdf/product-type#timeseries
<http://www.ivoa.net/rdf/product-type#timeseries> rdf:type owl:Class .


#################################################################
#    Individuals
#################################################################

###  http://odahub.io/ontology#CRBeamS3
:CRBeamS3 rdf:type owl:NamedIndividual ,
                   :S3 ;
          :accessMode :ReadAppend .


###  http://odahub.io/ontology#ISOT
:ISOT rdf:type owl:NamedIndividual ,
               :TimeFormat ;
      :symbol "isot" .


###  http://odahub.io/ontology#MJD
:MJD rdf:type owl:NamedIndividual ,
              :TimeFormat ;
     :symbol "mjd" .


###  http://odahub.io/ontology#ReadAppend
:ReadAppend rdf:type owl:NamedIndividual ,
                     :StorageAccessType ;
            :title "ReadAppend" .


###  http://odahub.io/ontology#ReadOnly
:ReadOnly rdf:type owl:NamedIndividual ,
                   :StorageAccessType ;
          :title "ReadOnly" .


###  http://odahub.io/ontology#ReadWrite
:ReadWrite rdf:type owl:NamedIndividual ,
                    :StorageAccessType ;
           :title "ReadWrite" .


###  http://odahub.io/ontology#SecretStorage
:SecretStorage rdf:type owl:NamedIndividual ,
                        :SecretStorageResource ;
               :resourceBindingEnvVarName "ODA_SECRET_STORAGE" .


###  http://odahub.io/ontology/unit#Angstrom
<http://odahub.io/ontology/unit#Angstrom> rdf:type owl:NamedIndividual ,
                                                   <http://odahub.io/ontology/unit#LengthUnit> .


###  http://odahub.io/ontology/unit#Day
<http://odahub.io/ontology/unit#Day> rdf:type owl:NamedIndividual ,
                                              <http://odahub.io/ontology/unit#TimeUnit> ;
                                     :symbol "day" .


###  http://odahub.io/ontology/unit#Degree
<http://odahub.io/ontology/unit#Degree> rdf:type owl:NamedIndividual ,
                                                 <http://odahub.io/ontology/unit#AngleUnit> ;
                                        :symbol "deg" .


###  http://odahub.io/ontology/unit#GHz
<http://odahub.io/ontology/unit#GHz> rdf:type owl:NamedIndividual ,
                                              <http://odahub.io/ontology/unit#EnergyUnit> ;
                                     :symbol "GHz" .


###  http://odahub.io/ontology/unit#GeV
<http://odahub.io/ontology/unit#GeV> rdf:type owl:NamedIndividual ,
                                              <http://odahub.io/ontology/unit#EnergyUnit> ;
                                     :symbol "GeV" .


###  http://odahub.io/ontology/unit#Hour
<http://odahub.io/ontology/unit#Hour> rdf:type owl:NamedIndividual ,
                                               <http://odahub.io/ontology/unit#TimeUnit> ;
                                      :symbol "hour" .


###  http://odahub.io/ontology/unit#Hz
<http://odahub.io/ontology/unit#Hz> rdf:type owl:NamedIndividual ,
                                             <http://odahub.io/ontology/unit#EnergyUnit> ;
                                    :symbol "Hz" .


###  http://odahub.io/ontology/unit#MHz
<http://odahub.io/ontology/unit#MHz> rdf:type owl:NamedIndividual ,
                                              <http://odahub.io/ontology/unit#EnergyUnit> ;
                                     :symbol "MHz" .


###  http://odahub.io/ontology/unit#MeV
<http://odahub.io/ontology/unit#MeV> rdf:type owl:NamedIndividual ,
                                              <http://odahub.io/ontology/unit#EnergyUnit> ;
                                     :symbol "MeV" .


###  http://odahub.io/ontology/unit#Minute
<http://odahub.io/ontology/unit#Minute> rdf:type owl:NamedIndividual ,
                                                 <http://odahub.io/ontology/unit#TimeUnit> ;
                                        :symbol "m" .


###  http://odahub.io/ontology/unit#Mpc
<http://odahub.io/ontology/unit#Mpc> rdf:type owl:NamedIndividual ,
                                              <http://odahub.io/ontology/unit#LengthUnit> ;
                                     :symbol "Mpc" .


###  http://odahub.io/ontology/unit#Radian
<http://odahub.io/ontology/unit#Radian> rdf:type owl:NamedIndividual ,
                                                 <http://odahub.io/ontology/unit#AngleUnit> ;
                                        :symbol "rad" .


###  http://odahub.io/ontology/unit#Second
<http://odahub.io/ontology/unit#Second> rdf:type owl:NamedIndividual ,
                                                 <http://odahub.io/ontology/unit#TimeUnit> ;
                                        :symbol "s" .


###  http://odahub.io/ontology/unit#TeV
<http://odahub.io/ontology/unit#TeV> rdf:type owl:NamedIndividual ,
                                              <http://odahub.io/ontology/unit#EnergyUnit> ;
                                     :symbol "TeV" .


###  http://odahub.io/ontology/unit#arcmin
<http://odahub.io/ontology/unit#arcmin> rdf:type owl:NamedIndividual ,
                                                 <http://odahub.io/ontology/unit#AngleUnit> ;
                                        :symbol "arcmin" .


###  http://odahub.io/ontology/unit#arcsec
<http://odahub.io/ontology/unit#arcsec> rdf:type owl:NamedIndividual ,
                                                 <http://odahub.io/ontology/unit#AngleUnit> ;
                                        :symbol "arcsec" .


###  http://odahub.io/ontology/unit#eV
<http://odahub.io/ontology/unit#eV> rdf:type owl:NamedIndividual ,
                                             <http://odahub.io/ontology/unit#EnergyUnit> ;
                                    :symbol "eV" .


###  http://odahub.io/ontology/unit#hourangle_Hour
<http://odahub.io/ontology/unit#hourangle_Hour> rdf:type owl:NamedIndividual ,
                                                         <http://odahub.io/ontology/unit#AngleUnit> ;
                                                :symbol "h" .


###  http://odahub.io/ontology/unit#hourangle_Minute
<http://odahub.io/ontology/unit#hourangle_Minute> rdf:type owl:NamedIndividual ,
                                                           <http://odahub.io/ontology/unit#AngleUnit> ;
                                                  :symbol "m" .


###  http://odahub.io/ontology/unit#hourangle_Second
<http://odahub.io/ontology/unit#hourangle_Second> rdf:type owl:NamedIndividual ,
                                                           <http://odahub.io/ontology/unit#AngleUnit> ;
                                                  :symbol "s" .


###  http://odahub.io/ontology/unit#keV
<http://odahub.io/ontology/unit#keV> rdf:type owl:NamedIndividual ,
                                              <http://odahub.io/ontology/unit#EnergyUnit> ;
                                     :symbol "keV" .


###  http://odahub.io/ontology/unit#km
<http://odahub.io/ontology/unit#km> rdf:type owl:NamedIndividual ,
                                             <http://odahub.io/ontology/unit#LengthUnit> ;
                                    :symbol "km" .


###  http://odahub.io/ontology/unit#kpc
<http://odahub.io/ontology/unit#kpc> rdf:type owl:NamedIndividual ,
                                              <http://odahub.io/ontology/unit#LengthUnit> ;
                                     :symbol "kpc" .


###  http://odahub.io/ontology/unit#m
<http://odahub.io/ontology/unit#m> rdf:type owl:NamedIndividual ,
                                            <http://odahub.io/ontology/unit#LengthUnit> ;
                                   :symbol "m" .


###  http://odahub.io/ontology/unit#micron
<http://odahub.io/ontology/unit#micron> rdf:type owl:NamedIndividual ,
                                                 <http://odahub.io/ontology/unit#LengthUnit> ;
                                        :symbol "um" .


###  http://odahub.io/ontology/unit#nm
<http://odahub.io/ontology/unit#nm> rdf:type owl:NamedIndividual ,
                                             <http://odahub.io/ontology/unit#LengthUnit> ;
                                    :symbol "nm" .


###  http://odahub.io/ontology/unit#pc
<http://odahub.io/ontology/unit#pc> rdf:type owl:NamedIndividual ,
                                             <http://odahub.io/ontology/unit#LengthUnit> ;
                                    :symbol "pc" .


#################################################################
#    Annotations
#################################################################

: <http://purl.org/dc/elements/1.1/title> "MMODA Astrophysical Workflows and Data Products" .


###  Generated by the OWL API (version 5.1.18) https://github.com/owlcs/owlapi/
