@prefix :      <https://w3id.org/okn/o/sd#> .
@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/> .

<http://www.w3.org/ns/prov#Activity>
        a       owl:Class .

:keywords  a                owl:DatatypeProperty ;
        rdfs:comment        "Keywords associated with a software component"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "keywords"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/keywords> .

:partOfDataset  a     owl:ObjectProperty ;
        rdfs:comment  "Associates a presentation with a dataset where the presentation occurs"@en ;
        rdfs:domain   :VariablePresentation ;
        rdfs:label    "part of dataset"@en ;
        rdfs:range    :DatasetSpecification .

:hasFixedValue  a     owl:DatatypeProperty ;
        rdfs:comment  "Value of a parameter in a software setup."@en ;
        rdfs:domain   :Parameter ;
        rdfs:label    "has fixed value"@en ;
        rdfs:range    [ a            rdfs:Datatype ;
                        owl:unionOf  ( xsd:anyURI xsd:boolean xsd:dateTime xsd:float xsd:integer xsd:string )
                      ] .

:adjustsVariable  a   owl:FunctionalProperty , owl:ObjectProperty ;
        rdfs:comment  "Property that links parameter with the variable they adjust. This property can be used when parameters quantify variables without directly representing them. For example, a \"fertilizer percentage adjustment\" parameter can quantify a \"fertilizer price\" variable"@en ;
        rdfs:domain   :Parameter ;
        rdfs:label    "adjusts variable"@en ;
        rdfs:range    :Variable .

:SoftwareImage  a        owl:Class ;
        rdfs:comment     "An image that virtualizes the functionality of a given software. For example, a Docker container."@en ;
        rdfs:label       "Software Image"@en ;
        rdfs:subClassOf  :Software .

:SourceCode  a           owl:Class ;
        rdfs:comment     "Class representing the characteristics of the code associated with a  software component"@en ;
        rdfs:label       "Source Code"@en ;
        rdfs:subClassOf  <http://schema.org/SoftwareSourceCode> .

:CatalogIdentifier  a    owl:Class ;
        rdfs:comment     "Class to identify that a parameter is a catalog identifier. The rationale for this type of parameter is that in some cases datasets may be downloaded in the software component itself, rather than exposed as an input"@en ;
        rdfs:label       "Catalog identifier"@en ;
        rdfs:subClassOf  :Parameter .

:hasInput  a          owl:ObjectProperty ;
        rdfs:comment  "Property that links a model configuration to the input types expected by it."@en ;
        rdfs:domain   :SoftwareConfiguration ;
        rdfs:label    "has input"@en ;
        rdfs:range    :DatasetSpecification .

<http://www.w3.org/ns/prov#wasDerivedFrom>
        a                 owl:ObjectProperty ;
        rdfs:isDefinedBy  <http://www.w3.org/ns/prov#> .

:hasExecutionCommand  a  owl:DatatypeProperty ;
        rdfs:comment  "Execution instructions on how to run the image"@en ;
        rdfs:domain   [ a            owl:Class ;
                        owl:unionOf  ( :SampleExecution :SoftwareConfiguration :SoftwareImage )
                      ] ;
        rdfs:label    "has execution command"@en ;
        rdfs:range    xsd:string .

:hasMinimumAcceptedValue
        a             owl:DatatypeProperty ;
        rdfs:comment  "Minimum accepted value of a variable presentation (or a parameter)"@en ;
        rdfs:domain   [ a            owl:Class ;
                        owl:unionOf  ( :Parameter :VariablePresentation )
                      ] ;
        rdfs:label    "has minimum accepted value"@en ;
        rdfs:range    [ a            rdfs:Datatype ;
                        owl:unionOf  ( xsd:dateTime xsd:float xsd:integer )
                      ] .

:hasPurpose  a        owl:DatatypeProperty ;
        rdfs:comment  "Objective or main functionality that can be achieved by running this software"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has purpose"@en ;
        rdfs:range    xsd:string .

:datePublished  a           owl:DatatypeProperty ;
        rdfs:comment        "Date when a software component was published"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "date published"@en ;
        rdfs:range          xsd:dateTime ;
        rdfs:subPropertyOf  <http://schema.org/datePublished> .

:contributor  a             owl:ObjectProperty ;
        rdfs:comment        "Contributor to a software component"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "contributor"@en ;
        rdfs:range          :Person ;
        rdfs:subPropertyOf  <http://schema.org/contributor> .

:SampleResource  a       owl:Class ;
        rdfs:comment     "A sample resource associated with a software"@en ;
        rdfs:label       "Sample Resource"@en ;
        rdfs:subClassOf  <http://www.w3.org/ns/prov#Entity> .

:logo   a             owl:ObjectProperty ;
        rdfs:comment  "Property that links to the image used as logo for a software component"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "logo"@en ;
        rdfs:range    :Image .

:hasMaximumAcceptedValue
        a             owl:DatatypeProperty ;
        rdfs:comment  "Maximum accepted value of a variable presentation (or a parameter)"@en ;
        rdfs:domain   [ a            owl:Class ;
                        owl:unionOf  ( :Parameter :VariablePresentation )
                      ] ;
        rdfs:label    "has maximum accepted value"@en ;
        rdfs:range    [ a            rdfs:Datatype ;
                        owl:unionOf  ( xsd:dateTime xsd:float xsd:integer )
                      ] .

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

:Unit   a                owl:Class ;
        rdfs:comment     "Class designed to distinguish the different types of units that are available in variables from datasets or parameters"@en ;
        rdfs:label       "Unit"@en ;
        rdfs:subClassOf  <http://qudt.org/schema/qudt/Unit> .

