@prefix dpp:     <https://www.dpp-interoperability.wiki/vocab/v1/dpp#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix schema:  <https://schema.org/> .
@prefix prov:    <http://www.w3.org/ns/prov#> .
@prefix qudt:    <http://qudt.org/schema/qudt/> .
@prefix gs1:     <https://www.gs1.org/voc/> .
@prefix skos:    <http://www.w3.org/2004/02/skos/core#> .
@prefix vann:    <http://purl.org/vocab/vann/> .

<https://www.dpp-interoperability.wiki/vocab/v1/dpp>
  a owl:Ontology ;
  owl:versionIRI     <https://www.dpp-interoperability.wiki/vocab/v1/dpp/0.3> ;
  owl:versionInfo    "0.3" ;
  rdfs:label         "DPP Interoperability Core Vocabulary"@en ;
  dcterms:description
    "Core vocabulary for the Digital Product Passport Interoperability Platform. Defines product-agnostic classes and properties for the Shared Core Schema."@en ;
  dcterms:creator    "Jorge Renato Leon Chumpitaz" ;
  dcterms:publisher  "VU Amsterdam / LUT University" ;
  dcterms:created    "2026-02-06"^^xsd:date ;
  dcterms:modified   "2026-04-20"^^xsd:date ;
  dcterms:license    <https://creativecommons.org/licenses/by/4.0/> ;
  dcterms:rights     "CC BY 4.0 — Jorge Renato Leon Chumpitaz" ;
  dcterms:subject    "Digital Product Passport", "EU ESPR", "Interoperability" ;
  rdfs:seeAlso       <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1781> ,
                     <https://cirpassproject.eu/> ,
                     <https://www.gs1.org/standards/gs1-digital-link> ,
                     <https://hadea.ec.europa.eu/programmes/digital-europe/actions/digital-product-passport_en> ,
                     <https://www.dpp-interoperability.wiki/contexts/core/v0.2.jsonld> ,
                     <https://www.dpp-interoperability.wiki/vocab/v1/dpp.shacl.ttl> ;
  vann:preferredNamespacePrefix "dpp" ;
  vann:preferredNamespaceUri    "https://www.dpp-interoperability.wiki/vocab/v1/dpp#" ;
  rdfs:comment       "Developed as part of a Design Science Research thesis on DPP interoperability (VU Amsterdam / LUT University)."@en .

dpp:Agent
  a owl:Class ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Agent"@en ;
  skos:definition "An agent is a person or organization that bears some form of responsibility with respect to a Digital Product Passport or the product it describes."@en ;
  rdfs:comment "Abstract superclass for legal entities involved in a product's lifecycle."@en ;
  rdfs:seeAlso prov:Agent .

dpp:PhysicalEntity
  a owl:Class ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Physical Entity"@en ;
  skos:definition "A physical entity is a tangible object or place that exists in the physical world and is relevant to a Digital Product Passport."@en ;
  rdfs:comment "Abstract superclass for physical things described in or associated with a DPP."@en .

dpp:InformationObject
  a owl:Class ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Information Object"@en ;
  skos:definition "An information object is a digital or conceptual artifact that carries structured data about a product or its passport."@en ;
  rdfs:comment "Abstract superclass for all information-bearing entities in the core vocabulary."@en ;
  rdfs:seeAlso prov:Entity .

dpp:SoftwareEntity
  a owl:Class ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Software Entity"@en ;
  skos:definition "A software entity is a computational artifact that processes or transforms data within the DPP Interoperability Platform."@en ;
  rdfs:comment "Abstract superclass for software components defined in the core vocabulary."@en ;
  rdfs:seeAlso prov:SoftwareAgent .

dpp:LegalEntity
  a owl:Class ;
  rdfs:subClassOf dpp:Agent ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Legal Entity"@en ;
  skos:definition "A legal entity is an organization or person that has a legal identity and is registered under applicable law."@en ;
  rdfs:comment "Superclass for Manufacturer and EconomicOperator, capturing shared name, id, and address properties."@en ;
  rdfs:seeAlso schema:Organization .

