@prefix :      <https://w3id.org/okn/o/sdm#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix terms: <http://purl.org/dc/terms/> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix vann:  <http://purl.org/vocab/vann/> .
@prefix dc:    <http://purl.org/dc/elements/1.1/> .

:ModelConfigurationSetup
        a                owl:Class ;
        rdfs:comment     "Setup of a particular model, that may represent a calibration or a configuration with a set of values for a specific region."@en ;
        rdfs:label       "Model configuration setup"@en ;
        rdfs:subClassOf  :ModelConfiguration , <https://w3id.org/okn/o/sd#ConfigurationSetup> .

<https://w3id.org/okn/o/sd#usesUnit>
        a       owl:ObjectProperty .

:CausalDiagram  a     owl:Class ;
        rdfs:comment  "Diagram information with the processes and variables associated with a model configuration"@en ;
        rdfs:label    "Causal Diagram"@en .

:Grid   a                owl:Class ;
        rdfs:comment     "Class that represents the geospatial information associated with a model" ;
        rdfs:label       "Grid"@en ;
        rdfs:subClassOf  <https://w3id.org/okn/o/sd#DatasetSpecification> .

:influences  a        owl:ObjectProperty ;
        rdfs:comment  "Property that captures if a physical process influences another process"@en ;
        rdfs:domain   :Process ;
        rdfs:label    "influences"@en ;
        rdfs:range    :Process .

:hasModelCategory  a  owl:ObjectProperty ;
        rdfs:comment  "Category associated with a model (e.g., Hydrology, etc.)"@en ;
        rdfs:domain   :Model ;
        rdfs:label    "has model category"@en ;
        rdfs:range    :ModelCategory .

