@prefix dccs:       <https://ptb.de/dccs/> .
@prefix dcc:        <https://ptb.de/dcc/> .
@prefix sis:        <https://ptb.de/sis/> .
@prefix dx:         <https://www.ptb.de/dx/> .
@prefix rdf:        <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd:        <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs:       <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:        <http://www.w3.org/2002/07/owl#> .
@prefix skos:       <http://www.w3.org/2004/02/skos/core#> .
@prefix schema:     <http://schema.org/> .
@prefix obo:        <http://purl.obolibrary.org/obo/> .
@prefix vcard:      <http://www.w3.org/2006/vcard/ns#> .
@prefix prov:       <https://www.w3.org/ns/prov-o#> .
@prefix org:        <http://www.w3.org/ns/org#> .
@prefix orcid:      <https://orcid.org/> .
@prefix ror:        <https://ror.org/> .
@prefix vann:       <http://purl.org/vocab/vann/> .
@prefix dcterms:    <http://purl.org/dc/terms/> .
@prefix doap:       <http://usefulinc.com/ns/doap#> .
@prefix pidinst:    <https://pidinst.org/ns/> .
@prefix premis:     <http://www.loc.gov/premis/rdf/v3/> .
@prefix dcat:       <http://www.w3.org/ns/dcat#> .
@prefix foaf:       <http://xmlns.com/foaf/0.1/> .
@prefix mod:        <https://w3id.org/mod#> .
@prefix sc:         <https://si-digital-framework.org/kcdb-sc#> .
@prefix scauv:      <https://si-digital-framework.org/kcdb-sc/AUV/> .
@prefix scem:       <https://si-digital-framework.org/kcdb-sc/EM/> .
@prefix scl:        <https://si-digital-framework.org/kcdb-sc/L/> .
@prefix scm:        <https://si-digital-framework.org/kcdb-sc/M/> .
@prefix scpr:       <https://si-digital-framework.org/kcdb-sc/PR/> .
@prefix sct:        <https://si-digital-framework.org/kcdb-sc/T/> .
@prefix sctf:       <https://si-digital-framework.org/kcdb-sc/TF/> .
@prefix scri:       <https://si-digital-framework.org/kcdb-sc/RI/> .
@prefix si:         <http://si-digital-framework.org/SI#> .
@prefix quantities: <https://si-digital-framework.org/quantities/> .

#################################################################
# Ontology metadata
#################################################################

<https://ptb.de/dccs/> a owl:Ontology ;
    vann:preferredNamespaceUri    "https://ptb.de/dccs/" ;
    vann:preferredNamespacePrefix "dccs" ;
    rdfs:label                    "DCCS Ontology"@en , "DCCS-Ontologie"@de ;
    dcterms:title                 "DCCS Ontology"@en , "DCCS-Ontologie"@de ;
    dcterms:abstract              "Ontology presenting the schema for metrologically correct representation of calibration certificates." ;
    # bibo:status
    owl:versionInfo               "v0.0.2" ;
    owl:versionIRI                <https://ptb.de/dccs/v0.0.2/> ;
    # dcterms:replaces
    # dcterms:created
    # dcterms:modified
    # dcterms:issued
    # dcterms:creator
    dcterms:contributor           orcid:0000-0003-0941-5950 ;
    dcterms:publisher             ror:05r3f7h03 ;
    # schema:funder
    # schema:funding
    # bibo:doi
    # dcterms:bibliographicCitation
    dcterms:license               <https://creativecommons.org/licenses/by/4.0/> ;
    dcterms:rights                <https://creativecommons.org/licenses/by/4.0/> ;
    # schema:logo
    # vann:example
    premis:documentation          <https://ptb.gitlab.io/dcc/ontology-dcc/> ;
    doap:repository               <https://gitlab1.ptb.de/d-ptb/dcc/ontology-dcc> ;
    doap:bug-database             <https://gitlab1.ptb.de/d-ptb/dcc/ontology-dcc/-/issues> ;
    # doap:audience
    dcterms:language              <http://id.loc.gov/vocabulary/iso639-2/eng> , <http://id.loc.gov/vocabulary/iso639-2/deu> ;
    dcat:distribution             <https://ptb.de/dccs/v0.0.2/> ;
    # dcterms:subject
    # dcterms:source
    # voaf:extends
    # dcterms:references
    rdfs:comment """"""@en .

orcid:0000-0003-0941-5950 a foaf:Person ;
                          foaf:name "Moritz Jordan" ;
                          schema:affiliation ror:05r3f7h03 .

ror:05r3f7h03 a foaf:Organization ;
              foaf:name "Physikalisch-Technische Bundesanstalt (PTB)" .

<https://ptb.de/dccs/v0.0.2/> a dcat:Distribution;
                              mod:hasSyntax <https://www.w3.org/ns/formats/Turtle> .


#################################################################
# Prov-o classes and properties
#################################################################

###  https://www.w3.org/ns/prov-o#Activity
prov:Activity a owl:Class .

###  https://www.w3.org/ns/prov-o#Agent
prov:Agent a owl:Class .

###  https://www.w3.org/ns/prov-o#Entity
prov:Entity a owl:Class .

###  https://www.w3.org/ns/prov-o#Person
prov:Person a owl:Class .

###  https://www.w3.org/ns/prov-o#Organization
prov:Organization a owl:Class .

###  https://www.w3.org/ns/prov-o#Association
prov:Association a owl:Class .

###  https://www.w3.org/ns/prov-o#Role
prov:Role a owl:Class .

###  https://www.w3.org/ns/prov-o#Usage
prov:Usage a owl:Class .

###  https://www.w3.org/ns/prov-o#Location
prov:Location a owl:Class .

###  https://www.w3.org/ns/prov-o#Generation
prov:Generation a owl:Class .

###  https://www.w3.org/ns/prov-o#wasGeneratedBy
prov:wasGeneratedBy a owl:ObjectProperty .

###  https://www.w3.org/ns/prov-o#wasInformedBy
prov:wasInformedBy a owl:ObjectProperty .

###  https://www.w3.org/ns/prov-o#agent
prov:agent a owl:ObjectProperty .

###  https://www.w3.org/ns/prov-o#hadRole
prov:hadRole a owl:ObjectProperty .

###  https://www.w3.org/ns/prov-o#entity
prov:entity a owl:ObjectProperty .