dpp:DigitalProductPassport
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Digital Product Passport"@en ;
  skos:definition "A Digital Product Passport is an information object that documents a product across its entire lifecycle in conformance with EU ESPR Regulation 2024/1781, specifically Articles 8-12 defining DPP content, access, and technical requirements."@en ;
  rdfs:comment "Root entity describing a product across its lifecycle, conforming to EU ESPR Articles 8-12. The DPP aggregates product identification, manufacturer data, composition, environmental footprint, compliance, and sector-specific extensions into a single machine-readable document."@en ;
  rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1781> ,
               <https://cirpassproject.eu/> .

dpp:Product
  a owl:Class ;
  rdfs:subClassOf dpp:PhysicalEntity ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Product"@en ;
  skos:definition "A product is a physical or digital item placed on the EU market and described by a Digital Product Passport."@en ;
  rdfs:comment "The physical or digital product described by a DPP."@en ;
  rdfs:seeAlso schema:Product .

dpp:Manufacturer
  a owl:Class ;
  rdfs:subClassOf dpp:LegalEntity ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Manufacturer"@en ;
  skos:definition "A manufacturer is a legal entity responsible for designing, producing, or assembling the product described by a Digital Product Passport."@en ;
  rdfs:comment "The organization responsible for manufacturing the product."@en ;
  rdfs:seeAlso schema:Organization .

dpp:Identifier
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Identifier"@en ;
  skos:definition "An identifier is an information object that provides a unique reference to a product or passport using a recognized scheme such as GTIN, UUID, VIN, DID, LGTIN, serial number, or manufacturer part number per EU ESPR Article 9."@en ;
  rdfs:comment "A product or passport identifier (GTIN, UUID, VIN, DID, LGTIN, serial, manufacturer part number). ESPR Article 9 requires unique product identifiers to be included in the DPP."@en ;
  rdfs:seeAlso gs1:GTIN ,
               <https://www.gs1.org/standards/gs1-digital-link> .

dpp:Evidence
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Evidence"@en ;
  skos:definition "Evidence is an information object that supports or corroborates the result of an identifier resolution process, recording the source, match type, and confidence."@en ;
  rdfs:comment "Evidence supporting an identifier resolution result."@en ;
  rdfs:seeAlso prov:Entity .

dpp:FieldProvenance
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Field Provenance"@en ;
  skos:definition "Field provenance is an information object that records the origin, method, and confidence of the value assigned to a single field in a Digital Product Passport, aligned with W3C PROV-O."@en ;
  rdfs:comment "Per-field provenance metadata aligned with W3C PROV-O."@en ;
  rdfs:seeAlso prov:Entity .

dpp:Address
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Address"@en ;
  skos:definition "An address is an information object that specifies the postal location of a manufacturer or facility."@en ;
  rdfs:comment "Postal address of a manufacturer or facility."@en ;
  rdfs:seeAlso schema:PostalAddress .

dpp:Facility
  a owl:Class ;
  rdfs:subClassOf dpp:PhysicalEntity ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Facility"@en ;
  skos:definition "A facility is a physical place where a product or one of its components is manufactured."@en ;
  rdfs:comment "Manufacturing facility where the product was produced."@en ;
  rdfs:seeAlso schema:Place .

dpp:Composition
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Composition"@en ;
  skos:definition "A composition is an information object that describes the set of materials comprising a product, together with recycled content declarations."@en ;
  rdfs:comment "Product composition containing component materials and recycled content."@en .

dpp:Mass
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Mass"@en ;
  skos:definition "A mass measurement is an information object that records the weight of a product as a value-unit pair, per ESPR Article 7(2)(b)(i)."@en ;
  rdfs:comment "Product mass as a value-unit pair (e.g. 45.2 kg)."@en ;
  rdfs:seeAlso qudt:QuantityValue .