:website  a           owl:DatatypeProperty ;
        rdfs:comment  "Website of the software"@en ;
        rdfs:domain   [ a            owl:Class ;
                        owl:unionOf  ( :Organization :Person :Software )
                      ] ;
        rdfs:label    "website"@en ;
        rdfs:range    xsd:anyURI .

:hasFAQ  a            owl:DatatypeProperty ;
        rdfs:comment  "Frequently asked questions about a software"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has FAQ"@en ;
        rdfs:range    xsd:string .

:hasDocumentation  a  owl:DatatypeProperty ;
        rdfs:comment  "Pointer to the documentation of the model"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has documentation"@en ;
        rdfs:range    xsd:anyURI .

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

terms:license  a  owl:AnnotationProperty .

:hasDataTransformation
        a             owl:ObjectProperty ;
        rdfs:comment  "Property that associates an input/output with their corresponding data transformation."@en ;
        rdfs:domain   :DatasetSpecification ;
        rdfs:label    "has data transformation"@en ;
        rdfs:range    :DataTransformation .

:name   a                   owl:DatatypeProperty ;
        rdfs:comment        "Name of the resource"@en ;
        rdfs:label          "name"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/name> .

:hasFixedResource  a  owl:ObjectProperty ;
        rdfs:comment  "Property that links a parameter or an input to a fixed value. For example, in a given configuration a parameter with the planting date for a model could be fixed to avoid the user changing it for that region."@en ;
        rdfs:domain   :DatasetSpecification ;
        rdfs:label    "has fixed resource"@en ;
        rdfs:range    :SampleResource .

:dataCatalogIdentifier
        a                   owl:DatatypeProperty ;
        rdfs:comment        "An identifier for resources with metadata entries in a data catalog"@en ;
        rdfs:domain         :SampleResource ;
        rdfs:label          "data catalog identifier"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/identifier> .

:hasRule  a           owl:DatatypeProperty ;
        rdfs:comment  "Rule that defines this constraint"@en ;
        rdfs:domain   :Constraint ;
        rdfs:label    "has rule"@en ;
        rdfs:range    xsd:string .

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

:SoftwareConfiguration
        a                owl:Class ;
        rdfs:comment     "A software configuration represents a particular way of invoking a function of a software component. A software configuration exposes the precise inputs and outputs that are used for that function. Multiple software configurations may be associated to a software component. A software configuration facilitates the encapsulation of software, and it can be used to represent components of scientific workflows."@en ;
        rdfs:label       "Software Configuration"@en ;
        rdfs:subClassOf  :Software .

:hasConfiguration  a  owl:ObjectProperty ;
        rdfs:comment  "Property that links a model to one of its configurations. A model may have multiple configurations, each of which is unique in terms of the inputs and outputs it uses."@en ;
        rdfs:domain   :SoftwareVersion ;
        rdfs:label    "has configuration"@en ;
        rdfs:range    :SoftwareConfiguration .

:SampleCollection  a     owl:Class ;
        rdfs:comment     "A collection of resources that are used as sample for running a sfoware component multiple times"@en ;
        rdfs:label       "Sample Collection"@en ;
        rdfs:subClassOf  :SampleResource .

:FundingInformation  a  owl:Class ;
        rdfs:comment  "A class to represent the funding information of a software project"@en ;
        rdfs:label    "Funding Information"@en .

:doi    a                   owl:DatatypeProperty ;
        rdfs:comment        "Digital Object Identifier associated with a software component"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "doi"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  :identifier .

:hasStepSize  a       owl:DatatypeProperty ;
        rdfs:comment  "Property that determines what are the increments (step size) that are commonly used to vary a parameter. This is commonly used for automatically setting up software tests. For example, if I want to set up a model and try 30 reasonable values on a parameter, I may use the default value and the step size to create the appropriate increments. If the step size is 0.1 and the default value is 0, then I will will be able to create setups: 0, 0.1, 0.2...2.9,3"@en ;
        rdfs:domain   :Parameter ;
        rdfs:label    "has step size"@en ;
        rdfs:range    xsd:float .

:hasComponentLocation
        a             owl:DatatypeProperty ;
        rdfs:comment  "Location of the aggregation of all the files needed to execute the component. Usually a zip file including the run script and support scripts, including specification files"@en ;
        rdfs:domain   :SoftwareConfiguration ;
        rdfs:label    "has component location"@en ;
        rdfs:range    xsd:anyURI .

<http://www.w3.org/ns/prov#Entity>
        a       owl:Class .

:hasFormat  a         owl:DatatypeProperty ;
        rdfs:comment  "Format followed by a file. For example, txt, nc, etc."@en ;
        rdfs:domain   [ a            owl:Class ;
                        owl:unionOf  ( :DatasetSpecification :Visualization )
                      ] ;
        rdfs:label    "has format"@en ;
        rdfs:range    xsd:string .

:issueTracker  a            owl:DatatypeProperty ;
        rdfs:comment        "Pointer to the issue tracker of a software component"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "issue tracker"@en ;
        rdfs:range          xsd:anyURI ;
        rdfs:subPropertyOf  <https://codemeta.github.io/terms/issueTracker> .

:hasOutput  a         owl:ObjectProperty ;
        rdfs:comment  "Property that expresses what are the outputs of a model"@en ;
        rdfs:domain   :SoftwareConfiguration ;
        rdfs:label    "has output"@en ;
        rdfs:range    :DatasetSpecification .