###  https://www.w3.org/ns/prov-o#qualifiedUsage
prov:qualifiedUsage a owl:ObjectProperty .

###  https://www.w3.org/ns/prov-o#qualifiedAssociation
prov:qualifiedAssociation a owl:ObjectProperty .

###  https://www.w3.org/ns/prov-o#qualifiedGeneration
prov:qualifiedGeneration a owl:ObjectProperty .

###  https://www.w3.org/ns/prov-o#startedAtTime
prov:startedAtTime a owl:DatatypeProperty .

###  https://www.w3.org/ns/prov-o#endedAtTime
prov:endedAtTime a owl:DatatypeProperty .

###  https://www.w3.org/ns/prov-o#atLocation
prov:atLocation a owl:ObjectProperty .

###  https://www.w3.org/ns/prov-o#used
prov:used a owl:ObjectProperty .

#################################################################
# FOAF classes and properties
#################################################################

foaf:Agent a owl:Class .

foaf:Person a rdfs:Class .

#################################################################
# Organizations and Persons
#################################################################

schema:address a owl:ObjectProperty ;
               rdfs:range schema:PostalAddress .

org:Organization a owl:Class .

org:OrganizationalUnit a owl:Class .

org:memberOf a owl:ObjectProperty ;
             rdfs:domain foaf:Agent ;
             rdfs:range org:Organization .

dccs:Organization a owl:Class ;
                  rdfs:subClassOf prov:Organization , schema:Organization ,
                                  org:Organization ,
                                  [ a owl:Restriction ;
                                    owl:onProperty dccs:calibrationLaboratoryCode ;
                                    owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                    owl:onDataRange xsd:string ;
                                  ] ,
                                  [ a owl:Restriction ;
                                    owl:onProperty schema:address ;
                                    owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ;
                                    owl:onClass schema:PostalAddress ;
                                  ] ;
                  skos:prefLabel "Organization"@en .

dccs:calibrationLaboratoryCode a owl:DatatypeProperty ;
                               skos:prefLabel "has Calibration Laboratory Code"@en ;
                               rdfs:domain dccs:Organization ;
                               rdfs:range xsd:string ;
                               rdfs:comment "Optional code identifying the calibration laboratory."@en .

dccs:address a owl:ObjectProperty ;
             skos:prefLabel "has Address"@en ;
             rdfs:subPropertyOf schema:address ;
             rdfs:domain dccs:Organization ;
             rdfs:range schema:PostalAddress .

dccs:OrganizationalUnit a owl:Class ;
                        rdfs:subClassOf dccs:Organization ,
                                        org:OrganizationalUnit ;
                        skos:prefLabel "Organizational Unit"@en .

dccs:Person a owl:Class ;
            rdfs:subClassOf prov:Person ;
            skos:prefLabel "Person"@en .

dccs:memberOf a owl:ObjectProperty ;
              skos:prefLabel "is a member of"@en ;
              rdfs:subPropertyOf org:memberOf ;
              rdfs:domain dccs:Person ;
              rdfs:range dccs:Organization .


#################################################################
# Calibration Process and Certificate
#################################################################

# Calibration Process (what actually happened)
dccs:CalibrationProcess a owl:Class ;
                        rdfs:subClassOf prov:Activity ;
                        skos:prefLabel "Calibration Process"@en ;
                        rdfs:comment "The calibration activity performed according to a defined procedure and producing a calibration certificate."@en .

# Digital Calibration Certificate (what is reported)
dccs:CalibrationCertificate a owl:Class ;
                            rdfs:subClassOf prov:Entity ,
                                            [ a owl:Restriction ;
                                              owl:onProperty prov:wasGeneratedBy ;
                                              owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                              owl:onClass dccs:CertificateGeneration
                                            ] ;
                            rdfs:comment "The digital artifact documenting the result of a calibration process."@en ;
                            skos:closeMatch dcc:digitalCalibrationCertificateType ;
                            rdfs:seeAlso "https://wiki.dcc.ptb.de/en/root"^^xsd:anyURI ;
                            skos:prefLabel "Digital Calibration Certificate"@en .

dccs:AdministrativeData a owl:Class ;
                        rdfs:subClassOf prov:Entity ;
                        rdfs:comment "AdministrativeData contains all essential administrative information of a calibration certificate, which describes various details of the calibration object, e. g. also details of the manufacturer, client, calibration mark etc. The information is familiar to many of you as the 'first page' of an analogue calibration certificate."@en ;
                        skos:closeMatch dcc:administrativeDataType ;
                        rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dccadministrativeData"^^xsd:anyURI ;
                        skos:prefLabel "Administrative Data"@en .

dccs:hasAdministrativeData a owl:ObjectProperty ;
                           rdfs:domain dccs:CalibrationCertificate ;
                           rdfs:range dccs:AdministrativeData ;
                           skos:prefLabel "has administrative data"@en .

dccs:CoreData a owl:Class ;
              rdfs:subClassOf prov:Entity ;
              rdfs:comment "Important metadata of the digital calibration certificate"@en ;
              skos:closeMatch dcc:coreDataType ;
              rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dcccoredata"^^xsd:anyURI ;
              skos:prefLabel "Core Data"@en .

dccs:hasCoreData a owl:ObjectProperty ;
                 rdfs:domain dccs:AdministrativeData ;
                 rdfs:range dccs:CoreData ;
                 skos:prefLabel "has core data"@en .

dccs:MeasurementResult a owl:Class ;
                       rdfs:subClassOf prov:Entity ;
                       rdfs:comment "Contains all results of the measurements, evaluations and information about the calibration."@en ;
                       skos:closeMatch dcc:measurementResultType ;
                       rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dccmeasurementResult"^^xsd:anyURI ;
                       skos:prefLabel "Measurement Result"@en .

dccs:generatedByCalibrationProcess a owl:ObjectProperty ;
                                   rdfs:subPropertyOf prov:wasGeneratedBy ;
                                   rdfs:domain dccs:MeasurementResult ;
                                   rdfs:range dccs:CalibrationProcess ;
                                   skos:prefLabel "generated measurement result"@en .

