@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix gs1: <https://ref.gs1.org/voc/> .
@prefix oec: <https://ref.openepcis.io/extensions/common/core/> .
@prefix eucpr: <https://ref.openepcis.io/extensions/eu/cpr/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix schema: <https://schema.org/> .

# DPP Keystone (dpp-keystone.org), a peer DPP profile this module aligns with.
@prefix dppk: <https://dpp-keystone.org/spec/v2/terms#> .

<https://ref.openepcis.io/extensions/eu/cpr/>
    a owl:Ontology ;
    dcterms:title "OpenEPCIS CPR Vocabulary"@en ;
    dcterms:description """Vocabulary for the revised EU Construction Products Regulation
(Regulation 2024/3110, in force 2025-01-07; DPP via delegated acts from 2026
onward, phased per product family).

This module is intentionally thin per the project's four-layer delegation
pattern. The construction-specific concepts live here; cross-cutting concerns
(recycled content, carbon footprint, hazardous substances, recyclability,
EPR, end-of-life, due diligence) reuse the lifted `oec:` vocabulary plus
`untp:` and `gs1:`."""@en ;
    dcterms:creator "OpenEPCIS" ;
    dcterms:license <https://www.apache.org/licenses/LICENSE-2.0> ;
    dcterms:created "2026-05-01"^^xsd:date ;
    dcterms:modified "2026-06-23"^^xsd:date ;
    owl:versionInfo "0.9.7" ;
    owl:versionIRI <https://ref.openepcis.io/extensions/eu/cpr/0.9.7> ;
    vann:preferredNamespacePrefix "eucpr" ;
    vann:preferredNamespaceUri "https://ref.openepcis.io/extensions/eu/cpr/" ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    owl:imports <https://ref.gs1.org/voc/> ;
    owl:imports <https://ref.openepcis.io/extensions/common/core/> .

# =============================================================================
# Main class
# =============================================================================

eucpr:ConstructionProduct
    a owl:Class ;
    rdfs:subClassOf gs1:Product ;
    rdfs:label "Construction Product"@en ;
    rdfs:comment """A construction product subject to EU Regulation 2024/3110 (revised
CPR). Carrier for the regulation's DPP and Declaration-of-Performance data.
Use eucpr:declarationOfPerformanceUrl, eucpr:essentialCharacteristic, and
eucpr:reactionToFireClass for the substantive declarations; reuse oec: terms
for recycled content, carbon footprint, hazardous substances, etc."""@en ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    skos:note "EU Construction Products Regulation (EU) 2024/3110 attribute. No GS1, SEMICeu, or schema.org equivalent."@en ;
    rdfs:seeAlso dppk:ConstructionProduct ;
    skos:exactMatch dppk:ConstructionProduct ;
    skos:broadMatch schema:IndividualProduct ;
    skos:narrowMatch gs1:Product ;
    skos:narrowMatch schema:Product .

# =============================================================================
# Reaction-to-fire class (EN 13501-1)
# =============================================================================

eucpr:ReactionToFireClass
    a owl:Class ;
    rdfs:label "Reaction-to-fire Class"@en ;
    rdfs:comment """Reaction-to-fire performance per EN 13501-1, ranging from A1 (highest,
non-combustible, no contribution to fire) through F (no performance
determined). CPR requires this declaration for products where reaction to
fire is an essential characteristic per Annex III."""@en ;
    owl:oneOf (
        eucpr:FireClassA1
        eucpr:FireClassA2
        eucpr:FireClassB
        eucpr:FireClassC
        eucpr:FireClassD
        eucpr:FireClassE
        eucpr:FireClassF
    ) ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://www.cencenelec.eu/standards/EN/Pages/EN-13501-1.aspx> ;
    skos:note "Reaction-to-fire classification per EN 13501-1, as required by the EU Construction Products Regulation (EU) 2024/3110."@en .