dpp:Dimensions
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Dimensions"@en ;
  skos:definition "Dimensions is an information object that records the physical extent of a product along three axes, per ESPR Article 7(2)(b)(i)."@en ;
  rdfs:comment "Product physical dimensions (length, width, height) with unit."@en ;
  rdfs:seeAlso qudt:QuantityValue .

dpp:MaterialEntry
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Material Entry"@en ;
  skos:definition "A material entry is an information object that represents a single component in a product's composition, either a raw material or a sub-product that may itself carry its own Digital Product Passport."@en ;
  rdfs:comment "A single material or component product in a product's composition."@en .

dpp:EconomicOperator
  a owl:Class ;
  rdfs:subClassOf dpp:LegalEntity ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Economic Operator"@en ;
  skos:definition "An economic operator is a legal entity responsible for placing a product on the EU market under applicable regulations."@en ;
  rdfs:comment "Economic operator responsible for placing the product on the market."@en .

dpp:DataCarrier
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Data Carrier"@en ;
  skos:definition "A data carrier is an information object that encodes a machine-readable reference to a product or its Digital Product Passport, such as a QR code, RFID tag, or NFC label, as required by EU ESPR Article 9(3)."@en ;
  rdfs:comment "Data carrier (QR code, Data Matrix, RFID, NFC, GS1 Digital Link) linking to the physical product. ESPR Article 9(3) mandates that the data carrier shall be physically present on the product and link to its DPP."@en ;
  rdfs:seeAlso <https://www.gs1.org/standards/gs1-digital-link> .

dpp:MappingGap
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Mapping Gap"@en ;
  skos:definition "A mapping gap is an information object that records a target field in the Shared Core Schema that could not be populated from a source payload during normalization."@en ;
  rdfs:comment "A gap identified during normalization where a target field could not be populated from the source payload."@en .

dpp:Adapter
  a owl:Class ;
  rdfs:subClassOf dpp:SoftwareEntity ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Adapter"@en ;
  skos:definition "An adapter is a software entity that transforms an initiative-specific data payload into the Shared Core Schema of the DPP Interoperability Platform."@en ;
  rdfs:comment "Software adapter that transforms initiative-specific payloads into the Shared Core Schema."@en ;
  rdfs:seeAlso prov:SoftwareAgent .

dpp:DataCoverage
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Data Coverage"@en ;
  skos:definition "Data coverage is an information object that records quantitative metrics about how many fields of the Shared Core Schema were successfully populated during a normalization run."@en ;
  rdfs:comment "Metrics describing how many target fields were populated by a normalization run."@en .

dpp:CoreData
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Core Data"@en ;
  skos:definition "Core data is an information object that groups all product-agnostic fields of a Digital Product Passport as defined by the Shared Core Schema."@en ;
  rdfs:comment "Groups all product-agnostic core fields of a Digital Product Passport."@en .

dpp:ProvenanceRecord
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Provenance Record"@en ;
  skos:definition "A provenance record is an information object that aggregates adapter identification and per-field provenance entries for a Digital Product Passport normalization event."@en ;
  rdfs:comment "Provenance metadata including adapter info and per-field tracking."@en ;
  rdfs:seeAlso prov:Bundle .

dpp:Extension
  a owl:Class ;
  rdfs:subClassOf dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "Extension"@en ;
  skos:definition "An abstract superclass for all domain-specific extension root classes registered with the DPP Interoperability Platform via dpp:extensions."@en ;
  rdfs:comment "Abstract superclass for all registered DPP extension root classes."@en .

dpp:Product      owl:disjointWith dpp:Manufacturer, dpp:Identifier, dpp:Evidence,
                                  dpp:FieldProvenance, dpp:Composition .
dpp:Manufacturer owl:disjointWith dpp:Identifier, dpp:Evidence, dpp:Composition .

dpp:product
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "product"@en ;
  rdfs:comment "Links a DPP to the product it describes."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   dpp:Product ;
  owl:equivalentProperty schema:itemReviewed .

dpp:manufacturer
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "manufacturer"@en ;
  rdfs:comment "Links a DPP to the manufacturer."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   dpp:Manufacturer ;
  owl:equivalentProperty schema:manufacturer .