# Including the actual data associated with a calibration process in the certificate
dccs:CertificateGeneration a owl:Class ;
                           rdfs:subClassOf prov:Generation ,
                                           [ a owl:Restriction ;
                                              owl:onProperty prov:wasInformedBy ;
                                              owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                              owl:onClass dccs:CalibrationProcess
                                            ] ;
                           skos:prefLabel "Certificate Generation"@en ;
                           rdfs:comment "Activity that creates a digital calibration certificate based on calibration results."@en .

dccs:qualifiedCertificateGeneration a owl:ObjectProperty ;
                                    rdfs:subPropertyOf prov:qualifiedGeneration ;
                                    rdfs:domain dccs:CalibrationCertificate ;
                                    rdfs:range dccs:CertificateGeneration ;
                                    skos:prefLabel "qualified certificate generation"@en .

dccs:includesCalibrationObjectParticipation a owl:ObjectProperty ;
                                            rdfs:comment "associates an object (and its role) participating in a calibration process with a (digital) calibration certificate"@en ;
                                            rdfs:domain dccs:CertificateGeneration ;
                                            rdfs:range dccs:CalibrationObjectParticipation ;
                                            skos:prefLabel "includes calibration object participation"@en .

dccs:includesStakeholderParticipation a owl:ObjectProperty ;
                                      rdfs:comment "associates a stakeholder (and its role) participating in a calibration process with a (digital) calibration certificate"@en ;
                                      rdfs:domain dccs:CertificateGeneration ;
                                      rdfs:range dccs:StakeholderParticipation ;
                                      skos:prefLabel "includes stakeholder participation"@en .

dccs:includesPersonParticipation a owl:ObjectProperty ;
                                 rdfs:comment "associates a person (and its role) participation in a calibration process with a (digital) calibration certificate"@en ;
                                 rdfs:domain dccs:CertificateGeneration ;
                                 rdfs:range dccs:PersonParticipation ;
                                 skos:prefLabel "includes person participation"@en .

dccs:includesMeasurementResult a owl:ObjectProperty ;
                               rdfs:domain dccs:CertificateGeneration ;
                               rdfs:range dccs:MeasurementResult ;
                               skos:prefLabel "includes measurement result"@en ;
                               rdfs:comment "Associates a digital calibration certificate with the measurement results it reports."@en .

dccs:usedMeasuringEquipment a owl:ObjectProperty ;
                            rdfs:subPropertyOf prov:used ;
                            rdfs:comment "Links a measurement result to the measuring instrument used to generate the result."@en ;
                            rdfs:domain dccs:CalibrationProcess ;
                            rdfs:range dccs:CalibrationObjectParticipation ;
                            skos:prefLabel "was generated by measuring equipment"@en .


#################################################################
# KCDB Service Category
#################################################################

dccs:hasServiceCategory a owl:ObjectProperty ;
                        skos:prefLabel "has service category"@en ;
                        rdfs:comment """
                        Associates a CalibrationProcess with its corresponding KCDB service category.
                        Service categories are provided as SKOS concepts distributed across multiple KCDB sub-namespaces, such as:
                        scauv: <https://si-digital-framework.org/kcdb-sc/AUV/>,
                        scem:  <https://si-digital-framework.org/kcdb-sc/EM/>,
                        scl:   <https://si-digital-framework.org/kcdb-sc/L/>,
                        scm:   <https://si-digital-framework.org/kcdb-sc/M/>,
                        scpr:  <https://si-digital-framework.org/kcdb-sc/PR/>,
                        sct:   <https://si-digital-framework.org/kcdb-sc/T/>,
                        sctf:  <https://si-digital-framework.org/kcdb-sc/TF/>,
                        scri:  <https://si-digital-framework.org/kcdb-sc/RI/>.
                        Linking a service category to a calibration process allows reasoning about expected measurement results:
                        for example, the `relatedSIQuantity` of the service category can be used to verify whether the units of the result quantity values correspond to the expected SI quantity.
                        Only individuals of rdf:type `sc:ServiceCategory` can be used for this property.
                        """@en ;
                        rdfs:domain dccs:CalibrationProcess ;
                        rdfs:range sc:ServiceCategory .

dccs:expectsQuantityKind a owl:ObjectProperty ;
                         skos:prefLabel "expects quantity kind"@en ;
                         rdfs:comment "Associates a CalibrationProcess with the si:QuantityKind expected for its measurement results. This property may be inferred via a property chain from the assigned service category and its related SI quantity."@en ;
                         rdfs:domain dccs:CalibrationProcess ;
                         rdfs:range si:QuantityKind ;
                         owl:propertyChainAxiom ( dccs:hasServiceCategory
                                                  sc:relatedSIQuantity
                                                ) .

dccs:reportsServiceCategory a owl:ObjectProperty ;
                            skos:prefLabel "reports service category"@en ;
                            rdfs:comment "associates the (KCDB) service category to the calibration certificate"@en ;
                            rdfs:domain dccs:CoreData ;
                            rdfs:range sc:ServiceCategory .

#################################################################
# Properties of Core Data
#################################################################
dccs:countryCode a owl:ObjectProperty ;
                 rdfs:domain [ a owl:Class ;
                               owl:unionOf ( dccs:CoreData dccs:Statement )
                             ] ;
                 rdfs:range skos:Concept ;
                 skos:prefLabel "has country code"@en ;
                 rdfs:comment "Specifies the country where the calibration was performed or where the statement applies. Values SHOULD be taken from the ISO 3166-1 vocabulary provided by Lexvo (http://lexvo.org/id/iso3166/)."@en .

dccs:usedLanguageCode a owl:ObjectProperty ;
                      rdfs:subPropertyOf dcterms:language ;
                      rdfs:domain dccs:CoreData ;
                      rdfs:range skos:Concept ;
                      skos:prefLabel "has used language"@en ;
                      rdfs:comment "Specifies the official language(s) in which the digital calibration certificate was created. Values SHOULD be taken from the ISO 639-1 vocabulary provided by Lexvo (http://lexvo.org/id/iso639-1/)."@en .

dccs:mandatoryLanguageCode a owl:ObjectProperty ;
                           rdfs:subPropertyOf dcterms:language ;
                           rdfs:domain dccs:CoreData ;
                           rdfs:range skos:Concept ;
                           skos:prefLabel "has mandatory language"@en ;
                           rdfs:comment "Determines the official language(s) valid in case of doubt. Values SHOULD be taken from the ISO 639-1 vocabulary provided by Lexvo (http://lexvo.org/id/iso639-1/)."@en .