eucpr:FireClassA1 a eucpr:ReactionToFireClass ; rdfs:label "Class A1"@en ;
    rdfs:comment "No contribution to fire; non-combustible."@en ; skos:notation "A1" .
eucpr:FireClassA2 a eucpr:ReactionToFireClass ; rdfs:label "Class A2"@en ;
    rdfs:comment "Very limited contribution to fire."@en ; skos:notation "A2" .
eucpr:FireClassB  a eucpr:ReactionToFireClass ; rdfs:label "Class B"@en ;
    rdfs:comment "Limited contribution to fire."@en ; skos:notation "B" .
eucpr:FireClassC  a eucpr:ReactionToFireClass ; rdfs:label "Class C"@en ;
    rdfs:comment "Major contribution to fire (limited)."@en ; skos:notation "C" .
eucpr:FireClassD  a eucpr:ReactionToFireClass ; rdfs:label "Class D"@en ;
    rdfs:comment "Major contribution to fire (acceptable)."@en ; skos:notation "D" .
eucpr:FireClassE  a eucpr:ReactionToFireClass ; rdfs:label "Class E"@en ;
    rdfs:comment "Acceptable reaction to fire."@en ; skos:notation "E" .
eucpr:FireClassF  a eucpr:ReactionToFireClass ; rdfs:label "Class F"@en ;
    rdfs:comment "No performance determined."@en ; skos:notation "F" .

eucpr:reactionToFireClass
    a owl:ObjectProperty ;
    rdfs:label "Reaction-to-fire Class"@en ;
    rdfs:comment "EN 13501-1 reaction-to-fire classification of the construction product."@en ;
    rdfs:domain eucpr:ConstructionProduct ;
    rdfs:range eucpr:ReactionToFireClass ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://www.cencenelec.eu/standards/EN/Pages/EN-13501-1.aspx> ;
    skos:note "Reaction-to-fire classification per EN 13501-1, as required by the EU Construction Products Regulation (EU) 2024/3110."@en ;
    rdfs:seeAlso dppk:reactionToFire ;
    skos:closeMatch dppk:reactionToFire .

# =============================================================================
# Construction Product Type (CPR Annex III families)
# =============================================================================

eucpr:ConstructionProductType
    a owl:Class ;
    rdfs:label "Construction Product Type"@en ;
    rdfs:comment "Top-level construction product family per CPR Annex III."@en ;
    owl:oneOf (
        eucpr:Cement
        eucpr:Aggregate
        eucpr:Insulation
        eucpr:WindowAndDoor
        eucpr:Membrane
        eucpr:StructuralTimber
        eucpr:Reinforcement
        eucpr:Mortar
        eucpr:Concrete
        eucpr:CladdingPanel
        eucpr:OtherConstructionProduct
    ) ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    skos:note "EU Construction Products Regulation (EU) 2024/3110 attribute. No GS1, SEMICeu, or schema.org equivalent."@en ;
    skos:narrowMatch dppk:Product ;
    skos:narrowMatch gs1:Product ;
    skos:broadMatch schema:IndividualProduct ;
    skos:broadMatch dppk:BatteryProduct ;
    skos:narrowMatch schema:Product ;
    skos:broadMatch dppk:IronSteelProduct .