dpp:identifiers
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "identifiers"@en ;
  rdfs:comment "Set of identifiers associated with the passport."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   dpp:Identifier .

dpp:evidence
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "evidence"@en ;
  rdfs:comment "Evidence entries supporting an identifier resolution result."@en ;
  rdfs:domain  dpp:Identifier ;
  rdfs:range   dpp:Evidence .

dpp:extensions
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "extensions"@en ;
  rdfs:comment "Modular domain-specific extension data. Range is open to support any registered extension root class."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   dpp:Extension .

dpp:provenanceFields
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "provenanceFields"@en ;
  rdfs:comment "Per-field provenance tracking. Aligned with W3C PROV-O."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   dpp:FieldProvenance ;
  rdfs:seeAlso prov:entity .

dpp:address
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "address"@en ;
  rdfs:comment "Postal address of a manufacturer or facility."@en ;
  rdfs:domain  dpp:Manufacturer ;
  rdfs:range   dpp:Address ;
  owl:equivalentProperty schema:address .

dpp:facility
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "facility"@en ;
  rdfs:comment "Manufacturing facility where the product was produced."@en ;
  rdfs:domain  dpp:Manufacturer ;
  rdfs:range   dpp:Facility ;
  rdfs:seeAlso schema:location .

dpp:composition
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "composition"@en ;
  rdfs:comment "Product composition with component materials and recycled content."@en ;
  rdfs:domain  dpp:Product ;
  rdfs:range   dpp:Composition ;
  rdfs:seeAlso <https://www.dpp-interoperability.wiki/vocab/v1/battery#materials> .

dpp:mass
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "mass"@en ;
  rdfs:comment "Product mass as a value-unit pair. ESPR Article 7(2)(b)(i) requires mass to be included for all products."@en ;
  rdfs:domain  dpp:Product ;
  rdfs:range   dpp:Mass ;
  rdfs:seeAlso schema:weight .

dpp:dimensions
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "dimensions"@en ;
  rdfs:comment "Physical dimensions (length, width, height) of the product. ESPR Article 7(2)(b)(i) requires dimensions for all products."@en ;
  rdfs:domain  dpp:Product ;
  rdfs:range   dpp:Dimensions ;
  rdfs:seeAlso schema:size .

dpp:componentMaterials
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "componentMaterials"@en ;
  rdfs:comment "List of materials comprising the product."@en ;
  rdfs:domain  dpp:Composition ;
  rdfs:range   dpp:MaterialEntry .

dpp:recycledContent
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "recycledContent"@en ;
  rdfs:comment "Recycled content declarations by material."@en ;
  rdfs:domain  dpp:Composition ;
  rdfs:range   dpp:MaterialEntry .

dpp:economicOperator
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "economicOperator"@en ;
  rdfs:comment "Economic operator responsible for placing product on market."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   dpp:EconomicOperator .

dpp:dataCarrier
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "dataCarrier"@en ;
  rdfs:comment "Data carrier linking to the physical product."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   dpp:DataCarrier .

dpp:coreData
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "coreData"@en ;
  rdfs:comment "Groups all product-agnostic core fields of a Digital Product Passport."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   dpp:CoreData .

dpp:gaps
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "gaps"@en ;
  rdfs:comment "Set of mapping gaps identified during normalization."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   dpp:MappingGap .

dpp:provenanceLinkedData
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "provenanceLinkedData"@en ;
  rdfs:comment "PROV-O aligned provenance representation for linked-data consumers."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   prov:Activity .

dpp:provenance
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "provenance"@en ;
  rdfs:comment "Provenance metadata including adapter info and per-field tracking."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   dpp:ProvenanceRecord .

dpp:adapter
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "adapter"@en ;
  rdfs:comment "Adapter that performed the normalization."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   dpp:Adapter .

dpp:dataCoverage
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "dataCoverage"@en ;
  rdfs:comment "Data coverage metrics for a normalization run."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   dpp:DataCoverage .