dccs:uniqueIdentifier a owl:DatatypeProperty ;
                      rdfs:domain dccs:CoreData ;
                      rdfs:range xsd:string ;
                      skos:prefLabel "unique identifier"@en ;
                      rdfs:comment "Globally unique identifier (GUID/UUID) that uniquely identifies the digital calibration certificate."@en .

dccs:hasPreviousReportReference a owl:ObjectProperty ;
                                skos:prefLabel "has previous report reference"@en ;
                                rdfs:comment "Links a digital calibration certificate to a previous calibration certificate, either by referencing the certificate instance itself or by providing its unique identifier and states the type of revision."@en ;
                                rdfs:domain dccs:CoreData ;
                                rdfs:range dccs:PreviousReportReference .


#################################################################
# Reference to previous report
#################################################################
dccs:PreviousReportReference a owl:Class ;
                             skos:prefLabel "Previous Report Reference"@en ;
                             skos:closeMatch dcc:hashType ;
                             rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dcchashType"^^xsd:anyURI ;
                             rdfs:comment "Represents a link to a previous (digital) calibration certificate, including associated metadata such as the revision type. The link shall refer either to the unique identifier of the calibration certificate or to the calibration certificate instance itself."@en .

dccs:refersToReport a owl:ObjectProperty ;
                    skos:prefLabel "refers to calibration certificate"@en ;
                    rdfs:comment "Links to another digital calibration certificate."@en ;
                    rdfs:domain dccs:PreviousReportReference ;
                    rdfs:range dccs:CalibrationCertificate .

dccs:hasRevisionType a owl:ObjectProperty ;
                     skos:prefLabel "has type of revision"@en ;
                     rdfs:comment "Specifies the type of revision"@en ;
                     rdfs:domain dccs:PreviousReportReference ;
                     rdfs:range dccs:RevisionType .

dccs:refersToUniqueIdentifier a owl:DatatypeProperty ;
                              rdfs:domain dccs:PreviousReportReference ;
                              rdfs:range xsd:string ;
                              skos:prefLabel "refers to unique identifier"@en ;
                              rdfs:comment "Links to another digital calibration certificate using its unique identifier (Globally unique identifier (GUID/UUID))"@en .

dccs:RevisionType a owl:Class ;
                  skos:prefLabel "Revision Type"@en ;
                  skos:closeMatch dx:revisionType ;
                  rdfs:comment "Possible types of revision: amended, substituted, other."@en ;
                  owl:oneOf ( dccs:Amended
                              dccs:Substituted
                              dccs:OtherRevisionType
                            ) .

# Individuals of RevisionType
dccs:Amended a dccs:RevisionType ;
             skos:prefLabel "Amended"@en ;
             rdfs:comment "Revision of type 'amended'."@en .

dccs:Substituted a dccs:RevisionType ;
                 skos:prefLabel "Substituted"@en ;
                 rdfs:comment "Revision of type 'substituted'."@en .

dccs:OtherRevisionType a dccs:RevisionType ;
                       skos:prefLabel "Other Revision Type"@en ;
                       rdfs:comment "Revision of type 'other'."@en .

#################################################################
# Performance date associated with the calibration process
#################################################################
dccs:PerformanceDate a owl:Class ;
                     skos:prefLabel "Performance Date"@en ;
                     rdfs:comment "Temporal information describing the execution period of a calibration process."@en ;
                     rdfs:subClassOf prov:Entity .

dccs:beginPerformanceDate a owl:DatatypeProperty ;
                          rdfs:subPropertyOf prov:startedAtTime ;
                          rdfs:domain dccs:PerformanceDate ;
                          rdfs:range xsd:date ;
                          skos:prefLabel "begin performance date"@en ;
                          rdfs:comment "Date at the start of the performance of the laboratory activity. In DIN EN ISO/IEC 17025:2018-03 [1] it is specified that the date or period of calibration is an essential part of a calibration certificate."@en .

dccs:endPerformanceDate a owl:DatatypeProperty ;
                        rdfs:subPropertyOf prov:endedAtTime ;
                        rdfs:domain dccs:PerformanceDate ;
                        rdfs:range xsd:date ;
                        skos:prefLabel "end performance date"@en ;
                        rdfs:comment "Date at the end of the performance of the laboratory activity. In DIN EN ISO/IEC 17025:2018-03 [1] it is specified that the date or period of calibration is an essential part of a calibration certificate."@en .

dccs:wasPerformedOn a owl:ObjectProperty ;
                    rdfs:domain dccs:CalibrationProcess ;
                    rdfs:range dccs:PerformanceDate ;
                    skos:prefLabel "was performed on"@en .

dccs:reportsPerformanceDate a owl:ObjectProperty ;
                            rdfs:domain dccs:CoreData ;
                            rdfs:range dccs:PerformanceDate ;
                            skos:prefLabel "reports performance date"@en .


#################################################################
# Statements about the calibration process
#################################################################
dccs:Statement a owl:Class ;
               rdfs:comment "Statement which applies to the entire calibration process"@en ;
               skos:closeMatch dcc:statementMetaDataType ;
               rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dccstatement"^^xsd:anyURI ;
               skos:prefLabel "Statement"@en .

dccs:associatedStatement a owl:ObjectProperty ;
                  rdfs:domain dccs:CalibrationProcess ;
                  rdfs:range dccs:Statement ;
                  skos:prefLabel "associated statement"@en .

dccs:reportsStatement a owl:ObjectProperty ;
                      rdfs:domain dccs:CalibrationCertificate ;
                      rdfs:range dccs:Statement ;
                      skos:prefLabel "reports statement"@en .


#################################################################
# Identification issuance
#################################################################
dccs:IdentificationIssuance a owl:Class ;
                            rdfs:subClassOf dccs:AgentParticipation ;
                            skos:prefLabel "Identification Issuance"@en ;
                            rdfs:comment "Attribution of responsibility for issuing an identifier."@en .

dccs:IdentifierIssuerRole a owl:Class ;
                          rdfs:subClassOf dccs:Role ;
                          skos:prefLabel "Identifier Issuer Role"@en .

dccs:ManufacturerIssuerRole a owl:Class ;
                            rdfs:subClassOf dccs:IdentifierIssuerRole .