:hasConstraint  a     owl:ObjectProperty ;
        rdfs:comment  "Constraint or rule associated to a  variable or software configuration. For example: \"This model accepts only monthly data\", or \"all inputs of this model configuration must share the same location\". More structured restrictions, such as Jena rules or SWRL rules may also be captured with this property"@en ;
        rdfs:domain   :SoftwareConfiguration ;
        rdfs:label    "has constraint"@en ;
        rdfs:range    :Constraint .

:hasSampleExecution  a  owl:ObjectProperty ;
        rdfs:comment  "Property pointing to a sample execution of a software configuration"@en ;
        rdfs:domain   :SoftwareConfiguration ;
        rdfs:label    "has sample execution"@en ;
        rdfs:range    :SampleExecution .

:Software  a             owl:Class ;
        rdfs:comment     "The set of instructions that indicate a machine how to work. In this ontology software is a general concept which acts as a superclass for software versions, docker images, data transformations, etc."@en ;
        rdfs:label       "Software"@en ;
        rdfs:subClassOf  <http://schema.org/SoftwareApplication> .

dc:abstract  a  owl:AnnotationProperty .

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

vann:preferredNamespacePrefix
        a       owl:AnnotationProperty .

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

:DataTransformation  a   owl:Class ;
        rdfs:comment     "Class that represents a software for performing data transformation."@en ;
        rdfs:label       "Data Transformation"@en ;
        rdfs:subClassOf  :SoftwareConfiguration .

:SampleExecution  a      owl:Class ;
        rdfs:comment     "A sample execution of a given software"@en ;
        rdfs:label       "Sample Execution"@en ;
        rdfs:subClassOf  <http://www.w3.org/ns/prov#Activity> .

<http://www.w3.org/ns/prov#used>
        a                 owl:ObjectProperty ;
        rdfs:isDefinedBy  <http://www.w3.org/ns/prov#> .

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

:codeRepository  a          owl:DatatypeProperty ;
        rdfs:comment        "URL to the code repository of a software component"@en ;
        rdfs:domain         :SourceCode ;
        rdfs:label          "code repository"@en ;
        rdfs:range          xsd:anyURI ;
        rdfs:subPropertyOf  <http://schema.org/codeRepository> .

:copyrightHolder  a         owl:ObjectProperty ;
        rdfs:comment        "Copyright holder for a software component"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "copyright holder"@en ;
        rdfs:range          [ a            owl:Class ;
                              owl:unionOf  ( :Organization :Person )
                            ] ;
        rdfs:subPropertyOf  <http://schema.org/copyrightHolder> .

:hasAcknowledgements  a  owl:DatatypeProperty ;
        rdfs:comment  "String with the people, organizations and other contributors acknowledged by the authors."@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has acknowledgements"@en ;
        rdfs:range    xsd:string .

:pathLocation  a      owl:DatatypeProperty ;
        rdfs:comment  "Property that indicates the relative path of an input or output with respect to the folder structure of the executable. \n\nFor example, let's assume we have an input that has to exist in the folder `/datasets` or the executable will not work. This property ensures that this knowledge is captured for a given software component execution.\n\nIn this case the property would capture this as follows:\n\n```\n:input_prep a sd:DatasetSpecification .\n:input_prep rdfs:label \"precipitation file\" .\n:input_precip sd:pathLocation \"/datasets/\".\n```"@en ;
        rdfs:domain   :DatasetSpecification ;
        rdfs:label    "path location"@en ;
        rdfs:range    xsd:string .

<http://www.w3.org/ns/prov#wasGeneratedBy>
        a                 owl:ObjectProperty ;
        rdfs:isDefinedBy  <http://www.w3.org/ns/prov#> .

:Visualization  a     owl:Class ;
        rdfs:comment  "Class to represent any type of visualization related to a software. For example, a dynamic HTML page, a video, etc."@en ;
        rdfs:label    "Visualization"@en .

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

:availableInRegistry  a  owl:DatatypeProperty ;
        rdfs:comment  "Property that indicates in which registry the software image being described can be found. For example, https://hub.docker.com"@en ;
        rdfs:domain   :SoftwareImage ;
        rdfs:label    "available in registry"@en ;
        rdfs:range    xsd:anyURI .

:fundingGrant  a            owl:DatatypeProperty ;
        rdfs:comment        "Grant number used for funding"@en ;
        rdfs:domain         :FundingInformation ;
        rdfs:label          "funding grant"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <https://codemeta.github.io/terms/funding> .

dc:creator  a   owl:AnnotationProperty .

:hasInstallationInstructions
        a             owl:DatatypeProperty ;
        rdfs:comment  "Instructions required to install this particular piece of software. Installation instructions usually are available in a human-readable manner."@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has installation instructions"@en ;
        rdfs:range    xsd:string .

:referencePublication
        a                   owl:DatatypeProperty ;
        rdfs:comment        "Main publication to cite for this software component"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "reference publication"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <https://codemeta.github.io/terms/referencePublication> .

:recommendedIncrement
        a             owl:DatatypeProperty ;
        rdfs:comment  "Value that represents how a parameter should be incremented on each iteration of a software component execution. This value is important when preparing execution ensembles automatically, e.g., simulating crop production varying the parameter \"fertilizer amount\" in increments of 10%."@en ;
        rdfs:domain   :Parameter ;
        rdfs:label    "recommended increment"@en ;
        rdfs:range    xsd:float .