dpp:image
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "image"@en ;
  rdfs:comment "URL of the product image. Required by EU Battery Regulation Article 77."@en ;
  rdfs:domain  dpp:Product ;
  rdfs:range   xsd:anyURI ;
  owl:equivalentProperty schema:image .

dpp:passportId
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "passportId"@en ;
  rdfs:comment "Unique identifier for the DPP, typically a URN."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   xsd:anyURI ;
  owl:equivalentProperty dcterms:identifier .

dpp:version
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "version"@en ;
  rdfs:comment "Schema version of the passport."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   xsd:string ;
  owl:equivalentProperty dcterms:hasVersion .

dpp:lastUpdated
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "lastUpdated"@en ;
  rdfs:comment "ISO 8601 timestamp of the last update."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   xsd:dateTime .

dpp:productType
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "productType"@en ;
  rdfs:comment "High-level product type (e.g. 'Battery', 'Electronics', 'Food')."@en ;
  rdfs:domain  dpp:Product ;
  rdfs:range   xsd:string .

dpp:productCategory
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "productCategory"@en ;
  rdfs:comment "Category classification (e.g. 'Industrial Cell', 'ESS Module')."@en ;
  rdfs:domain  dpp:Product ;
  rdfs:range   xsd:string ;
  rdfs:seeAlso schema:additionalType .

dpp:productModel
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "productModel"@en ;
  rdfs:comment "Model name or number."@en ;
  rdfs:domain  dpp:Product ;
  rdfs:range   xsd:string ;
  owl:equivalentProperty schema:model .

dpp:productName
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "productName"@en ;
  rdfs:comment "Human-readable product name. ESPR Article 7(2)(a) requires a clear product identification including name."@en ;
  rdfs:domain  dpp:Product ;
  rdfs:range   xsd:string ;
  owl:equivalentProperty schema:name .

dpp:productDescription
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "productDescription"@en ;
  rdfs:comment "Textual description of the product."@en ;
  rdfs:domain  dpp:Product ;
  rdfs:range   xsd:string ;
  owl:equivalentProperty schema:description .

dpp:massValue
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "massValue"@en ;
  rdfs:comment "Numeric value of the product mass."@en ;
  rdfs:domain  dpp:Mass ;
  rdfs:range   xsd:double ;
  rdfs:seeAlso qudt:numericValue .

dpp:massUnit
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "massUnit"@en ;
  rdfs:comment "Unit of measurement for mass (e.g. 'kg', 'g')."@en ;
  rdfs:domain  dpp:Mass ;
  rdfs:range   xsd:string ;
  rdfs:seeAlso qudt:unit .

dpp:dimensionLength
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "dimensionLength"@en ;
  rdfs:comment "Length of the product."@en ;
  rdfs:domain  dpp:Dimensions ;
  rdfs:range   xsd:double .

dpp:dimensionWidth
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "dimensionWidth"@en ;
  rdfs:comment "Width of the product."@en ;
  rdfs:domain  dpp:Dimensions ;
  rdfs:range   xsd:double .

dpp:dimensionHeight
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "dimensionHeight"@en ;
  rdfs:comment "Height of the product."@en ;
  rdfs:domain  dpp:Dimensions ;
  rdfs:range   xsd:double .

dpp:dimensionUnit
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "dimensionUnit"@en ;
  rdfs:comment "Unit of measurement for dimensions (e.g. 'mm', 'cm', 'm')."@en ;
  rdfs:domain  dpp:Dimensions ;
  rdfs:range   xsd:string ;
  rdfs:seeAlso qudt:unit .

dpp:manufacturingDate
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "manufacturingDate"@en ;
  rdfs:comment "Date the product was manufactured."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   xsd:date ;
  owl:equivalentProperty schema:dateProduced .

dpp:placingOnMarket
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "placingOnMarket"@en ;
  rdfs:comment "Date first placed on the EU market."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   xsd:date .

dpp:passportStatus
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "passportStatus"@en ;
  rdfs:comment "Passport lifecycle status: draft, active, revoked, expired, or superseded."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   xsd:string .