dccs:CalibrationLaboratoryIssuerRole a owl:Class ;
                                     rdfs:subClassOf dccs:IdentifierIssuerRole .

dccs:OwnerIssuerRole a owl:Class ;
                     rdfs:subClassOf dccs:IdentifierIssuerRole .

dccs:CustomerIssuerRole a owl:Class ;
                        rdfs:subClassOf dccs:IdentifierIssuerRole .

dccs:OtherIssuerRole a owl:Class ;
                     rdfs:subClassOf dccs:IdentifierIssuerRole .

dccs:identificationIssuer a owl:ObjectProperty ;
                          rdfs:subPropertyOf dccs:participant ;
                          skos:prefLabel "has issuer"@en ;
                          rdfs:domain dccs:IdentificationIssuance ;
                          rdfs:range prov:Agent .

dccs:identificationIssuerRole a owl:ObjectProperty ;
                              rdfs:subPropertyOf dccs:role ;
                              skos:prefLabel "issuer role"@en ;
                              rdfs:domain dccs:IdentificationIssuance ;
                              rdfs:range dccs:IdentifierIssuerRole .

dccs:Identification a owl:Class ;
                    skos:prefLabel "Identification"@en ;
                    skos:closeMatch dcc:identificationType ;
                    rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dccidentificationType"^^xsd:anyURI ;
                    rdfs:comment "An identifier such as an order number, reference number, serial number, etc. assigned to an entity (calibration object, calibration certificate), together with its provenance."@en ;
                    rdfs:subClassOf prov:Entity .

dccs:identifierValue a owl:DatatypeProperty ;
                     rdfs:domain dccs:Identification ;
                     rdfs:range xsd:string ;
                     skos:prefLabel "identifier value"@en .

dccs:identifierType a owl:ObjectProperty ;
                    rdfs:domain dccs:Identification ;
                    rdfs:range skos:Concept ;
                    skos:prefLabel "identifier type"@en ;
                    rdfs:comment "Specifies the type of the identifier such as order number, reference number, serial number, using a controlled vocabulary."@en .

dccs:hasIdentificationIssuance a owl:ObjectProperty ;
                               rdfs:domain dccs:Identification ;
                               rdfs:range dccs:IdentificationIssuance ;
                               skos:prefLabel "has identification issuance"@en .

dccs:hasIdentification a owl:ObjectProperty ;
                       rdfs:domain [ a owl:Class ;
                                     owl:unionOf ( dccs:CoreData dccs:CalibrationObject )
                                   ] ;
                       rdfs:range dccs:Identification ;
                       skos:prefLabel "has identification"@en .

# Identifier type scheme (Controlled vocabulary for the identifier type)
dccs:IdentifierTypeScheme a skos:ConceptScheme ;
                          skos:prefLabel "Identifier type scheme"@en ;
                          rdfs:comment "Controlled vocabulary for identifier types used in digital calibration certificates."@en .

dccs:orderNumber a skos:Concept ;
                 skos:prefLabel "Order number"@en ;
                 skos:inScheme dccs:IdentifierTypeScheme .

dccs:serialNumber a skos:Concept ;
                  skos:prefLabel "Serial number"@en ;
                  skos:inScheme dccs:IdentifierTypeScheme .

dccs:referenceNumber a skos:Concept ;
                     skos:prefLabel "Reference number"@en ;
                     skos:inScheme dccs:IdentifierTypeScheme .

dccs:customerReference a skos:Concept ;
                       skos:prefLabel "Customer reference"@en ;
                       skos:inScheme dccs:IdentifierTypeScheme .


#################################################################
# Abstract agent participation class
#################################################################
dccs:AgentParticipation a owl:Class ;
                        skos:prefLabel "Agent Participation"@en ;
                        rdfs:comment "Generic association of an agent with a role in a specific context."@en ;
                        rdfs:subClassOf prov:Association .

dccs:participant a owl:ObjectProperty ;
                 rdfs:subPropertyOf prov:agent ;
                 skos:prefLabel "participant"@en ;
                 rdfs:domain dccs:AgentParticipation ;
                 rdfs:range prov:Agent .

dccs:role a owl:ObjectProperty ;
          rdfs:subPropertyOf prov:hadRole ;
          skos:prefLabel "role"@en ;
          rdfs:domain dccs:AgentParticipation ;
          rdfs:range dccs:Role .

dccs:Role a owl:Class ;
          rdfs:subClassOf prov:Role ;
          skos:prefLabel "Role"@en ;
          rdfs:comment "Role of an agent participating in a calibration process"@en .


#################################################################
# Stakeholder participation
#################################################################

dccs:StakeholderParticipation a owl:Class ;
                              rdfs:subClassOf dccs:AgentParticipation ;
                              skos:prefLabel "Stakeholder Participation"@en .

dccs:StakeholderRole a owl:Class ;
                     rdfs:subClassOf dccs:Role ;
                     skos:prefLabel "Stakeholder Role"@en .

dccs:CalibrationLaboratoryRole a owl:Class ;
                               rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dcccalibrationLaboratory"^^xsd:anyURI ;
                               rdfs:subClassOf dccs:StakeholderRole ;
                               skos:prefLabel "Calibration Laboratory Role"@en .

dccs:CustomerRole a owl:Class ;
                  rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dcccustomer"^^xsd:anyURI ;
                  rdfs:subClassOf dccs:StakeholderRole ;
                  skos:prefLabel "Customer Role"@en .

dccs:ManufacturerRole a owl:Class ;
                      rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dcccontactNotStrictType"^^xsd:anyURI ;
                      rdfs:subClassOf dccs:StakeholderRole ;
                      skos:prefLabel "Manufacturer Role"@en .

dccs:stakeholderParticipant a owl:ObjectProperty ;
                            rdfs:subPropertyOf dccs:participant ;
                            skos:prefLabel "has participating stakeholder"@en ;
                            rdfs:domain dccs:StakeholderParticipation ;
                            rdfs:range prov:Agent .

dccs:stakeholderRole a owl:ObjectProperty ;
                     rdfs:subPropertyOf dccs:role ;
                     skos:prefLabel "role of participating stakeholder"@en ;
                     rdfs:domain dccs:StakeholderParticipation ;
                     rdfs:range dccs:StakeholderRole .