:hasUsageNotes  a     owl:DatatypeProperty ;
        rdfs:comment  "Property that describes the usage considerations of a particular software. These notes capture the rationale of for that software configuration, along with an explanation for sample inputs, things to consider when running the model with data, etc."@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has usage notes"@en ;
        rdfs:range    xsd:string .

vann:preferredNamespaceUri
        a       owl:AnnotationProperty .

:hasImplementationScriptLocation
        a             owl:DatatypeProperty ;
        rdfs:comment  "Property that points to the main runnable script for the current function"@en ;
        rdfs:domain   :SoftwareConfiguration ;
        rdfs:label    "has implementation script location"@en ;
        rdfs:range    xsd:anyURI .

:hasSetup  a          owl:ObjectProperty ;
        rdfs:comment  "Property used to define configurations with some fixed resources and values. The rationale of this property is to allow predefined configurations"@en ;
        rdfs:domain   :SoftwareConfiguration ;
        rdfs:label    "has setup"@en ;
        rdfs:range    :ConfigurationSetup .

<http://www.w3.org/ns/prov#value>
        a                 owl:DatatypeProperty ;
        rdfs:isDefinedBy  <http://www.w3.org/ns/prov#> .

:compatibleVisualizationSoftware
        a             owl:ObjectProperty ;
        rdfs:comment  "Property that links a software component to other useful software that canbe used to visualize its outputs"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "compatible visualization software" ;
        rdfs:range    :Software .

:author  a                  owl:ObjectProperty ;
        rdfs:comment        "The creator of a software component"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "author"@en ;
        rdfs:range          [ a            owl:Class ;
                              owl:unionOf  ( :Organization :Person )
                            ] ;
        rdfs:subPropertyOf  <http://schema.org/author> .

<https://codemeta.github.io/terms/readme>
        a                 owl:DatatypeProperty ;
        rdfs:isDefinedBy  <https://codemeta.github.io/terms/> .

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

:license  a                 owl:DatatypeProperty ;
        rdfs:comment        "License of a software component or its source code"@en ;
        rdfs:domain         [ a            owl:Class ;
                              owl:unionOf  ( :Software :SourceCode )
                            ] ;
        rdfs:label          "license"@en ;
        rdfs:range          xsd:anyURI ;
        rdfs:subPropertyOf  <http://schema.org/license> .

<http://schema.org/memoryRequirements>
        a                 owl:DatatypeProperty ;
        rdfs:domain       :Software ;
        rdfs:isDefinedBy  <http://schema.org/> ;
        rdfs:range        xsd:string .

:ConfigurationSetup  a   owl:Class ;
        rdfs:comment     "Special type of configuration in which some of the inputs or parameters are associated to files or values. A configuration may be associated to multiple setups to facilitate its execution."@en ;
        rdfs:label       "Configuration Setup"@en ;
        rdfs:subClassOf  :SoftwareConfiguration .

owl:priorVersion  a  owl:AnnotationProperty .

:fundingSource  a           owl:ObjectProperty ;
        rdfs:comment        "Link to the organization funding a software component"@en ;
        rdfs:domain         :FundingInformation ;
        rdfs:label          "funding source"@en ;
        rdfs:range          :Organization ;
        rdfs:subPropertyOf  owl:topObjectProperty .

:tag    a             owl:DatatypeProperty ;
        rdfs:comment  "Tag used to annotate a version or a software configuration. This annotation is useful to show which version is the latest, or which version is deprecated. Supported tags are: \"latest\", \"deprecated\""@en ;
        rdfs:domain   [ a            owl:Class ;
                        owl:unionOf  ( :ConfigurationSetup :SoftwareConfiguration :SoftwareVersion )
                      ] ;
        rdfs:label    "tag"@en ;
        rdfs:range    xsd:string .

:Image  a                owl:Class ;
        rdfs:comment     "An image (e.g. tiff file) is a type of dataset specification used to define certain inputs of models like soil, crops, etc."@en ;
        rdfs:label       "Image"@en ;
        rdfs:subClassOf  :DatasetSpecification .

:hasParameter  a      owl:ObjectProperty ;
        rdfs:comment  "Property that indicates the parameters of a model configuration"@en ;
        rdfs:domain   :SoftwareConfiguration ;
        rdfs:label    "has parameter"@en ;
        rdfs:range    :Parameter .

:status  a            owl:DatatypeProperty ;
        rdfs:comment  "Data property to indicate the status of a configuration setups. For example, to indicate that a setup has been executed in a platform, that the setup should notbe shown to users (it's an auxiliary setup), etc."@en ;
        rdfs:domain   :ConfigurationSetup ;
        rdfs:label    "status"@en ;
        rdfs:range    xsd:string .

:operatingSystems  a        owl:DatatypeProperty ;
        rdfs:comment        "Operating systems under which a software component can operate"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "operating systems"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/operatingSystems> .

:programmingLanguage  a     owl:DatatypeProperty ;
        rdfs:comment        "Language used to code a software component"@en ;
        rdfs:domain         :SourceCode ;
        rdfs:label          "programming language"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/programmingLanguage> .

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

:hasSupportScriptLocation
        a             owl:DatatypeProperty ;
        rdfs:comment  "Property that links to the location of scripts that may be used from the main runnable script."@en ;
        rdfs:domain   :SoftwareConfiguration ;
        rdfs:label    "has support script location"@en ;
        rdfs:range    xsd:anyURI .

:Variable  a          owl:Class ;
        rdfs:comment  "A symbol that represents a quanity in a dataset or dataset specification"@en ;
        rdfs:label    "Variable"@en .