eucpr:Cement                  a eucpr:ConstructionProductType ; rdfs:label "Cement"@en ; skos:notation "cement" .
eucpr:Aggregate               a eucpr:ConstructionProductType ; rdfs:label "Aggregate"@en ; skos:notation "aggregate" .
eucpr:Insulation              a eucpr:ConstructionProductType ; rdfs:label "Insulation"@en ; skos:notation "insulation" .
eucpr:WindowAndDoor           a eucpr:ConstructionProductType ; rdfs:label "Window or Door"@en ; skos:notation "window-door" .
eucpr:Membrane                a eucpr:ConstructionProductType ; rdfs:label "Membrane"@en ; skos:notation "membrane" .
eucpr:StructuralTimber        a eucpr:ConstructionProductType ; rdfs:label "Structural Timber"@en ; skos:notation "structural-timber" .
eucpr:Reinforcement           a eucpr:ConstructionProductType ; rdfs:label "Reinforcement"@en ; skos:notation "reinforcement" .
eucpr:Mortar                  a eucpr:ConstructionProductType ; rdfs:label "Mortar"@en ; skos:notation "mortar" .
eucpr:Concrete                a eucpr:ConstructionProductType ; rdfs:label "Concrete"@en ; skos:notation "concrete" .
eucpr:CladdingPanel           a eucpr:ConstructionProductType ; rdfs:label "Cladding Panel"@en ; skos:notation "cladding-panel" .
eucpr:OtherConstructionProduct a eucpr:ConstructionProductType ; rdfs:label "Other Construction Product"@en ; skos:notation "other" .

eucpr:constructionProductType
    a owl:ObjectProperty ;
    rdfs:label "Construction Product Type"@en ;
    rdfs:domain eucpr:ConstructionProduct ;
    rdfs:range eucpr:ConstructionProductType ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    skos:note "EU Construction Products Regulation (EU) 2024/3110 attribute. No GS1, SEMICeu, or schema.org equivalent."@en .

# =============================================================================
# Declaration of Performance (DoP) / Declaration of Conformity (DoC)
# =============================================================================

eucpr:declarationOfPerformanceUrl
    a owl:DatatypeProperty ;
    rdfs:label "Declaration of Performance URL"@en ;
    rdfs:comment """URL of the structured Declaration of Performance (DoP) or
Declaration of Conformity (DoC) document for this construction product, per
CPR Article 12. The DoP carries the harmonised technical specification
reference, intended use, essential characteristics, and AVCP system."""@en ;
    rdfs:domain eucpr:ConstructionProduct ;
    rdfs:range xsd:anyURI ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    skos:note "Declaration of Performance / essential-characteristics concept per the EU Construction Products Regulation (EU) 2024/3110. No GS1, SEMICeu, or schema.org equivalent."@en .

# =============================================================================
# Essential Characteristic
# =============================================================================

eucpr:EssentialCharacteristic
    a owl:Class ;
    rdfs:label "Essential Characteristic"@en ;
    rdfs:comment "A single declared essential characteristic (e.g. compressive strength, thermal conductivity, water vapour permeability) per CPR Annex III. Pair name + value + unit + harmonised standard reference."@en ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    skos:note "Declaration of Performance / essential-characteristics concept per the EU Construction Products Regulation (EU) 2024/3110. No GS1, SEMICeu, or schema.org equivalent."@en ;
    rdfs:seeAlso dppk:ProductCharacteristic .

eucpr:characteristicName
    a owl:DatatypeProperty ;
    rdfs:label "Characteristic Name"@en ;
    rdfs:domain eucpr:EssentialCharacteristic ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    skos:note "EU Construction Products Regulation (EU) 2024/3110 attribute. No GS1, SEMICeu, or schema.org equivalent."@en ;
    skos:exactMatch dppk:characteristicName .