dpp:economicOperatorName
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "economicOperatorName"@en ;
  rdfs:comment "Name of the economic operator."@en ;
  rdfs:domain  dpp:EconomicOperator ;
  rdfs:range   xsd:string .

dpp:economicOperatorId
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "economicOperatorId"@en ;
  rdfs:comment "Identifier of the economic operator."@en ;
  rdfs:domain  dpp:EconomicOperator ;
  rdfs:range   xsd:string .

dpp:dataCarrierUrl
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "dataCarrierUrl"@en ;
  rdfs:comment "URL encoded in the data carrier."@en ;
  rdfs:domain  dpp:DataCarrier ;
  rdfs:range   xsd:anyURI .

dpp:dataCarrierType
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "dataCarrierType"@en ;
  rdfs:comment "Type of data carrier (QR, DataMatrix, RFID, NFC)."@en ;
  rdfs:domain  dpp:DataCarrier ;
  rdfs:range   xsd:string .

dpp:percentage
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "percentage"@en ;
  rdfs:comment "Percentage by weight (0.0 to 100.0)."@en ;
  rdfs:domain  dpp:MaterialEntry ;
  rdfs:range   xsd:double .

dpp:materialName
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "materialName"@en ;
  rdfs:comment "Name of a material in composition."@en ;
  rdfs:domain  dpp:MaterialEntry ;
  rdfs:range   xsd:string .

dpp:componentDppLink
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "componentDppLink"@en ;
  rdfs:comment "URI linking to the component's own Digital Product Passport, enabling recursive product-to-product composition."@en ;
  rdfs:domain  dpp:MaterialEntry ;
  rdfs:range   xsd:anyURI ;
  rdfs:seeAlso <https://commission.europa.eu/energy-climate-change-environment/standards-tools-and-labels/products-labelling-rules-and-requirements/sustainable-products/ecodesign-sustainable-products-regulation_en> .

dpp:componentProductId
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "componentProductId"@en ;
  rdfs:comment "Unique product identifier (e.g. GTIN, serial number) of a component that is itself a product."@en ;
  rdfs:domain  dpp:MaterialEntry ;
  rdfs:range   xsd:string .

dpp:dateIntoService
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "dateIntoService"@en ;
  rdfs:comment "Date the product was placed into service."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   xsd:date .

dpp:expiryDate
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "expiryDate"@en ;
  rdfs:comment "Expiry or end-of-life date."@en ;
  rdfs:domain  dpp:DigitalProductPassport ;
  rdfs:range   xsd:date .

dpp:identifierType
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "identifierType"@en ;
  rdfs:comment "Type: UUID, GTIN, VIN, SERIAL, MANUFACTURER_PART, DID, or LGTIN."@en ;
  rdfs:domain  dpp:Identifier ;
  rdfs:range   xsd:string .

dpp:identifierValue
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "identifierValue"@en ;
  rdfs:comment "The string value of the identifier."@en ;
  rdfs:domain  dpp:Identifier ;
  rdfs:range   xsd:string .

dpp:identifierGranularity
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "identifierGranularity"@en ;
  rdfs:comment "Granularity: item, batch, or model."@en ;
  rdfs:domain  dpp:Identifier ;
  rdfs:range   xsd:string .

dpp:identifierIssuedBy
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "identifierIssuedBy"@en ;
  rdfs:comment "Organization that issued the identifier."@en ;
  rdfs:domain  dpp:Identifier ;
  rdfs:range   xsd:string .

dpp:evidenceSource
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "evidenceSource"@en ;
  rdfs:comment "Source system or registry."@en ;
  rdfs:domain  dpp:Evidence ;
  rdfs:range   xsd:string .

dpp:evidenceActor
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "evidenceActor"@en ;
  rdfs:comment "Actor or organization associated with the evidence entry."@en ;
  rdfs:domain  dpp:Evidence ;
  rdfs:range   xsd:string .