dccs:hasStakeholderParticipation a owl:ObjectProperty ;
                                 rdfs:subPropertyOf prov:qualifiedAssociation ;
                                 skos:prefLabel "has stakeholder participation"@en ;
                                 rdfs:domain dccs:CalibrationProcess ;
                                 rdfs:range dccs:StakeholderParticipation .


#################################################################
# Calibration object and instrument
#################################################################

dccs:CalibrationObject a owl:Class ;
                       rdfs:subClassOf prov:Entity ;
                       skos:prefLabel "Calibration Object"@en ;
                       rdfs:comment "Object that participates in a calibration process, which may or may not be an instrument."@en .

dccs:Instrument a owl:Class ;
                rdfs:subClassOf dccs:CalibrationObject ;
                skos:prefLabel "Instrument"@en ;
                rdfs:comment "A measuring instrument that may be used in a calibration either as the object being calibrated or as equipment used to perform the calibration."@en .



#################################################################
# Calibration object participation
#################################################################

dccs:CalibrationObjectParticipation a owl:Class ;
                                    rdfs:subClassOf prov:Usage ;
                                    skos:prefLabel "Calibration Object Participation"@en .

dccs:CalibrationObjectRole a owl:Class ;
                           rdfs:subClassOf prov:Role ;
                           rdfs:comment "Role of an object participating in a calibration"@en ;
                           skos:prefLabel "Calibration Object Role"@en .

dccs:CalibrationItemRole a owl:Class ;
                         skos:prefLabel "Calibration Item Role"@en ;
                         rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dccitem"^^xsd:anyURI ;
                         rdfs:comment "Role of the item being calibrated"@en ;
                         rdfs:subClassOf dccs:CalibrationObjectRole .

dccs:MeasuringEquipmentRole a owl:Class ;
                            skos:prefLabel "Measuring Equipment Role"@en ;
                            rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dccmeasuringEquipmentType"^^xsd:anyURI ;
                            rdfs:comment "Role of the measuring equipment used for calibration"@en ;
                            rdfs:subClassOf dccs:CalibrationObjectRole .

dccs:calibrationObjectRole a owl:ObjectProperty ;
                           rdfs:subPropertyOf prov:hadRole ;
                           skos:prefLabel "role of the calibration object" ;
                           rdfs:domain dccs:CalibrationObjectParticipation ;
                           rdfs:range dccs:CalibrationObjectRole .

dccs:calibrationObjectParticipant a owl:ObjectProperty ;
                                  rdfs:subPropertyOf prov:entity ;
                                  skos:prefLabel "participating calibration object"@en ;
                                  rdfs:domain dccs:CalibrationObjectParticipation ;
                                  rdfs:range dccs:CalibrationObject .

dccs:hasCalibrationObjectParticipation a owl:ObjectProperty ;
                                       rdfs:subPropertyOf prov:qualifiedUsage ;
                                       skos:prefLabel "has calibration object participation"@en ;
                                       rdfs:domain dccs:CalibrationProcess ;
                                       rdfs:range dccs:CalibrationObjectParticipation .

#################################################################
# Person participation
#################################################################

dccs:PersonParticipation a owl:Class ;
                         rdfs:subClassOf dccs:AgentParticipation ;
                         skos:closeMatch dcc:respPersonType ;
                         rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dccrespPerson"^^xsd:anyURI ;
                         skos:prefLabel "Person Participation"@en ;
                         rdfs:comment "A person participating in a calibration process and its role"@en .

dccs:PersonRole a owl:Class ;
                rdfs:subClassOf dccs:Role ;
                skos:prefLabel "Person Role"@en ;
                rdfs:comment "Role of the person involved in a calibration certificate"@en .

dccs:MainSignerRole a owl:Class ;
                    rdfs:subClassOf dccs:PersonRole ;
                    skos:prefLabel "Main Signer Role"@en ;
                    rdfs:comment "Role of the person who is the main signer of a (digital) calibration certificate"@en .

dccs:LegalResponsibilityRole a owl:Class ;
                              rdfs:subClassOf dccs:PersonRole ;
                              skos:prefLabel "Legal Responsibility Role"@en ;
                              rdfs:comment "Role of the person who is legally responsible for the calibration process"@en .

dccs:personRole a owl:ObjectProperty ;
                rdfs:subPropertyOf dccs:role ;
                skos:prefLabel "role of the person"@en ;
                rdfs:domain dccs:PersonParticipation ;
                rdfs:range dccs:PersonRole .

dccs:personParticipant a owl:ObjectProperty ;
                       rdfs:subPropertyOf dccs:participant ;
                       skos:prefLabel "participating person"@en ;
                       rdfs:domain dccs:PersonParticipation ;
                       rdfs:range dccs:Person .

dccs:hasPersonParticipation a owl:ObjectProperty ;
                            skos:prefLabel "has person participation"@en ;
                            rdfs:comment "A person participation in a calibration process and its role"@en ;
                            rdfs:domain dccs:CalibrationProcess ;
                            rdfs:range dccs:PersonParticipation .

#################################################################
# Performance location
#################################################################

dccs:PerformanceLocation a owl:Class ;
                         rdfs:subClassOf prov:Location ;
                         skos:closeMatch dcc:performanceLocationType ;
                         rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dccperformanceLocationType"^^xsd:anyURI ;
                         skos:prefLabel "Performance Location"@en ;
                         rdfs:comment "Location at which the calibration was performed."@en .

dccs:wasPerformedAt a owl:ObjectProperty ;
                    rdfs:subPropertyOf prov:atLocation ;
                    rdfs:domain dccs:CalibrationProcess ;
                    rdfs:range dccs:PerformanceLocation ;
                    skos:prefLabel "was performed at"@en .

dccs:reportsPerformanceLocation a owl:ObjectProperty ;
                                rdfs:domain dccs:CoreData ;
                                rdfs:range dccs:PerformanceLocation ;
                                skos:prefLabel "reports performance location"@en .

dccs:locatedAtOrganization a owl:ObjectProperty ;
                           rdfs:domain dccs:PerformanceLocation ;
                           rdfs:range dccs:Organization ;
                           skos:prefLabel "located at"@en .