:hasDiagramPart  a    owl:ObjectProperty ;
        rdfs:comment  "Property that links a causal diagram with its constituent nodes" ;
        rdfs:domain   :CausalDiagram ;
        rdfs:label    "has diagram part"@en ;
        rdfs:range    [ a            owl:Class ;
                        owl:unionOf  ( <https://w3id.org/okn/o/sd#VariablePresentation> :Process )
                      ] .

:GeoCoordinates  a       owl:Class ;
        rdfs:comment     "Coordinate metadata of a region"@en ;
        rdfs:label       "GeoCoordinates"@en ;
        rdfs:subClassOf  <http://schema.org/GeoCoordinates> .

terms:license  a  owl:AnnotationProperty .

:intervalValue  a           owl:DatatypeProperty ;
        rdfs:comment        "Value used in the time interval of a model (e.g., 1 month, 5 days, 'harvest cycle')"@en ;
        rdfs:domain         :TimeInterval ;
        rdfs:label          "interval value"@en ;
        rdfs:range          [ a            rdfs:Datatype ;
                              owl:unionOf  ( xsd:integer xsd:string )
                            ] ;
        rdfs:subPropertyOf  <https://w3id.org/okn/o/sd#value> .

:Constraint  a  owl:Class .

:hasInputVariable  a  owl:ObjectProperty ;
        rdfs:comment  "Variable that is used as input for this model"@en ;
        rdfs:domain   :Model ;
        rdfs:label    "has input variable"@en ;
        rdfs:range    <https://w3id.org/okn/o/sd#VariablePresentation> .

vann:preferredNamespaceUri
        a       owl:AnnotationProperty .

:parameterAssignmentMethod
        a             owl:DatatypeProperty ;
        rdfs:comment  "Property that indicates how have the parameters assigned in a model configuration (e.g., using an expert guess, by using calibration, etc.)"@en ;
        rdfs:domain   :ModelConfigurationSetup ;
        rdfs:label    "parameter assignment method"@en ;
        rdfs:range    xsd:string .

<https://w3id.org/okn/o/sd#SoftwareConfiguration>
        a       owl:Class .

<http://schema.org/longitude>
        a                 owl:DatatypeProperty ;
        rdfs:isDefinedBy  <http://schema.org/> .

dc:license  a   owl:AnnotationProperty .

:hasSpatialResolution
        a             owl:DatatypeProperty ;
        rdfs:comment  "Spatial resolution of a grid (e.g., 50m)"@en ;
        rdfs:domain   :Grid ;
        rdfs:label    "has spatial resolution"@en ;
        rdfs:range    xsd:string .

:geo    a                   owl:ObjectProperty ;
        rdfs:comment        "Specific coordinates or shape associated with a region"@en ;
        rdfs:domain         :Region ;
        rdfs:label          "geo"@en ;
        rdfs:range          [ a            owl:Class ;
                              owl:unionOf  ( :GeoCoordinates :GeoShape )
                            ] ;
        rdfs:subPropertyOf  <http://schema.org/geo> .

:hasCoordinateSystem  a  owl:FunctionalProperty , owl:DatatypeProperty ;
        rdfs:comment  "Coordinate system used in a grid"@en ;
        rdfs:domain   :Grid ;
        rdfs:label    "has coordinate system"@en ;
        rdfs:range    xsd:string .

:relevantForIntervention
        a             owl:ObjectProperty ;
        rdfs:comment  "Property that links a parameter to the intervention it is relevant for."@en ;
        rdfs:domain   <https://w3id.org/okn/o/sd#Parameter> ;
        rdfs:label    "relevant for intervention"@en ;
        rdfs:range    :Intervention .

<https://w3id.org/okn/o/sd#ConfigurationSetup>
        a       owl:Class .

:EmpiricalModel  a       owl:Class ;
        rdfs:comment     "Model based on observations."@en ;
        rdfs:label       "Empirical model"@en ;
        rdfs:subClassOf  :Model .

:TimeInterval  a      owl:Class ;
        rdfs:comment  "Time interval at which a model produces output. For example, a model may produce outputs for every simulated day, hour, etc."@en ;
        rdfs:label    "Time Interval"@en .

:Intervention  a      owl:Class ;
        rdfs:comment  "Interference by a policy maker or modeler by modifying a variable or parameter of a model"@en ;
        rdfs:label    "Intervention"@en .

<https://w3id.org/okn/o/sd#Image>
        a       owl:Class .

:Theory-GuidedModel  a   owl:Class ;
        rdfs:comment     "A model guided by mathematical equations that attempt to represent one or more natural processes."@en ;
        rdfs:label       "Theory guided model"@en ;
        rdfs:subClassOf  :Model .

:hasModelResultTable  a  owl:DatatypeProperty ;
        rdfs:comment  "Sample result table associated with a model configuration"@en ;
        rdfs:domain   :ModelConfiguration ;
        rdfs:label    "has model result table"@en ;
        rdfs:range    xsd:string .

:box    a                   owl:DatatypeProperty ;
        rdfs:domain         :GeoShape ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/box> .

:calibrationTargetVariable
        a             owl:ObjectProperty ;
        rdfs:comment  "Variable for which the model was calibrated for. For example, in a hydrology model one calibrate the predicted river width by varying hydrologic conductivity"@en ;
        rdfs:domain   :ModelConfigurationSetup ;
        rdfs:label    "calibration target variable"@en ;
        rdfs:range    <https://w3id.org/okn/o/sd#VariablePresentation> .

:PointBasedGrid  a       owl:Class ;
        rdfs:comment     "A grid that is based on a series if points (or a single point). Typically associated with point-based models"@en ;
        rdfs:label       "Point Based Grid"@en ;
        rdfs:subClassOf  :Grid .

:limitations  a       owl:DatatypeProperty ;
        rdfs:comment  "Known restrictions (i.e. cases where the model is known not to be reliable or shouldn't be used)"@en ;
        rdfs:domain   :Model ;
        rdfs:label    "limitations"@en ;
        rdfs:range    xsd:string .

:CoupledModel  a         owl:Class ;
        rdfs:comment     "Model that incorporates the coupling of two or more existing models"@en ;
        rdfs:label       "Coupled model"@en ;
        rdfs:subClassOf  :Model .

<https://w3id.org/okn/o/sd#Parameter>
        a       owl:Class .

:parentCategory  a    owl:ObjectProperty ;
        rdfs:comment  "Indicates the parent category of a given category"@en ;
        rdfs:domain   :ModelCategory ;
        rdfs:label    "parent category"@en ;
        rdfs:range    :ModelCategory .

<http://schema.org/geo>
        a       owl:ObjectProperty .

:hasRegion  a               owl:ObjectProperty ;
        rdfs:comment        "Property linking a region to a model configuration/calibration. This property implies that the described model configuration is prepared to execute in that target region"@en ;
        rdfs:domain         :ModelConfiguration ;
        rdfs:range          :Region ;
        rdfs:subPropertyOf  <http://schema.org/contentLocation> .

:hasCausalDiagram  a  owl:ObjectProperty ;
        rdfs:comment  "Diagram associated to a model configuration"@en ;
        rdfs:domain   :ModelConfiguration ;
        rdfs:label    "has causal diagram"@en ;
        rdfs:range    :CausalDiagram .

:hasOutputTimeInterval
        a             owl:ObjectProperty ;
        rdfs:comment  "Time interval used in the model configuration"@en ;
        rdfs:domain   :ModelConfiguration ;
        rdfs:label    "has output time interval"@en ;
        rdfs:range    :TimeInterval .

dc:creator  a   owl:AnnotationProperty .

:Equation  a          owl:Class ;
        rdfs:comment  "Information about the mathematical representation used in a model or model configuration"@en ;
        rdfs:label    "Equation"@en .

<http://schema.org/box>
        a                 owl:DatatypeProperty ;
        rdfs:isDefinedBy  <http://schema.org/> .

:runtimeEstimation  a  owl:DatatypeProperty ;
        rdfs:comment  "An estimate of the time required to run example codes or other known configurations"@en ;
        rdfs:domain   :Model ;
        rdfs:label    "runtime estimation"@en ;
        rdfs:range    xsd:string .

:elevation  a               owl:DatatypeProperty ;
        rdfs:comment        "Elevation of a location (WGS84)"@en ;
        rdfs:domain         [ a            owl:Class ;
                              owl:unionOf  ( :GeoCoordinates :GeoShape )
                            ] ;
        rdfs:label          "elevation"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/elevation> .

:hasDimension  a      owl:FunctionalProperty , owl:DatatypeProperty ;
        rdfs:comment  "Dimension of the grid (2D, 3D)"@en ;
        rdfs:domain   :Grid ;
        rdfs:label    "has dimension"@en ;
        rdfs:range    xsd:string .

<http://schema.org/GeoCoordinates>
        a                 owl:Class ;
        rdfs:isDefinedBy  <http://schema.org/> .

:partOf  a            owl:ObjectProperty ;
        rdfs:comment  "Indicates whether a region is part of another region"@en ;
        rdfs:domain   :Region ;
        rdfs:label    "part of"@en ;
        rdfs:range    :Region .

:latitude  a                owl:DatatypeProperty ;
        rdfs:comment        "Latitude (coordinates) of a location (WGS84)"@en ;
        rdfs:domain         [ a            owl:Class ;
                              owl:unionOf  ( :GeoCoordinates :GeoShape )
                            ] ;
        rdfs:label          "latitude"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/latitude> .

:hasVariable  a  owl:ObjectProperty .

:Model  a                owl:Class ;
        rdfs:comment     "A mathematical description of a process (e.g., hydrological, agricultural, social, etc.)"@en ;
        rdfs:label       "Model"@en ;
        rdfs:subClassOf  <https://w3id.org/okn/o/sd#Software> .

:hasEquation  a       owl:ObjectProperty ;
        rdfs:comment  "Equations used in the model"@en ;
        rdfs:domain   :Model ;
        rdfs:label    "has equation"@en ;
        rdfs:range    :Equation .

:SpatialResolution  a  owl:Class .

<http://schema.org/contentLocation>
        a       owl:ObjectProperty .

:ModelConfiguration  a   owl:Class ;
        rdfs:comment     "A model configuration is a way of exposing a particular functionality of a model."@en ;
        rdfs:label       "Model configuration"@en ;
        rdfs:subClassOf  :Model , <https://w3id.org/okn/o/sd#SoftwareConfiguration> .

:Region  a               owl:Class ;
        rdfs:comment     "An area or division with some characteristics but not always fixed boundaries"@en ;
        rdfs:label       "Region"@en ;
        rdfs:subClassOf  <http://schema.org/Place> .

:validUntil  a        owl:DatatypeProperty ;
        rdfs:comment  "Date until which the calibration of a model is valid. For example, a trained model with data from 2005-2010 may only be valid for predictions until 2015."@en ;
        rdfs:domain   :ModelConfigurationSetup ;
        rdfs:label    "valid until"@en ;
        rdfs:range    xsd:dateTime .

:hasGrid  a           owl:ObjectProperty ;
        rdfs:comment  "Grid information about the model"@en ;
        rdfs:domain   :Model ;
        rdfs:label    "has grid"@en ;
        rdfs:range    :Grid .

:hasOutputVariable  a  owl:ObjectProperty ;
        rdfs:comment  "Variable that is used as output for this model"@en ;
        rdfs:domain   :Model ;
        rdfs:label    "has output variable"@en ;
        rdfs:range    <https://w3id.org/okn/o/sd#VariablePresentation> .

<http://qudt.org/schema/qudt/Unit>
        a       owl:Class .

<http://schema.org/latitude>
        a                 owl:DatatypeProperty ;
        rdfs:isDefinedBy  <http://schema.org/> .

dc:abstract  a  owl:AnnotationProperty .

<https://w3id.org/okn/o/sdm>
        a                              owl:Ontology ;
        dc:abstract                    "The Software Description Ontology for Models (SDM) expands the software description ontology (SD) to add information about scientific software models. Examples of scientific software models are hydrology models, agriculture models or economy models."@en ;
        dc:contributor                 "Scott Peckham"@en , "Hernán Vargas"@en , "Kelly Cobourn"@en , "Armen Kemanian"@en , "Christopher Duffy"@en ;
        dc:creator                     "Yolanda Gil"@en , "Daniel Garijo"@en , "Deborah Khider"@en ;
        dc:license                     "<http://creativecommons.org/licenses/by/2.0/>"@en ;
        dc:title                       "The Software Description Ontology for Models"@en ;
        terms:license                  <http://creativecommons.org/licenses/by/2.0/> ;
        vann:preferredNamespacePrefix  "sdm" ;
        vann:preferredNamespaceUri     : ;
        owl:imports                    <https://w3id.org/okn/o/sd/1.8.0> ;
        owl:priorVersion               <https://w3id.org/okn/o/sdm/1.7.0> ;
        owl:versionIRI                 <https://w3id.org/okn/o/sdm/1.7.0> ;
        owl:versionInfo                "1.7.0"@en .

:hasProcess  a        owl:ObjectProperty ;
        rdfs:comment  "Property that indicates which physical processes (if any) are associated with a model"@en ;
        rdfs:domain   :Model ;
        rdfs:label    "has process"@en ;
        rdfs:range    :Process .

:Process  a     owl:Class .

<https://w3id.org/okn/o/sd#value>
        a       owl:DatatypeProperty .

<http://schema.org/elevation>
        a                 owl:DatatypeProperty ;
        rdfs:isDefinedBy  <http://schema.org/> .

:hasConstraint  a  owl:ObjectProperty .

<https://w3id.org/okn/o/sd#DatasetSpecification>
        a       owl:Class .

:calibrationMethod  a  owl:DatatypeProperty ;
        rdfs:comment  "Calibration method used for a particular model configuration or setup"@en ;
        rdfs:domain   :ModelConfigurationSetup ;
        rdfs:label    "calibration method"@en ;
        rdfs:range    xsd:string .

:hasExplanationDiagram
        a             owl:ObjectProperty ;
        rdfs:comment  "Diagram used to explain the behavior of the model"@en ;
        rdfs:domain   :Model ;
        rdfs:label    "has explanation diagram"@en ;
        rdfs:range    <https://w3id.org/okn/o/sd#Image> .

:hasShape  a          owl:DatatypeProperty ;
        rdfs:comment  "Grids may be: rectangular, triangular, hexagonal, hybrid, unstructured, block structure, etc."@en ;
        rdfs:domain   :Grid ;
        rdfs:label    "has shape"@en ;
        rdfs:range    xsd:string .

vann:preferredNamespacePrefix
        a       owl:AnnotationProperty .

<http://schema.org/GeoShape>
        a       owl:Class .

:usesModel  a         owl:ObjectProperty ;
        rdfs:comment  "Property that describes which models are used by a coupled model"@en ;
        rdfs:domain   :Model ;
        rdfs:label    "uses model"@en ;
        rdfs:range    :Model .

:calibrationInterval  a  owl:DatatypeProperty ;
        rdfs:comment  "Property that represents the temporal interval used to calibrate a model"@en ;
        rdfs:domain   :ModelConfigurationSetup ;
        rdfs:label    "calibration interval"@en ;
        rdfs:range    xsd:string .

:hasMinimumValue  a  owl:DatatypeProperty .

:SpatiallyDistributedGrid
        a                owl:Class ;
        rdfs:comment     "Grid that represents a 2D or 3D space"@en ;
        rdfs:label       "Spatially Distributed Grid"@en ;
        rdfs:subClassOf  :Grid .

dc:contributor  a  owl:AnnotationProperty .

:intervalUnit  a            owl:ObjectProperty ;
        rdfs:comment        "Unit used in an interval (e.g., month)"@en ;
        rdfs:domain         :TimeInterval ;
        rdfs:label          "interval unit"@en ;
        rdfs:range          <http://qudt.org/schema/qudt/Unit> ;
        rdfs:subPropertyOf  <https://w3id.org/okn/o/sd#usesUnit> .

:GeoShape  a             owl:Class ;
        rdfs:comment     "Shape or polygon of a region in a map"@en ;
        rdfs:label       "GeoShape"@en ;
        rdfs:subClassOf  <http://schema.org/GeoShape> .

:parameterization  a  owl:DatatypeProperty ;
        rdfs:comment  "Were there any simplifications made to processes to make the model more efficient"@en ;
        rdfs:domain   :Model ;
        rdfs:label    "parameterization"@en ;
        rdfs:range    xsd:string .

:Emulator  a             owl:Class ;
        rdfs:comment     "Type of models that emulates the behavior of another model. For example, an emulator can be a machine learning model trained on the output runs of a hydrology model"@en ;
        rdfs:label       "Emulator"@en ;
        rdfs:subClassOf  :Model .

<http://schema.org/Place>
        a       owl:Class .

<https://w3id.org/okn/o/sd#VariablePresentation>
        a       owl:Class .

:longitude  a               owl:DatatypeProperty ;
        rdfs:comment        "Longitude (coordinates) of a location (WGS84)"@en ;
        rdfs:domain         [ a            owl:Class ;
                              owl:unionOf  ( :GeoCoordinates :GeoShape )
                            ] ;
        rdfs:label          "longitude"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/longitude> .

:HybridModel  a          owl:Class ;
        rdfs:comment     "A model based on empirical observations and theory."@en ;
        rdfs:label       "Hybrid model"@en ;
        rdfs:subClassOf  :Model .

dc:title  a     owl:AnnotationProperty .

:theoreticalBasis  a  owl:DatatypeProperty ;
        rdfs:comment  "What is the theory behind the processes described in the model"@en ;
        rdfs:domain   :Model ;
        rdfs:label    "theoretical basis"@en ;
        rdfs:range    xsd:string .

:calibratedVariable  a  owl:ObjectProperty ;
        rdfs:comment  "Variable that was calibrated in this particular model configuration calibration"@en ;
        rdfs:domain   :ModelConfigurationSetup ;
        rdfs:label    "calibrated variable"@en ;
        rdfs:range    <https://w3id.org/okn/o/sd#VariablePresentation> .

:ModelCategory  a     owl:Class ;
        rdfs:comment  "Class used to represent a category of a model (e.g., Hydrology, Agriculture, etc.)"@en ;
        rdfs:label    "Model category"@en .

:Category  a    owl:Class .

:hasMaximumValue  a  owl:DatatypeProperty .

<https://w3id.org/okn/o/sd#Software>
        a       owl:Class .