eucpr:characteristicValue
    a owl:ObjectProperty ;
    rdfs:label "Characteristic Value"@en ;
    rdfs:comment "Quantitative value of the essential characteristic. gs1:QuantitativeValue with the unitCode appropriate for the characteristic (e.g. 'N31' for MPa, 'F94' for W/(m·K))."@en ;
    rdfs:domain eucpr:EssentialCharacteristic ;
    rdfs:range gs1:QuantitativeValue ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    skos:note "EU Construction Products Regulation (EU) 2024/3110 attribute. No GS1, SEMICeu, or schema.org equivalent."@en ;
    skos:narrowMatch gs1:value ;
    skos:narrowMatch schema:value ;
    skos:broadMatch schema:strengthValue ;
    skos:broadMatch schema:maxValue ;
    skos:broadMatch schema:doseValue ;
    skos:broadMatch schema:minValue ;
    skos:broadMatch <https://gs1-epcis-reg.org/rail/voc/data#rightValue> ;
    skos:broadMatch <https://gs1-epcis-reg.org/rail/voc/data#leftValue> ;
    skos:narrowMatch <http://data.europa.eu/m8g/providesValueFor> ;
    skos:broadMatch <urn:samm:io.BatteryPass.Performance:1.2.1#stateOfChargeValue> ;
    skos:broadMatch <urn:samm:io.BatteryPass.Performance:1.2.1#remainingCapacityValue> ;
    skos:broadMatch <urn:samm:io.BatteryPass.Performance:1.2.1#evolutionOfSelfDischargeValue> ;
    skos:broadMatch <urn:samm:io.BatteryPass.Performance:1.2.1#energyThroughputValue> ;
    skos:broadMatch <urn:samm:io.BatteryPass.Performance:1.2.1#capacityThroughputValue> ;
    skos:broadMatch <urn:samm:io.BatteryPass.Performance:1.2.1#internalResistanceIncreaseValue> ;
    skos:broadMatch <urn:samm:io.BatteryPass.Performance:1.2.1#remainingEnergyValue> ;
    skos:broadMatch <urn:samm:io.BatteryPass.Performance:1.2.1#capacityFadeValue> .

eucpr:harmonisedStandard
    a owl:DatatypeProperty ;
    rdfs:label "Harmonised Standard"@en ;
    rdfs:comment "URI of the harmonised technical specification (hEN) under which the essential characteristic is declared (e.g. EN 197-1 for cement, EN 13162 for mineral wool insulation)."@en ;
    rdfs:domain eucpr:EssentialCharacteristic ;
    rdfs:range xsd:anyURI ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    skos:note "EU Construction Products Regulation (EU) 2024/3110 attribute. No GS1, SEMICeu, or schema.org equivalent."@en ;
    rdfs:seeAlso dppk:harmonisedStandardReference ;
    skos:exactMatch dppk:harmonisedStandardReference .

eucpr:essentialCharacteristic
    a owl:ObjectProperty ;
    rdfs:label "Essential Characteristic"@en ;
    rdfs:comment "Declared essential characteristic of the product. Set-valued: most products declare multiple."@en ;
    rdfs:domain eucpr:ConstructionProduct ;
    rdfs:range eucpr:EssentialCharacteristic ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    skos:note "Declaration of Performance / essential-characteristics concept per the EU Construction Products Regulation (EU) 2024/3110. No GS1, SEMICeu, or schema.org equivalent."@en .

# Convenience named essential characteristics. Either declare these directly on
# the product, or use the generic eucpr:essentialCharacteristic pattern above;
# both carry a gs1:QuantitativeValue. Harvested from the DPP Keystone peer
# profile (dppk:thermalConductivity / dppk:compressiveStrength).

eucpr:thermalConductivity
    a owl:ObjectProperty ;
    rdfs:label "Thermal Conductivity"@en ;
    rdfs:comment "Declared thermal conductivity λ of the product. gs1:QuantitativeValue with unitCode 'F94' (W/(m·K))."@en ;
    rdfs:domain eucpr:ConstructionProduct ;
    rdfs:range gs1:QuantitativeValue ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    rdfs:seeAlso dppk:thermalConductivity ;
    skos:exactMatch dppk:thermalConductivity ;
    skos:note "Named essential characteristic per CPR Annex III. Anchored to the DPP Keystone peer profile dppk:thermalConductivity."@en .

eucpr:compressiveStrength
    a owl:ObjectProperty ;
    rdfs:label "Compressive Strength"@en ;
    rdfs:comment "Declared compressive strength of the product. gs1:QuantitativeValue with unitCode 'N31' (MPa)."@en ;
    rdfs:domain eucpr:ConstructionProduct ;
    rdfs:range gs1:QuantitativeValue ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    rdfs:seeAlso dppk:compressiveStrength ;
    skos:exactMatch dppk:compressiveStrength ;
    skos:note "Named essential characteristic per CPR Annex III. Anchored to the DPP Keystone peer profile dppk:compressiveStrength."@en .