:softwareRequirements
        a                   owl:DatatypeProperty ;
        rdfs:comment        "Software requirements needed to install a software component"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "software requirements"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/softwareRequirements> .

:hasPart  a           owl:ObjectProperty ;
        rdfs:comment  "Property designed to reference the elements included in a sample collection."@en ;
        rdfs:domain   :SampleCollection ;
        rdfs:label    "has part"@en ;
        rdfs:range    :SampleResource .

:hasVersionId  a            owl:DatatypeProperty ;
        rdfs:comment        "Identifier of the version of this software"@en ;
        rdfs:domain         :SoftwareVersion ;
        rdfs:label          "has version id"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/identifier> .

:hasPresentation  a    owl:ObjectProperty ;
        rdfs:comment   "Property that links an instance of a dataset (or a dataset specification) to the presentation of a variable contained (or expected to be contained) on it."@en ;
        rdfs:domain    [ a            owl:Class ;
                         owl:unionOf  ( :DatasetSpecification :Parameter )
                       ] ;
        rdfs:label     "has presentation"@en ;
        rdfs:range     :VariablePresentation ;
        owl:inverseOf  :partOfDataset .

:identifier  a              owl:DatatypeProperty ;
        rdfs:comment        "Identifier of the resource being described"@en ;
        rdfs:domain         [ a            owl:Class ;
                              owl:unionOf  ( :Organization :Person :Software )
                            ] ;
        rdfs:label          "identifier"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/identifier> .

:screenshot  a              owl:ObjectProperty ;
        rdfs:comment        "Image illustrating a snapshot of the target software"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "screenshot"@en ;
        rdfs:range          :Image ;
        rdfs:subPropertyOf  <http://schema.org/screenshot> .

:hasExecutableInstructions
        a             owl:DatatypeProperty ;
        rdfs:comment  "Instructions that indicate how a software component should be executed. The difference with `hasExecutionCommand` is that the execution instructions aim to be human-readable, and have explanations between the different commands and instructions"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has executable instructions"@en ;
        rdfs:range    xsd:string .

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

:Organization  a         owl:Class ;
        rdfs:comment     "An organized body of people with a particular purpose"@en ;
        rdfs:label       "Organization"@en ;
        rdfs:subClassOf  <http://schema.org/Organization> .

:hasExecutableNotebook
        a             owl:DatatypeProperty ;
        rdfs:comment  "Property that links a software component with an executable notebook (e.g., Jupyter notebook) that illustrates how to use it in an executable manner."@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has executable notebook"@en ;
        rdfs:range    xsd:anyURI .

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

:VariablePresentation
        a                owl:Class ;
        rdfs:comment     "Concept used to represent an instantiation of a variable in an input/output dataset. For example, a model A may use an input file with temperature expressed in Farenheit (variablePresentation1), while a model B may produce an output with temperature in Celsius (variablePresentation2). Both variable presentations refer to the concept of temperature."@en ;
        rdfs:label       "Variable presentation"@en ;
        rdfs:subClassOf  :Variable .

:StandardVariable  a     owl:Class ;
        rdfs:comment     "A standard variable, necessary to refer to all the variable using the same nomenclature in a domain ontology. For example, a standard variable may be a SVO variable (http://www.geoscienceontology.org/geo-upper#Variable)"@en ;
        rdfs:label       "Standard Variable"@en ;
        rdfs:subClassOf  :Variable .

:Person  a               owl:Class ;
        rdfs:comment     "A human being (individual)"@en ;
        rdfs:label       "Person"@en ;
        rdfs:subClassOf  <http://schema.org/Person> .

:hasLongName  a       owl:DatatypeProperty ;
        rdfs:comment  "Properties that relate the variable representation to its long name. The long name is useful for context (e.g., precipitation is less ambiguous than P) but not as precise as the standard name."@en ;
        rdfs:domain   :VariablePresentation ;
        rdfs:label    "has long name"@en ;
        rdfs:range    xsd:string .

:wasDerivedFromSetup  a     owl:ObjectProperty ;
        rdfs:comment        "Property that links a setup to a previous version of that setup. This property is needed (for example) when creating snapshots of setups."@en ;
        rdfs:domain         :ConfigurationSetup ;
        rdfs:label          "was derived from setup"@en ;
        rdfs:range          :ConfigurationSetup ;
        rdfs:subPropertyOf  <http://www.w3.org/ns/prov#wasDerivedFrom> .

:hasSourceCode  a     owl:FunctionalProperty , owl:ObjectProperty ;
        rdfs:comment  "Property designed to link a software with its software source code (which may reside in a code repository such as GitHub)"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has source code"@en ;
        rdfs:range    :SourceCode .

:position  a          owl:DatatypeProperty ;
        rdfs:comment  "Position of the parameter or input/output in the model configuration. This property is needed to know how to organize the I/O of the component on execution"@en ;
        rdfs:domain   [ a            owl:Class ;
                        owl:unionOf  ( :DatasetSpecification :Parameter )
                      ] ;
        rdfs:label    "position"@en ;
        rdfs:range    xsd:integer .

:hasCodeOfConduct  a  owl:DatatypeProperty ;
        rdfs:comment  "Property linking the software component to the code of conduct to be followed by potential contributors. The range of this property may be a strin or a URI to the target file."@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has code of conduct"@en ;
        rdfs:range    [ a            rdfs:Datatype ;
                        owl:unionOf  ( xsd:anyURI xsd:string )
                      ] .

