@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 euppwr: <https://ref.openepcis.io/extensions/eu/ppwr/> .
@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/ppwr/>
    a owl:Ontology ;
    dcterms:title "OpenEPCIS PPWR Vocabulary"@en ;
    dcterms:description """Vocabulary for the EU Packaging and Packaging Waste Regulation
(Regulation 2025/40, in force from 2025-01-01; labelling from 2025-08-12;
recyclability grading mandatory from 2030-01-01; minimum Grade B from
2038-01-01).

This module is intentionally thin: nearly every PPWR data point reuses the
cross-cutting `oec:` and `untp:` vocabulary already lifted to common/core.
Packaging-specific concepts only live here:

  - `euppwr:Packaging` (subClassOf gs1:PackagingDetails)
  - `euppwr:packagingTier` (Sales / Grouped / Transport; Article 3)
  - `euppwr:recyclabilityGrade` (A / B / C; Article 4, Annex II)
  - `euppwr:harmonisedSymbol` (URI of an Annex IX symbol code)

Recyclability scoring/rate, recycled content, reuse, compostability,
bio-based content, hazardous substances, EPR, deposit-return, production
site, declaration of conformity; all use existing `oec:` / `untp:` /
`gs1:` terms."""@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-19"^^xsd:date ;
    owl:versionInfo "0.9.7" ;
    owl:versionIRI <https://ref.openepcis.io/extensions/eu/ppwr/0.9.7> ;
    vann:preferredNamespacePrefix "euppwr" ;
    vann:preferredNamespaceUri "https://ref.openepcis.io/extensions/eu/ppwr/" ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32025R0040> ;
    owl:imports <https://ref.gs1.org/voc/> ;
    owl:imports <https://ref.openepcis.io/extensions/common/core/> .

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

euppwr:Packaging
    a owl:Class ;
    rdfs:subClassOf gs1:PackagingDetails ;
    rdfs:label "PPWR Packaging"@en ;
    rdfs:comment """A packaging item subject to EU Regulation 2025/40 (PPWR). Carrier
for the regulation's labelling and DPP data points. Use packagingTier to
indicate sales/grouped/transport position; use recyclabilityGrade,
oec:recycledContent, oec:Compostability, oec:bioBasedFraction, etc. for
the substantive declarations. Standardly identified via gs1:gtin (or AI 8003
GIAI for returnable transport items)."""@en ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/ppwr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32025R0040> ;
    rdfs:seeAlso dppk:Packaging ;
    skos:closeMatch dppk:Packaging ;
    skos:note "EU Packaging and Packaging Waste Regulation (EU) 2025/40 attribute. Aligns approximately with the DPP Keystone packaging card dppk:Packaging (material-composition oriented) vs this item-level class."@en ;
    skos:narrowMatch gs1:PackagingDetails ;
    skos:broadMatch gs1:ReturnablePackageDepositDetails ;
    skos:broadMatch gs1:PackagingMaterialDetails .

# =============================================================================
# Packaging Tier (Article 3)
# =============================================================================

euppwr:PackagingTier
    a owl:Class ;
    rdfs:label "Packaging Tier"@en ;
    rdfs:comment """Position of the packaging in the consumption hierarchy per PPWR
Article 3: sales (consumer-facing primary), grouped (secondary, multi-unit),
or transport (tertiary, logistics)."""@en ;
    owl:oneOf (
        euppwr:Sales
        euppwr:Grouped
        euppwr:Transport
    ) ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/ppwr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32025R0040> ;
    skos:note "EU Packaging and Packaging Waste Regulation (EU) 2025/40 attribute. No GS1, SEMICeu, or schema.org equivalent."@en .

euppwr:Sales     a euppwr:PackagingTier ; rdfs:label "Sales Packaging"@en ;
    rdfs:comment "Primary packaging: consumer-facing point-of-sale unit (PPWR Art. 3(1)(b))."@en ;
    skos:notation "sales" .
euppwr:Grouped   a euppwr:PackagingTier ; rdfs:label "Grouped Packaging"@en ;
    rdfs:comment "Secondary packaging: groups multiple sales units, may be removed without affecting product (PPWR Art. 3(1)(c))."@en ;
    skos:notation "grouped" .