# =============================================================================
# Structured Declaration of Performance (DoP), AVCP system, assessment bodies
# =============================================================================
# eucpr:declarationOfPerformanceUrl (above) carries a link to the DoP document.
# For machine-readable DoP metadata, use the structured eucpr:DeclarationOfPerformance
# block. Harvested from / aligned with the DPP Keystone CPR profile
# (dppk:DeclarationOfPerformance / dppk:DoPCBlock).

eucpr:DeclarationOfPerformance
    a owl:Class ;
    rdfs:label "Declaration of Performance"@en ;
    rdfs:comment """Structured Declaration of Performance per CPR Article 12: declaration code,
date of issue, AVCP system, harmonised standard, intended use, and the assessment
bodies involved. Complements eucpr:declarationOfPerformanceUrl (the document link)."""@en ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    rdfs:seeAlso schema:Certification ;
    rdfs:seeAlso dppk:DoPCBlock ;
    skos:exactMatch dppk:DeclarationOfPerformance ;
    skos:note "Declaration of Performance per the EU Construction Products Regulation (EU) 2024/3110. Anchored to the DPP Keystone peer profile dppk:DeclarationOfPerformance / dppk:DoPCBlock."@en ;
    skos:narrowMatch schema:Certification .

eucpr:declarationOfPerformance
    a owl:ObjectProperty ;
    rdfs:label "Declaration of Performance"@en ;
    rdfs:comment "Links a construction product to its structured Declaration of Performance."@en ;
    rdfs:domain eucpr:ConstructionProduct ;
    rdfs:range eucpr:DeclarationOfPerformance ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    rdfs:seeAlso dppk:hasDoP ;
    rdfs:seeAlso dppk:dopc ;
    skos:exactMatch dppk:hasDoP ;
    skos:note "DoP link per CPR Article 12. Anchored to the DPP Keystone peer profile dppk:hasDoP / dppk:dopc."@en .

eucpr:declarationCode
    a owl:DatatypeProperty ;
    rdfs:label "Declaration Code"@en ;
    rdfs:comment "Unique reference number of the Declaration of Performance (CPR Article 12)."@en ;
    rdfs:domain eucpr:DeclarationOfPerformance ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    rdfs:seeAlso dppk:declarationCode ;
    rdfs:seeAlso dppk:dopIdentifier ;
    skos:exactMatch dppk:declarationCode ;
    skos:note "DoP unique reference per CPR Article 12. Anchored to the DPP Keystone peer profile dppk:declarationCode / dppk:dopIdentifier."@en .

eucpr:dateOfIssue
    a owl:DatatypeProperty ;
    rdfs:label "Date of Issue"@en ;
    rdfs:comment "Date on which the Declaration of Performance was issued."@en ;
    rdfs:domain eucpr:DeclarationOfPerformance ;
    rdfs:range xsd:date ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    rdfs:seeAlso dppk:dateOfIssue ;
    skos:exactMatch dppk:dateOfIssue ;
    skos:note "DoP issue date per CPR Article 12. Anchored to the DPP Keystone peer profile dppk:dateOfIssue."@en ;
    rdfs:seeAlso schema:dateIssued .

eucpr:AVCPSystem
    a owl:Class ;
    rdfs:label "AVCP System"@en ;
    rdfs:comment "Assessment and Verification of Constancy of Performance system per CPR Annex V (1+, 1, 2+, 3, 4), determining the role of notified bodies."@en ;
    owl:oneOf (
        eucpr:System1Plus
        eucpr:System1
        eucpr:System2Plus
        eucpr:System3
        eucpr:System4
    ) ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    skos:note "AVCP system per CPR Annex V. No GS1, SEMICeu, or schema.org equivalent."@en .