:hasDownloadInstructions
        a             owl:DatatypeProperty ;
        rdfs:comment  "Instructions needed to download a software component. The difference with `hasDownloadURL` is that this property captures the human readable instructions required to download software. For example, sometimes an authentication is needed, users need to fill in a form, etc."@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has download instructions"@en ;
        rdfs:range    xsd:string .

:hasDownloadURL  a    owl:DatatypeProperty ;
        rdfs:comment  "Download URL where to obtain the source/executable of the software"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has download URL"@en ;
        rdfs:range    xsd:anyURI .

:hasAssumption  a     owl:DatatypeProperty ;
        rdfs:comment  "Assumptions of a software, e.g. the solver being used for a particular model, the source of the data (e.g., all data must have a given resolution), etc."@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has assumption"@en ;
        rdfs:range    xsd:string .

:isTransformedFrom  a       owl:ObjectProperty ;
        rdfs:comment        "Property that links a dataset specification from a model configuration or setup to the output from a target data transformation. This occurs when a data transformation produces several outputs, but only one of them is the one needed for a model"@en ;
        rdfs:domain         :DatasetSpecification ;
        rdfs:label          "is transformed from"@en ;
        rdfs:range          :DatasetSpecification ;
        rdfs:subPropertyOf  owl:topObjectProperty .

dc:contributor  a  owl:AnnotationProperty .

:adjustableParameter  a  owl:ObjectProperty ;
        rdfs:comment  "Parameter that can be adjusted in a configuration setup"@en ;
        rdfs:domain   :ConfigurationSetup ;
        rdfs:label    "adjustable parameter"@en ;
        rdfs:range    :Parameter .

:wasDerivedFromSoftware
        a                   owl:ObjectProperty ;
        rdfs:comment        "Property that identifies the software used to create a visualization"@en ;
        rdfs:domain         :Visualization ;
        rdfs:label          "was derived from software"@en ;
        rdfs:range          :Software ;
        rdfs:subPropertyOf  <http://www.w3.org/ns/prov#wasDerivedFrom> .

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

:hadPrimarySource  a        owl:ObjectProperty ;
        rdfs:comment        "Property to identify the original source of the information of the annotated resource. It could be a web page, an organization, a person, some experiment notes, etc."@en ;
        rdfs:domain         [ a            owl:Class ;
                              owl:unionOf  ( :Image :Software :Visualization )
                            ] ;
        rdfs:label          "had primary source"@en ;
        rdfs:range          owl:Thing ;
        rdfs:subPropertyOf  <http://www.w3.org/ns/prov#hadPrimarySource> .

:hasSoftwareImage  a  owl:FunctionalProperty , owl:ObjectProperty ;
        rdfs:comment  "Function to link a function with its corresponding container"@en ;
        rdfs:domain   :SoftwareConfiguration ;
        rdfs:label    "has software image"@en ;
        rdfs:range    :SoftwareImage .

:DataTransformationSetup
        a                owl:Class ;
        rdfs:comment     "Special type of data transformation where the inputs and parameters have some pre-selected values. For example, they may point to a particular dataset URL to be used in the transformation"@en ;
        rdfs:label       "Data Transformation Setup"@en ;
        rdfs:subClassOf  :DataTransformation , :ConfigurationSetup .

:hasExample  a        owl:DatatypeProperty ;
        rdfs:comment  "An example explaining a scenario where the software component was used in plain language."@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has example"@en ;
        rdfs:range    xsd:string .

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

:dateCreated  a             owl:DatatypeProperty ;
        rdfs:comment        "Date when a software component was created"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "date created"@en ;
        rdfs:range          xsd:dateTime ;
        rdfs:subPropertyOf  <http://schema.org/dateCreated> .

:hasVariable  a       owl:ObjectProperty ;
        rdfs:comment  "Property that links a rule and the variable that will test it"@en ;
        rdfs:domain   :Constraint ;
        rdfs:label    "has variable"@en ;
        rdfs:range    :VariablePresentation .

<http://purl.org/linked-data/cube#DataStructureDefinition>
        a                 owl:Class ;
        rdfs:isDefinedBy  <http://purl.org/linked-data/cube#> .

:Constraint  a        owl:Class ;
        rdfs:comment  "Data constraints of a configuration"@en ;
        rdfs:label    "Constraint"@en .

:hasDataType  a       owl:DatatypeProperty ;
        rdfs:comment  "Property that indicates the data type of a parameter"@en ;
        rdfs:domain   :Parameter ;
        rdfs:label    "has data type"@en ;
        rdfs:range    xsd:string .

<https://codemeta.github.io/terms/funding>
        a                 owl:DatatypeProperty ;
        rdfs:isDefinedBy  <https://codemeta.github.io/terms/> .

:hasDimensionality  a  owl:DatatypeProperty ;
        rdfs:comment  "Property to indicate dimensionality of the input or output of a dataset specification"@en ;
        rdfs:domain   :DatasetSpecification ;
        rdfs:label    "has dimensionality"@en ;
        rdfs:range    xsd:integer .

:hasBuildFile  a      owl:DatatypeProperty ;
        rdfs:comment  "A file (e.g., Dockerfile) with executable instructions indicating how a Software Image or a Software component is built"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has build file"@en ;
        rdfs:range    xsd:anyURI .

:supportDetails  a    owl:DatatypeProperty ;
        rdfs:comment  "Property to link details, such as mailing lists in case a contact person is not provided"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "support details"@en ;
        rdfs:range    xsd:string .