# Individuals of location type
dccs:CalibrationLaboratorySite rdfs:subClassOf dccs:PerformanceLocation ;
                               skos:prefLabel "Calibration Laboratory Site"@en .

dccs:CustomerSite rdfs:subClassOf dccs:PerformanceLocation ;
                  skos:prefLabel "Customer Site"@en .

dccs:CalibrationLaboratoryBranchSite rdfs:subClassOf dccs:PerformanceLocation ;
                                     skos:prefLabel "Branch Site of the Calibration Laboratory"@en .

dccs:CustomerBranchSite rdfs:subClassOf dccs:PerformanceLocation ;
                        skos:prefLabel "Branch Site of the Customer"@en .

dccs:OtherSite rdfs:subClassOf dccs:PerformanceLocation ;
               skos:prefLabel "Other (non-specified) Site"@en .

#################################################################
# Measurement results, influence conditions,
#################################################################



#################################################
# Influence Conditions
#################################################

dccs:InfluenceCondition a owl:Class ;
                        rdfs:subClassOf prov:Entity ;
                        skos:closeMatch dcc:conditionType ;
                        rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dccinfluenceConditionType"^^xsd:anyURI ;
                        skos:prefLabel "Influence Condition"@en ;
                        rdfs:comment "A condition that may influence the measurement result, such as environmental or operational parameters."@en .

dccs:observedInfluenceCondition a owl:ObjectProperty ;
                                rdfs:subPropertyOf prov:used ;
                                rdfs:domain dccs:CalibrationProcess ;
                                rdfs:range dccs:InfluenceCondition ;
                                skos:prefLabel "observed influence condition"@en ;
                                rdfs:comment "Associates a calibration process with influence conditions affecting the calibration."@en .

dccs:InfluenceConditionStatus a owl:Class ;
    skos:prefLabel "Influence Condition Status"@en ;
    rdfs:comment "Status describing the temporal or procedural context of an influence condition."@en .

dccs:hasInfluenceConditionStatus a owl:ObjectProperty ;
    skos:prefLabel "has influence condition status"@en ;
    rdfs:domain dccs:InfluenceCondition ;
    rdfs:range dccs:InfluenceConditionStatus .

# Individuals for influence condition status
dccs:BeforeAdjustment a dccs:InfluenceConditionStatus ;
    skos:prefLabel "Before Adjustment"@en .

dccs:AfterAdjustment a dccs:InfluenceConditionStatus ;
    skos:prefLabel "After Adjustment"@en .

dccs:BeforeRepair a dccs:InfluenceConditionStatus ;
    skos:prefLabel "Before Repair"@en .

dccs:AfterRepair a dccs:InfluenceConditionStatus ;
    skos:prefLabel "After Repair"@en .

#################################################
# Measurement Methods
#################################################

dccs:MeasurementMethod a owl:Class ;
                       rdfs:subClassOf prov:Entity ;
                       skos:prefLabel "Measurement Method"@en ;
                       skos:closeMatch dcc:usedMethodType ;
                       rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dccusedMethodType"^^xsd:anyURI ;
                       rdfs:comment "A method or procedure applied to obtain a measurement result."@en .

dccs:usedMeasurementMethod a owl:ObjectProperty ;
                           rdfs:subPropertyOf prov:used ;
                           rdfs:domain dccs:MeasurementResult ;
                           rdfs:range dccs:MeasurementMethod ;
                           skos:prefLabel "used measurement method"@en ;
                           rdfs:comment "Indicates the measurement method used to produce the measurement result."@en .

#################################################
# Measurement Metadata
#################################################

dccs:MeasurementMetadata a owl:Class ;
                         rdfs:subClassOf prov:Entity ;
                         skos:closeMatch dcc:statementMetadataType ;
                         rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dccstatement"^^xsd:anyURI ;
                         skos:prefLabel "Measurement Metadata"@en ;
                         rdfs:comment "Additional metadata describing a measurement result, such as traceability statements, or quality indicators."@en .

dccs:hasMeasurementMetadata a owl:ObjectProperty ;
                            rdfs:domain dccs:MeasurementResult ;
                            rdfs:range dccs:MeasurementMetadata ;
                            skos:prefLabel "has measurement metadata"@en ;
                            rdfs:comment "Associates a measurement result with additional measurement-specific metadata."@en .

#################################################
# Reported Measurement Result (certificate view)
#################################################

dccs:ReportedMeasurementResult a owl:Class ;
                               skos:closeMatch dcc:measurementResult ;
                               rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dccmeasurementResult"^^xsd:anyURI ;
                               skos:prefLabel "Reported Measurement Result"@en ;
                               rdfs:comment "The subset or projection of a measurement result that is reported in a digital calibration certificate."@en .

dccs:isReportOf a owl:ObjectProperty ;
                rdfs:domain dccs:ReportedMeasurementResult ;
                rdfs:range dccs:MeasurementResult ;
                skos:prefLabel "is report of"@en ;
                rdfs:comment "Links a reported measurement result to the complete underlying measurement result."@en .


#################################################
# Formulas
#################################################

dccs:Formula a owl:Class ;
    skos:prefLabel "formula"@en ;
    rdfs:comment "A mathematical formula that defines a relationship between quantity values. The formula may reference input quantities and parameters and produces one or more output quantities. The mathematical expression is represented using OpenMath/NumerateWeb."@en .

dccs:FormulaVariable a owl:Class ;
    skos:prefLabel "formula variable"@en ;
    rdfs:comment "A symbolic variable used in a mathematical formula. A formula variable may represent an input quantity, a parameter, or an output quantity."@en .

dccs:InputQuantity a owl:Class ;
    rdfs:subClassOf dccs:FormulaVariable ;
    skos:prefLabel "input quantity"@en ;
    rdfs:comment "A formula variable representing an input quantity value used by the formula."@en .

dccs:Parameter a owl:Class ;
    rdfs:subClassOf dccs:FormulaVariable ;
    skos:prefLabel "parameter"@en ;
    rdfs:comment "A constant or calibration coefficient used in the formula."@en .

dccs:OutputQuantity a owl:Class ;
    rdfs:subClassOf dccs:FormulaVariable ;
    skos:prefLabel "output quantity"@en ;
    rdfs:comment "A formula variable representing the quantity value produced by the formula."@en .