eucpr:System1Plus  a eucpr:AVCPSystem ; rdfs:label "System 1+"@en ; skos:notation "1+" .
eucpr:System1      a eucpr:AVCPSystem ; rdfs:label "System 1"@en ; skos:notation "1" .
eucpr:System2Plus  a eucpr:AVCPSystem ; rdfs:label "System 2+"@en ; skos:notation "2+" .
eucpr:System3      a eucpr:AVCPSystem ; rdfs:label "System 3"@en ; skos:notation "3" .
eucpr:System4      a eucpr:AVCPSystem ; rdfs:label "System 4"@en ; skos:notation "4" .

eucpr:avcpSystem
    a owl:ObjectProperty ;
    rdfs:label "AVCP System"@en ;
    rdfs:comment "Applicable AVCP system (CPR Annex V) for the product's essential characteristics."@en ;
    rdfs:domain eucpr:DeclarationOfPerformance ;
    rdfs:range eucpr:AVCPSystem ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    rdfs:seeAlso dppk:avsSystem ;
    skos:note "AVCP system selector per CPR Annex V. Anchored to the DPP Keystone peer profile dppk:avsSystem."@en .

eucpr:notifiedBody
    a owl:ObjectProperty ;
    rdfs:label "Notified Body"@en ;
    rdfs:comment "Notified body (NB) involved in the AVCP. Reuse oec:OperatorInformation (carries name, identifier, address)."@en ;
    rdfs:domain eucpr:DeclarationOfPerformance ;
    rdfs:range oec:OperatorInformation ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    rdfs:seeAlso dppk:notifiedBody ;
    skos:exactMatch dppk:notifiedBody ;
    skos:note "Notified body per CPR Annex V. Reuses oec:OperatorInformation; anchored to the DPP Keystone peer profile dppk:notifiedBody."@en .

eucpr:technicalAssessmentBody
    a owl:ObjectProperty ;
    rdfs:label "Technical Assessment Body"@en ;
    rdfs:comment "Technical Assessment Body (TAB) that issued the European Technical Assessment. Reuse oec:OperatorInformation."@en ;
    rdfs:domain eucpr:DeclarationOfPerformance ;
    rdfs:range oec:OperatorInformation ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    rdfs:seeAlso dppk:technicalAssessmentBody ;
    skos:exactMatch dppk:technicalAssessmentBody ;
    skos:note "Technical Assessment Body per CPR. Reuses oec:OperatorInformation; anchored to the DPP Keystone peer profile dppk:technicalAssessmentBody."@en .

eucpr:europeanAssessmentDocument
    a owl:ObjectProperty ;
    rdfs:label "European Assessment Document"@en ;
    rdfs:comment "Reference to the European Assessment Document (EAD) underpinning a European Technical Assessment, where no harmonised standard applies. Reuse oec:DocumentReference."@en ;
    rdfs:domain eucpr:DeclarationOfPerformance ;
    rdfs:range oec:DocumentReference ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    rdfs:seeAlso dppk:europeanAssessmentDocument ;
    skos:exactMatch dppk:europeanAssessmentDocument ;
    skos:note "EAD reference per CPR. Reuses oec:DocumentReference; anchored to the DPP Keystone peer profile dppk:europeanAssessmentDocument."@en .

eucpr:validationReports
    a owl:ObjectProperty ;
    rdfs:label "Validation Reports"@en ;
    rdfs:comment "References to test / validation reports supporting the declared performance. Reuse oec:DocumentReference."@en ;
    rdfs:domain eucpr:DeclarationOfPerformance ;
    rdfs:range oec:DocumentReference ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/cpr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R3110> ;
    rdfs:seeAlso dppk:validationReports ;
    skos:exactMatch dppk:validationReports ;
    skos:note "Validation report references per CPR. Reuses oec:DocumentReference; anchored to the DPP Keystone peer profile dppk:validationReports."@en ;
    skos:broadMatch <urn:samm:io.BatteryPass.Labels:1.2.0#resultOfTestReport> .
