Skip to content

EU DPP Ontology Alignment

dppvalidator aligns UNTP Digital Product Passport data with EU Digital Product Passport ontologies defined by the CIRPASS-2 project and TalTech research.

Overview

The EU Ecodesign for Sustainable Products Regulation (ESPR) mandates Digital Product Passports with specific semantic requirements. dppvalidator provides vocabulary modules that map UNTP data structures to EU DPP ontology terms.

Supported Ontologies

Ontology Namespace Description
EU DPP Core http://dpp.taltech.ee/EUDPP# Product lifecycle classes
Actors & Roles http://dpp.taltech.ee/EUDPP# Supply chain participants
Substances of Concern http://dpp.taltech.ee/EUDPP# REACH/SVHC compliance
LCA Module http://dpp.cea.fr/EUDPP/LCA# PEF/OEF impact categories

Vocabulary Modules

Actor Roles (eudpp_actors.py)

Defines 24 actor and role classes per ESPR Art 2(37-55):

from dppvalidator.vocabularies.eudpp_actors import (
    EUDPPActorClass,
    EUDPPRoleClass,
    Actor,
)

# Economic operator roles
print(EUDPPRoleClass.MANUFACTURER.value)  # eudpp:ManufacturerRole
print(EUDPPRoleClass.IMPORTER.value)  # eudpp:ImporterRole
print(EUDPPRoleClass.DISTRIBUTOR.value)  # eudpp:DistributorRole

LCA Impact Categories (eudpp_lca.py)

Provides 16 PEF 3.1 impact categories per ESPR Annex I:

from dppvalidator.vocabularies.eudpp_lca import (
    ImpactCategory,
    LCAClass,
)

# Climate change impact
print(ImpactCategory.CLIMATE_CHANGE.value)
print(ImpactCategory.OZONE_DEPLETION.value)
print(ImpactCategory.WATER_USE.value)

Substances of Concern (eudpp_substances.py)

REACH/SVHC substance vocabulary for chemical compliance:

from dppvalidator.vocabularies.eudpp_substances import (
    Substance,
    SubstanceIdentifierType,
)

# Validate CAS/EINECS identifiers
substance = Substance(
    cas_number="50-00-0",
    name="Formaldehyde",
)

Core Classes (eudpp_classes.py)

EU DPP Core Ontology class definitions:

from dppvalidator.vocabularies.eudpp_classes import (
    EUDPPClass,
    EUDPPProperty,
)

# Product passport class
print(EUDPPClass.DIGITAL_PRODUCT_PASSPORT.value)
print(EUDPPClass.PRODUCT.value)

Relation Mapping (eudpp_relations.py)

UNTP to EU DPP property mappings:

from dppvalidator.vocabularies.eudpp_relations import ProductRelationMapper

mapper = ProductRelationMapper()
eudpp_property = mapper.map_untp_property("manufacturer")

EU DPP Export

Convert validated UNTP DPPs to EU DPP JSON-LD format:

from dppvalidator.exporters import EUDPPJsonLDExporter
from dppvalidator.validators import ValidationEngine

# Validate first
engine = ValidationEngine()
result = engine.validate(dpp_data)

if result.valid and result.passport:
    # Export to EU DPP format
    exporter = EUDPPJsonLDExporter()
    eudpp_jsonld = exporter.export(result.passport)

Ontology Data Files

Bundled Turtle files for offline validation:

vocabularies/data/ontologies/
├── eudpp_core.ttl          # Core ontology
├── product_dpp.ttl         # Product DPP classes
├── actors_roles.ttl        # Actor and role hierarchy
├── soc.ttl                 # Substances of Concern
└── lca.ttl                 # LCA impact categories

References

See Also