dccs:hasVariable a owl:ObjectProperty ;
    skos:prefLabel "has variable"@en ;
    rdfs:domain dccs:Formula ;
    rdfs:range dccs:FormulaVariable ;
    rdfs:comment "Associates a formula with one of its symbolic variables."@en .

dccs:hasInputQuantity a owl:ObjectProperty ;
    rdfs:subPropertyOf dccs:hasVariable ;
    skos:prefLabel "has input quantity"@en ;
    rdfs:domain dccs:Formula ;
    rdfs:range dccs:InputQuantity ;
    rdfs:comment "Associates a formula with an input quantity variable."@en .

dccs:hasParameter a owl:ObjectProperty ;
    rdfs:subPropertyOf dccs:hasVariable ;
    skos:prefLabel "has parameter"@en ;
    rdfs:domain dccs:Formula ;
    rdfs:range dccs:Parameter ;
    rdfs:comment "Associates a formula with a parameter variable such as a calibration coefficient."@en .

dccs:hasOutputQuantity a owl:ObjectProperty ;
    rdfs:subPropertyOf dccs:hasVariable ;
    skos:prefLabel "has output quantity"@en ;
    rdfs:domain dccs:Formula ;
    rdfs:range dccs:OutputQuantity ;
    rdfs:comment "Associates a formula with the quantity variable representing its result."@en .

dccs:representsQuantityValue a owl:ObjectProperty ;
    skos:prefLabel "represents quantity value"@en ;
    rdfs:domain dccs:FormulaVariable ;
    rdfs:range sis:QuantityValue ;
    rdfs:comment "Links a symbolic formula variable to the SIS quantity value that provides or receives its numerical value."@en .

#################################################
# Data Container for Tables of quantity values, formulas, single quantity values, lists
#################################################

dccs:DataContainer a owl:Class ;
                   rdfs:subClassOf prov:Entity ;
                   rdfs:seeAlso "https://wiki.dcc.ptb.de/en/dccdataType"^^xsd:anyURI ;
                   rdfs:comment "Structured representation of measurement data such as tables of quantity values, formulas, single quantity values and lists of quantity values"@en ;
                   skos:prefLabel "Data Container"@en .

dccs:hasResultData a owl:ObjectProperty ;
                   rdfs:domain dccs:MeasurementResult ;
                   rdfs:range dccs:DataContainer ;
                   skos:prefLabel "has result data"@en ;
                   rdfs:comment "Links a measurement result to its structured data representation"@en .

dccs:hasQuantityValueTable a owl:ObjectProperty ;
                           rdfs:domain dccs:DataContainer ;
                           rdfs:range dccs:QuantityValueTable ;
                           skos:prefLabel "has table of quantity values"@en .

dccs:QuantityValueTable a owl:Class ;
                        rdfs:subClassOf prov:Entity ;
                        rdfs:seeAlso "https://gitlab1.ptb.de/digitaldynamicmeasurement/dcc-and-dsi/dccQuantities/-/blob/feature/tableAttributes/doc/tabellen/tables-en.md"^^xsd:anyURI ;
                        rdfs:comment "Table of SIS quantity values representing a measurement result table. Columns are expressed as sis:RealList or sis:ComplexList, with individual MeasurementPoints linking each measured value (sis:RealInList) to the index value(s) (sis:RealInList) it depends on."@en ;
                        skos:prefLabel "Quantity Value Table"@en .

dccs:tableDimension a owl:DatatypeProperty ;
                    skos:prefLabel "has table dimension"@en ;
                    rdfs:comment "Specifies the number of index columns of the table."@en ;
                    rdfs:domain dccs:QuantityValueTable ;
                    rdfs:range xsd:nonNegativeInteger .

dccs:TableColumn a owl:Class ;
                 skos:prefLabel "Table Column"@en ;
                 rdfs:comment "A column in a measurement table, which can be either a sis:RealList or a sis:ComplexList."@en .

dccs:hasColumnValueList a owl:ObjectProperty ;
                        rdfs:domain dccs:TableColumn ;
                        rdfs:range [ owl:unionOf (sis:RealList sis:ComplexList) ] ;
                        skos:prefLabel "has column values"@en .

dccs:hasTableColumn a owl:ObjectProperty ;
                    skos:prefLabel "has table column"@en ;
                    rdfs:comment "Assigns a column to its table. The column can be either a RealList or ComplexList."@en ;
                    rdfs:domain dccs:QuantityValueTable ;
                    rdfs:range dccs:TableColumn .

dccs:columnIndex a owl:DatatypeProperty ;
                 skos:prefLabel "has column index"@en ;
                 rdfs:comment "Specifies the position of the column in the table (starting from 0)"@en ;
                 rdfs:domain dccs:TableColumn ;
                 rdfs:range xsd:nonNegativeInteger .

dccs:IndexColumn a owl:Class ;
                 rdfs:subClassOf dccs:TableColumn ;
                 skos:prefLabel "Index Column"@en ;
                 rdfs:comment "Column which holds the index values of the table (such as reference value or nominal value)."@en .

dccs:DataColumn a owl:Class ;
                rdfs:subClassOf dccs:TableColumn ;
                skos:prefLabel "Data Column"@en ;
                rdfs:comment "Column which holds the data (measured) values of the table"@en .

dccs:MeasurementPoint rdf:type owl:Class ;
                      skos:prefLabel "Measurement Point"@en ;
                      rdfs:comment "A semantic aggregation of index values and corresponding data values representing one row or n-dimensional point in the measurement result table."@en .

dccs:hasMeasurementPoint rdf:type owl:ObjectProperty ;
                         rdfs:domain dccs:QuantityValueTable ;
                         rdfs:range dccs:MeasurementPoint ;
                         skos:prefLabel "has measurement point"@en .

dccs:hasIndexValue rdf:type owl:ObjectProperty ;
                   rdfs:domain dccs:MeasurementPoint ;
                   rdfs:range sis:RealInList ;
                   skos:prefLabel "has index value"@en ;
                   rdfs:comment "Associates a measurement point with a value from an index column."@en .

dccs:hasDataValue rdf:type owl:ObjectProperty ;
                  rdfs:domain dccs:MeasurementPoint ;
                  rdfs:range sis:RealInList ;
                  skos:prefLabel "has data value"@en ;
                  rdfs:comment "Associates a measurement point with a dependent measurement value from a data column."@en .