:publisher  a               owl:ObjectProperty ;
        rdfs:comment        "Publisher organization or person responsible for a software component"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "publisher"@en ;
        rdfs:range          [ a            owl:Class ;
                              owl:unionOf  ( :Organization :Person )
                            ] ;
        rdfs:subPropertyOf  <http://schema.org/publisher> .

:hasDefaultValue  a   owl:DatatypeProperty ;
        rdfs:comment  "Default accepted value of a variable presentation (or a parameter)"@en ;
        rdfs:domain   [ a            owl:Class ;
                        owl:unionOf  ( :Parameter :VariablePresentation )
                      ] ;
        rdfs:label    "has default value"@en ;
        rdfs:range    [ a            rdfs:Datatype ;
                        owl:unionOf  ( xsd:anyURI xsd:boolean xsd:dateTime xsd:float xsd:integer xsd:string )
                      ] .

:shortDescription  a        owl:DatatypeProperty ;
        rdfs:comment        "A summarized description of the resource"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "short description" ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  :description .

:email  a                   owl:DatatypeProperty ;
        rdfs:comment        "Email of a person"@en ;
        rdfs:domain         :Person ;
        rdfs:label          "email"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/email> .

<http://schema.org/author>
        a                 owl:ObjectProperty ;
        rdfs:isDefinedBy  <http://schema.org/> .

<http://www.w3.org/ns/prov#hadPrimarySource>
        a                 owl:ObjectProperty ;
        rdfs:isDefinedBy  <http://www.w3.org/ns/prov#> .

:memoryRequirements  a      owl:DatatypeProperty ;
        rdfs:comment        "Memory requirements of a software"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "memory requirements"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/memoryRequirements> .

dc:title  a     owl:AnnotationProperty .

:copyrightYear  a           owl:DatatypeProperty ;
        rdfs:comment        "Year in which the software component was copyrighted"@en ;
        rdfs:label          "copyright year"@en ;
        rdfs:subPropertyOf  <http://schema.org/copyrightYear> .

<https://codemeta.github.io/terms/issueTracker>
        a                 owl:DatatypeProperty ;
        rdfs:isDefinedBy  <https://codemeta.github.io/terms/> .

<http://schema.org/contributor>
        a                 owl:ObjectProperty ;
        rdfs:isDefinedBy  <http://schema.org/> .

<http://schema.org/publisher>
        a                 owl:ObjectProperty ;
        rdfs:isDefinedBy  <http://schema.org/> .

:hasAcceptedValues  a  owl:DatatypeProperty ;
        rdfs:comment  "Property that constraints which values are accepted for a parameter. For example, the name of a crop can only be \"Maize\" or \"Sorghum\""@en ;
        rdfs:domain   :Parameter ;
        rdfs:label    "has accepted values"@en ;
        rdfs:range    xsd:string .

dc:license  a   owl:AnnotationProperty .

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

:hasSampleResult  a   owl:ObjectProperty ;
        rdfs:comment  "Property designed to link a software configuration to a sample resource resulting from its execution" ;
        rdfs:domain   :SoftwareConfiguration ;
        rdfs:label    "has sample result"@en ;
        rdfs:range    :SampleResource .

<https://w3id.org/okn/o/sd>
        a                              owl:Ontology ;
        rdfs:comment                   "An ontology for describing software and their links to inputs, outputs and variables. The ontology extends schema.org and codemeta vocabularies"@en ;
        dc:abstract                    "An ontology for describing software and their links to inputs, outputs and variables. The ontology extends schema.org and codemeta vocabularies"@en ;
        dc:contributor                 "Hernan Vargas" , "Maximiliano Osorio" ;
        dc:created                     "September 29th, 2020"@en ;
        dc:creator                     "Deborah Khider" , "Varun Ratnakar"@en , "Daniel Garijo"@en , "Yolanda Gil"@en ;
        dc:title                       "The Software Description Ontology"@en ;
        terms:license                  <http://creativecommons.org/licenses/by/2.0/> ;
        vann:preferredNamespacePrefix  "sd"@en ;
        vann:preferredNamespaceUri     <https://w3id.org/okn/o/sd> ;
        owl:backwardCompatibleWith     "https://w3id.org/okn/o/sd/1.8.0"@en ;
        owl:priorVersion               <https://w3id.org/okn/o/sd/1.8.0> ;
        owl:versionIRI                 <https://w3id.org/okn/o/sd/1.9.0> ;
        owl:versionInfo                "1.9.0" .

:hasStandardVariable  a  owl:FunctionalProperty , owl:ObjectProperty ;
        rdfs:comment  "the standard name of a variable"@en ;
        rdfs:domain   [ a            owl:Class ;
                        owl:unionOf  ( :NumericalIndex :VariablePresentation )
                      ] ;
        rdfs:label    "has standard variable"@en ;
        rdfs:range    :StandardVariable .

:hasFunding  a        owl:ObjectProperty ;
        rdfs:comment  "Property that links a software project to its funding information"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has funding information"@en ;
        rdfs:range    :FundingInformation .

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

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

:NumericalIndex  a       owl:Class ;
        rdfs:comment     "A number (such as a ratio) derived from a series of observations and used as an indicator or measure (https://www.merriam-webster.com/dictionary/index)"@en ;
        rdfs:label       "Numerical Index"@en ;
        rdfs:subClassOf  :Variable .

:processorRequirements
        a                   owl:DatatypeProperty ;
        rdfs:comment        "Processor requirements of a software component"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "processor requirements"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/processorRequirements> .

:hasVersion  a        owl:ObjectProperty ;
        rdfs:comment  "Property designed to link a software component with its corresponding versions"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has software version"@en ;
        rdfs:range    :SoftwareVersion .