dpp:evidenceMatchType
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "evidenceMatchType"@en ;
  rdfs:comment "Type of match (exact, pattern, prefix, etc.)."@en ;
  rdfs:domain  dpp:Evidence ;
  rdfs:range   xsd:string .

dpp:evidenceConfidence
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "evidenceConfidence"@en ;
  rdfs:comment "Confidence score (0.0 to 1.0)."@en ;
  rdfs:domain  dpp:Evidence ;
  rdfs:range   xsd:double .

dpp:evidenceMatchedValue
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "evidenceMatchedValue"@en ;
  rdfs:comment "The identifier value matched by the evidence source."@en ;
  rdfs:domain  dpp:Evidence ;
  rdfs:range   xsd:string .

dpp:evidenceTimestamp
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "evidenceTimestamp"@en ;
  rdfs:comment "Timestamp when evidence was collected."@en ;
  rdfs:domain  dpp:Evidence ;
  rdfs:range   xsd:dateTime .

dpp:manufacturerName
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "manufacturerName"@en ;
  rdfs:comment "Legal or trading name of the manufacturer."@en ;
  rdfs:domain  dpp:Manufacturer ;
  rdfs:range   xsd:string ;
  owl:equivalentProperty schema:legalName .

dpp:manufacturerId
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "manufacturerId"@en ;
  rdfs:comment "Unique identifier (e.g. VAT, DUNS)."@en ;
  rdfs:domain  dpp:Manufacturer ;
  rdfs:range   xsd:string ;
  rdfs:seeAlso schema:taxID .

dpp:facilityName
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "facilityName"@en ;
  rdfs:comment "Name of the manufacturing facility."@en ;
  rdfs:domain  dpp:Facility ;
  rdfs:range   xsd:string .

dpp:facilityCountry
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "facilityCountry"@en ;
  rdfs:comment "ISO 3166-1 alpha-2 country code of the facility."@en ;
  rdfs:domain  dpp:Facility ;
  rdfs:range   xsd:string .

dpp:facilityId
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "facilityId"@en ;
  rdfs:comment "Unique identifier (URI, GLN, etc.) of the manufacturing facility."@en ;
  rdfs:domain  dpp:Facility ;
  rdfs:range   xsd:string .

dpp:street
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "street"@en ;
  rdfs:comment "Street address line."@en ;
  rdfs:domain  dpp:Address ;
  rdfs:range   xsd:string ;
  owl:equivalentProperty schema:streetAddress .

dpp:city
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "city"@en ;
  rdfs:comment "City or locality."@en ;
  rdfs:domain  dpp:Address ;
  rdfs:range   xsd:string ;
  owl:equivalentProperty schema:addressLocality .

dpp:postalCode
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "postalCode"@en ;
  rdfs:comment "Postal or ZIP code."@en ;
  rdfs:domain  dpp:Address ;
  rdfs:range   xsd:string ;
  owl:equivalentProperty schema:postalCode .

dpp:country
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "country"@en ;
  rdfs:comment "ISO 3166-1 alpha-2 country code."@en ;
  rdfs:domain  dpp:Address ;
  rdfs:range   xsd:string ;
  owl:equivalentProperty schema:addressCountry .

dpp:sourceField
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "sourceField"@en ;
  rdfs:comment "Path of the source field in the original initiative payload."@en ;
  rdfs:domain  dpp:FieldProvenance ;
  rdfs:range   xsd:string .

dpp:provenanceSource
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "provenanceSource"@en ;
  rdfs:comment "Initiative or system that provided the source data."@en ;
  rdfs:domain  dpp:FieldProvenance ;
  rdfs:range   xsd:string ;
  rdfs:seeAlso prov:wasAttributedTo .

dpp:provenanceMethod
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "provenanceMethod"@en ;
  rdfs:comment "Mapping method: direct_mapping, transformation, computation, or default."@en ;
  rdfs:domain  dpp:FieldProvenance ;
  rdfs:range   xsd:string .

dpp:provenanceConfidence
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "provenanceConfidence"@en ;
  rdfs:comment "Confidence score (0.0 to 1.0)."@en ;
  rdfs:domain  dpp:FieldProvenance ;
  rdfs:range   xsd:double .