euppwr:Transport a euppwr:PackagingTier ; rdfs:label "Transport Packaging"@en ;
    rdfs:comment "Tertiary packaging: facilitates handling/transport of grouped or sales packaging (PPWR Art. 3(1)(d))."@en ;
    skos:notation "transport" .

euppwr:packagingTier
    a owl:ObjectProperty ;
    rdfs:label "Packaging Tier"@en ;
    rdfs:comment "Indicates whether the packaging is sales (primary), grouped (secondary), or transport (tertiary) per PPWR Article 3."@en ;
    rdfs:domain euppwr:Packaging ;
    rdfs:range euppwr:PackagingTier ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/ppwr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32025R0040> ;
    skos:note "EU Packaging and Packaging Waste Regulation (EU) 2025/40 attribute. No GS1, SEMICeu, or schema.org equivalent."@en .

# =============================================================================
# Recyclability Grade (Article 4, Annex II)
# =============================================================================

euppwr:RecyclabilityGrade
    a owl:Class ;
    rdfs:label "PPWR Recyclability Grade"@en ;
    rdfs:comment """Letter grade A/B/C per PPWR Article 4 and Annex II, covering
design-for-recycling performance. Grade A is best; Grade C is the minimum to be
placed on the EU market from 2030; Grade B becomes minimum from 2038. The
detailed Annex II methodology is operator-side; the grade is the regulatory
output."""@en ;
    owl:oneOf (
        euppwr:GradeA
        euppwr:GradeB
        euppwr:GradeC
    ) ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/ppwr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32025R0040> ;
    skos:note "Packaging recyclability / circularity concept per the EU Packaging and Packaging Waste Regulation (EU) 2025/40."@en ;
    rdfs:seeAlso oec:CircularityPerformance .

euppwr:GradeA a euppwr:RecyclabilityGrade ; rdfs:label "Grade A"@en ;
    rdfs:comment "Highest recyclability performance per PPWR Annex II."@en ;
    skos:notation "A" .
euppwr:GradeB a euppwr:RecyclabilityGrade ; rdfs:label "Grade B"@en ;
    rdfs:comment "Mid recyclability per PPWR Annex II: minimum from 2038."@en ;
    skos:notation "B" .
euppwr:GradeC a euppwr:RecyclabilityGrade ; rdfs:label "Grade C"@en ;
    rdfs:comment "Lowest acceptable recyclability per PPWR Annex II: minimum from 2030; phased out by 2038."@en ;
    skos:notation "C" .

euppwr:recyclabilityGrade
    a owl:ObjectProperty ;
    rdfs:label "PPWR Recyclability Grade"@en ;
    rdfs:comment "PPWR Article 4 letter grade (A/B/C). Companion to oec:recyclabilityScore (numeric, JRC-style) and oec:recyclabilityRate (decimal fraction); use the grade for regulatory expression and a score/rate for the underlying methodology output."@en ;
    rdfs:domain euppwr:Packaging ;
    rdfs:range euppwr:RecyclabilityGrade ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/ppwr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32025R0040> ;
    skos:note "Packaging recyclability / circularity concept per the EU Packaging and Packaging Waste Regulation (EU) 2025/40."@en ;
    rdfs:seeAlso oec:CircularityPerformance .

# =============================================================================
# Harmonised Symbol (Article 13)
# =============================================================================

euppwr:harmonisedSymbol
    a owl:DatatypeProperty ;
    rdfs:label "Harmonised Symbol"@en ;
    rdfs:comment """URI / code reference of a harmonised PPWR Annex IX symbol that
appears on the packaging: material composition pictograms, separate-collection
indicators, deposit-return labels, etc. The Commission publishes the symbol
catalogue as implementing acts; this property points to the entry."""@en ;
    rdfs:domain euppwr:Packaging ;
    rdfs:range xsd:anyURI ;
    rdfs:isDefinedBy <https://ref.openepcis.io/extensions/eu/ppwr/> ;
    dcterms:source <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32025R0040> ;
    skos:note "EU Packaging and Packaging Waste Regulation (EU) 2025/40 attribute. No GS1, SEMICeu, or schema.org equivalent."@en ;
    skos:broadMatch dppk:separateCollectionSymbol .