:hasDataTransformationSetup
        a                   owl:ObjectProperty ;
        rdfs:comment        "Property to link an input/output dataset to the specific data transformation (with URLs"@en ;
        rdfs:domain         :DatasetSpecification ;
        rdfs:label          "has data transformation setup"@en ;
        rdfs:range          :DataTransformationSetup ;
        rdfs:subPropertyOf  :hasDataTransformation .

:hasSampleVisualization
        a             owl:ObjectProperty ;
        rdfs:comment  "A typical sample visualization of the software outputs"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has sample visualization"@en ;
        rdfs:range    :Visualization .

:SoftwareVersion  a      owl:Class ;
        rdfs:comment     "A software version is a specificf type of software that represents a particular set of functionalities. New functionalities and error fixes may occur between software versions"@en ;
        rdfs:label       "Software Version"@en ;
        rdfs:subClassOf  :Software .

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

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

:hasContactPerson  a  owl:ObjectProperty ;
        rdfs:comment  "Contact person responsible for a software component"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has contact person"@en ;
        rdfs:range    [ a            owl:Class ;
                        owl:unionOf  ( :Organization :Person )
                      ] .

:description  a             owl:DatatypeProperty ;
        rdfs:comment        "A description of a resource"@en ;
        rdfs:domain         [ a            owl:Class ;
                              owl:unionOf  ( owl:Thing :NumericalIndex :Organization :Parameter :Person :SampleExecution :SampleResource :Software :SourceCode :Variable :Visualization )
                            ] ;
        rdfs:label          "description"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/description> .

:Parameter  a         owl:Class ;
        rdfs:comment  "A parameter of the model."@en ;
        rdfs:label    "Parameter"@en .

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

:readme  a                  owl:DatatypeProperty ;
        rdfs:comment        "URl to the readme file of a software component"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "readme"@en ;
        rdfs:range          xsd:anyURI ;
        rdfs:subPropertyOf  <https://codemeta.github.io/terms/readme> .

:usefulForCalculatingIndex
        a             owl:ObjectProperty ;
        rdfs:comment  "Property that indicates that a software component (or any of its outputs) can be used to calculate a particular index. The rationale for this property is that indices are usually calculated by applying post-processing steps to the outputs of a software component."@en ;
        rdfs:domain   :Software ;
        rdfs:label    "useful for calculating index" ;
        rdfs:range    :NumericalIndex .

<http://schema.org/copyrightHolder>
        a                 owl:ObjectProperty ;
        rdfs:isDefinedBy  <http://schema.org/> .

:citation  a                owl:DatatypeProperty ;
        rdfs:comment        "How to cite this software"@en ;
        rdfs:domain         :Software ;
        rdfs:label          "citation"@en ;
        rdfs:range          xsd:string ;
        rdfs:subPropertyOf  <http://schema.org/citation> .

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

<http://schema.org/screenshot>
        a                 owl:ObjectProperty ;
        rdfs:isDefinedBy  <http://schema.org/> .

:usesUnit  a          owl:FunctionalProperty , owl:ObjectProperty ;
        rdfs:comment  "Property used to link a variable presentation or time interval to the unit they are represented in"@en ;
        rdfs:domain   [ a            owl:Class ;
                        owl:unionOf  ( :Parameter :VariablePresentation )
                      ] ;
        rdfs:label    "uses unit"@en ;
        rdfs:range    :Unit .

:DatasetSpecification
        a                owl:Class ;
        rdfs:comment     "Class designed to describe a type of input or output used or produced by a model. For example, Topoflow has several inputs. One of them is a text file with precipitation values. The representation of this input is an instance of a dataset specification."@en ;
        rdfs:label       "Dataset Specification"@en ;
        rdfs:subClassOf  <http://purl.org/linked-data/cube#DataStructureDefinition> .

:hasTypicalDataSource
        a             owl:DatatypeProperty ;
        rdfs:comment  "Typical data sources that are used by a software component"@en ;
        rdfs:domain   :Software ;
        rdfs:label    "has typical data source"@en ;
        rdfs:range    xsd:anyURI .

:hasShortName  a      owl:DatatypeProperty ;
        rdfs:comment  "A short name (e.g., temperature) capturing the high-level concept of the variable"@en ;
        rdfs:domain   :VariablePresentation ;
        rdfs:label    "has short name"@en ;
        rdfs:range    xsd:string .

dc:created  a   owl:AnnotationProperty .

<https://codemeta.github.io/terms/referencePublication>
        a                 owl:DatatypeProperty ;
        rdfs:isDefinedBy  <https://codemeta.github.io/terms/> .

:value  a                   owl:DatatypeProperty ;
        rdfs:comment        "Value associated to the described entity"@en ;
        rdfs:domain         [ a            owl:Class ;
                              owl:unionOf  ( :Image :SampleResource :Visualization )
                            ] ;
        rdfs:label          "value"@en ;
        rdfs:range          [ a            rdfs:Datatype ;
                              owl:unionOf  ( xsd:anyURI xsd:boolean xsd:dateTime xsd:float xsd:integer xsd:string )
                            ] ;
        rdfs:subPropertyOf  <http://www.w3.org/ns/prov#value> .

:hasFileStructure  a  owl:FunctionalProperty , owl:ObjectProperty ;
        rdfs:comment  "Relates a dataset specification to the data structure definition"@en ;
        rdfs:domain   :DatasetSpecification ;
        rdfs:label    "has file structure"@en .