dpp:provenanceTimestamp
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "provenanceTimestamp"@en ;
  rdfs:comment "Timestamp when the field was mapped."@en ;
  rdfs:domain  dpp:FieldProvenance ;
  rdfs:range   xsd:dateTime ;
  rdfs:seeAlso prov:generatedAtTime .

dpp:provenanceTransformation
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "provenanceTransformation"@en ;
  rdfs:comment "Description of the transformation applied (e.g. unit conversion)."@en ;
  rdfs:domain  dpp:FieldProvenance ;
  rdfs:range   xsd:string .

dpp:materialRecycledContent
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "materialRecycledContent"@en ;
  rdfs:comment "Percentage of recycled content (0.0 to 100.0)."@en ;
  rdfs:domain  dpp:MaterialEntry ;
  rdfs:range   xsd:double .

dpp:gapField
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "gapField"@en ;
  rdfs:comment "Target field that could not be populated during normalization."@en ;
  rdfs:domain  dpp:MappingGap ;
  rdfs:range   xsd:string .

dpp:gapReason
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "gapReason"@en ;
  rdfs:comment "Reason why the field is missing (e.g. not_in_source, unmappable)."@en ;
  rdfs:domain  dpp:MappingGap ;
  rdfs:range   xsd:string .

dpp:gapSeverity
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "gapSeverity"@en ;
  rdfs:comment "Severity level of the gap (error, warning, info)."@en ;
  rdfs:domain  dpp:MappingGap ;
  rdfs:range   xsd:string .

dpp:gapExplanation
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "gapExplanation"@en ;
  rdfs:comment "Human-readable explanation of the gap."@en ;
  rdfs:domain  dpp:MappingGap ;
  rdfs:range   xsd:string .

dpp:gapCategory
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "gapCategory"@en ;
  rdfs:comment "Category of the gap (e.g. core, extension)."@en ;
  rdfs:domain  dpp:MappingGap ;
  rdfs:range   xsd:string .

dpp:adapterVersion
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "adapterVersion"@en ;
  rdfs:comment "Version of the adapter that performed the transformation."@en ;
  rdfs:domain  dpp:Adapter ;
  rdfs:range   xsd:string .

dpp:targetSchema
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "targetSchema"@en ;
  rdfs:comment "Target Shared Core Schema version (e.g. 0.2.0)."@en ;
  rdfs:domain  dpp:Adapter ;
  rdfs:range   xsd:string .

dpp:coverageScore
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "coverageScore"@en ;
  rdfs:comment "Overall coverage score (0.0 to 1.0)."@en ;
  rdfs:domain  dpp:DataCoverage ;
  rdfs:range   xsd:double .

dpp:populatedFields
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "populatedFields"@en ;
  rdfs:comment "Number of fields successfully populated."@en ;
  rdfs:domain  dpp:DataCoverage ;
  rdfs:range   xsd:integer .

dpp:expectedFields
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  rdfs:label   "expectedFields"@en ;
  rdfs:comment "Total number of expected fields."@en ;
  rdfs:domain  dpp:DataCoverage ;
  rdfs:range   xsd:integer .

dpp:DigitalProductPassport
  rdfs:subClassOf
    [ a owl:Restriction ;
      owl:onProperty   dpp:passportId ;
      owl:maxCardinality 1 ] ,
    [ a owl:Restriction ;
      owl:onProperty   dpp:product ;
      owl:maxCardinality 1 ] ,
    [ a owl:Restriction ;
      owl:onProperty   dpp:manufacturer ;
      owl:maxCardinality 1 ] ,
    [ a owl:Restriction ;
      owl:onProperty   dpp:coreData ;
      owl:maxCardinality 1 ] ,
    [ a owl:Restriction ;
      owl:onProperty   dpp:provenance ;
      owl:maxCardinality 1 ] ,
    [ a owl:Restriction ;
      owl:onProperty   dpp:dataCoverage ;
      owl:maxCardinality 1 ] .
