@prefix battery: <https://www.dpp-interoperability.wiki/vocab/v1/battery#> .
@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 qudt:    <http://qudt.org/schema/qudt/> .
@prefix schema:  <https://schema.org/> .
@prefix skos:    <http://www.w3.org/2004/02/skos/core#> .
@prefix vann:    <http://purl.org/vocab/vann/> .

# =============================================================================
# DPP Battery Extension Vocabulary v0.2
# =============================================================================

<https://www.dpp-interoperability.wiki/vocab/v1/battery>
  a owl:Ontology ;
  owl:versionIRI   <https://www.dpp-interoperability.wiki/vocab/v1/battery/0.2> ;
  owl:versionInfo  "0.2" ;
  owl:imports      <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  owl:imports      <http://qudt.org/2.1/schema/qudt> ;
  rdfs:label       "DPP Battery Extension Vocabulary"@en ;
  rdfs:comment     "Battery-specific extension for the DPP Interoperability Platform, covering chemistry, performance, materials, durability, battery status, circularity, and supply chain per EU Battery Regulation 2023/1542."@en ;
  dcterms:description
    "Battery-specific extension vocabulary for the DPP Interoperability Platform per EU Battery Regulation 2023/1542."@en ;
  dcterms:creator  "Jorge Renato Leon Chumpitaz" ;
  dcterms:publisher "VU Amsterdam / LUT University" ;
  dcterms:created  "2026-02-06"^^xsd:date ;
  dcterms:modified "2026-02-27"^^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", "Battery Regulation", "EU 2023/1542" ;
  rdfs:seeAlso     <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32023R1542> ,
                   <https://www.dpp-interoperability.wiki/vocab/v1/battery.shacl.ttl> ;
  vann:preferredNamespacePrefix "battery" ;
  vann:preferredNamespaceUri    "https://www.dpp-interoperability.wiki/vocab/v1/battery#" .

# =============================================================================
# Classes
# =============================================================================

# anchoring the extension root in the core hierarchy and enabling the
# dpp:extensions property range constraint to be properly satisfied.
battery:BatteryExtension
  a owl:Class ;
  rdfs:subClassOf  dpp:Extension ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Battery Extension"@en ;
  skos:definition "A battery extension is a domain-specific extension of a Digital Product Passport that groups battery-specific data including chemistry, performance, materials, durability, battery status, circularity, and supply chain per EU Battery Regulation 2023/1542 Articles 13, 48, and 77."@en ;
  rdfs:comment "Container class for battery-specific DPP data. Groups chemistry, performance, materials, durability, battery status, circularity, and supply chain. Articles 13 (information requirements), 48 (supply chain due diligence), and 77 (battery passport) define mandatory data elements."@en ;
  rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32023R1542> ,
               <https://thebatterypass.eu/> .

battery:Chemistry
  a owl:Class ;
  rdfs:subClassOf  dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Battery Chemistry"@en ;
  skos:definition "Battery chemistry is an information object that describes the chemical composition of a battery cell, specifying cathode material, anode material, and electrolyte type per EU Battery Regulation Article 13."@en ;
  rdfs:comment "Chemical composition: cathode, anode, electrolyte. Per EU Battery Regulation Article 13."@en ;
  rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32023R1542> .

battery:Performance
  a owl:Class ;
  rdfs:subClassOf  dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Battery Performance"@en ;
  skos:definition "Battery performance is an information object that records the electrical performance characteristics of a battery, including capacity, voltage, power, and round-trip efficiency."@en ;
  rdfs:comment "Electrical performance characteristics (capacity, voltage, power, efficiency)."@en .

battery:BatteryRawMaterials
  a owl:Class ;
  rdfs:subClassOf  dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Battery Materials"@en ;
  skos:definition "Battery raw materials is an information object that documents the critical raw materials and recycled content of a battery per EU Battery Regulation and the EU CRM Act."@en ;
  rdfs:comment "Battery-specific material data: critical raw materials, recycled content."@en .

battery:MaterialCompositionEntry
  a owl:Class ;
  rdfs:subClassOf  dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Material Composition Entry"@en ;
  skos:definition "A material composition entry is an information object that represents a single element in a battery's material composition, recording its chemical element name, functional role, mass percentage, and recycled content percentage."@en ;
  rdfs:comment "A single element in the battery's material composition with mass percentage and recycled content."@en .

battery:RecycledContentEntry
  a owl:Class ;
  rdfs:subClassOf  dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Recycled Content Entry"@en ;
  skos:definition "A recycled content entry is an information object that records the recycled content percentage for a specific critical element (cobalt, lithium, nickel, or lead) in a battery per EU Battery Regulation targets."@en ;
  rdfs:comment "Recycled content percentage for a specific element (cobalt, lithium, nickel, lead)."@en .

battery:Durability
  a owl:Class ;
  rdfs:subClassOf  dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Battery Durability"@en ;
  skos:definition "Battery durability is an information object that captures the expected lifetime and degradation characteristics of a battery, including manufacturer-specified design lifecycle and measured capacity fade."@en ;
  rdfs:comment "Expected lifetime and degradation characteristics."@en .

battery:ExpectedLifetime
  a owl:Class ;
  rdfs:subClassOf  dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Expected Lifetime"@en ;
  skos:definition "Expected lifetime is an information object that expresses the anticipated operational lifespan of a battery in both calendar years and full charge-discharge cycles, as provided by the manufacturer or derived from testing."@en ;
  rdfs:comment "Expected lifetime of the battery expressed in both years and charge/discharge cycles."@en .

battery:BatteryStatus
  a owl:Class ;
  rdfs:subClassOf  dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Battery Status"@en ;
  skos:definition "Battery status is an information object that records real-time or periodically measured state data of a battery in use, including state of health, state of charge, remaining capacity, and full charge cycle count per EU Battery Regulation Article 77."@en ;
  rdfs:comment "Real-time or measured state data (SoH, SoC, remaining capacity, cycle count)."@en .

battery:Circularity
  a owl:Class ;
  rdfs:subClassOf  dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Battery Circularity"@en ;
  skos:definition "Battery circularity is an information object that documents end-of-life instructions and programs for a battery, covering disassembly, recycling, safety handling, and collection point information per EU Battery Regulation Articles 59-60 on collection and recycling targets."@en ;
  rdfs:comment "End-of-life circularity: disassembly, recycling, collection. EU Battery Regulation Articles 59-60 set collection rates (63% by 2027, 73% by 2030) and recycling efficiency targets."@en ;
  rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32023R1542> .

battery:SupplyChain
  a owl:Class ;
  rdfs:subClassOf  dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Supply Chain"@en ;
  skos:definition "Supply chain is an information object that documents the due diligence and compliance activities undertaken for the battery's material sourcing per EU Battery Regulation Article 48 and the OECD Due Diligence Guidance for Responsible Supply Chains of Minerals."@en ;
  rdfs:comment "Supply chain due diligence and compliance documentation per EU Battery Regulation Article 48. Links responsible sourcing to OECD Due Diligence Guidance."@en ;
  rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32023R1542> .

battery:DueDiligenceReport
  a owl:Class ;
  rdfs:subClassOf  dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Due Diligence Report"@en ;
  skos:definition "A due diligence report is an information object that documents the supply chain due diligence process for battery materials, required by EU Battery Regulation Article 48."@en ;
  rdfs:comment "Supply chain due diligence report per EU Battery Regulation Article 48."@en ;
  rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32023R1542> .

battery:CycleLifeTest
  a owl:Class ;
  rdfs:subClassOf  dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Cycle Life Test"@en ;
  skos:definition "A cycle life test is an information object that records the protocol and results of a standardised test used to verify the cycle lifetime of a battery."@en ;
  rdfs:comment "Test protocol and results for battery cycle life verification."@en .

battery:OperatingTemperatureRange
  a owl:Class ;
  rdfs:subClassOf  dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Operating Temperature Range"@en ;
  skos:definition "An operating temperature range is an information object that specifies the minimum and maximum temperatures within which a battery can safely and efficiently operate."@en ;
  rdfs:comment "Minimum and maximum operating temperatures."@en .

battery:OverchargeEvent
  a owl:Class ;
  rdfs:subClassOf  dpp:InformationObject ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "Overcharge Event"@en ;
  skos:definition "An overcharge event is an information object that records a single deep overcharge or other critical battery event, including its timestamp, severity, and duration."@en ;
  rdfs:comment "Record of a deep overcharge or critical event."@en .

# Disjointness between top-level sub-classes of BatteryExtension — unchanged
battery:Chemistry      owl:disjointWith battery:Performance, battery:BatteryRawMaterials,
                                         battery:Durability, battery:BatteryStatus,
                                         battery:Circularity, battery:SupplyChain .
battery:Performance    owl:disjointWith battery:BatteryRawMaterials, battery:Durability,
                                         battery:BatteryStatus, battery:Circularity .
battery:BatteryRawMaterials owl:disjointWith battery:Durability, battery:BatteryStatus .

# =============================================================================
# Object Properties
# =============================================================================

battery:chemistry
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label    "chemistry"@en ;
  rdfs:comment  "Links a BatteryExtension to its chemistry composition."@en ;
  rdfs:domain   battery:BatteryExtension ;
  rdfs:range    battery:Chemistry ;
  owl:inverseOf battery:isChemistryOf .

battery:isChemistryOf
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "isChemistryOf"@en ;
  rdfs:comment "Inverse of battery:chemistry."@en ;
  rdfs:domain  battery:Chemistry ;
  rdfs:range   battery:BatteryExtension .

battery:performance
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label    "performance"@en ;
  rdfs:comment  "Links a BatteryExtension to its performance data."@en ;
  rdfs:domain   battery:BatteryExtension ;
  rdfs:range    battery:Performance ;
  owl:inverseOf battery:isPerformanceOf .

battery:isPerformanceOf
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "isPerformanceOf"@en ;
  rdfs:comment "Inverse of battery:performance."@en ;
  rdfs:domain  battery:Performance ;
  rdfs:range   battery:BatteryExtension .

# to align with rdfs:label "materials" and resolve the univocity violation.
# Old IRI battery:rawMaterials deprecated below for backward compatibility.
battery:materials
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "materials"@en ;
  rdfs:comment "Links a BatteryExtension to its materials data."@en ;
  rdfs:domain  battery:BatteryExtension ;
  rdfs:range   battery:BatteryRawMaterials ;
  # Cross-reference: core vocabulary generalises this as dpp:composition
  rdfs:seeAlso <https://www.dpp-interoperability.wiki/vocab/v1/dpp#composition> .

# DEPRECATED — kept for backward compatibility
battery:durability
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "durability"@en ;
  rdfs:comment "Links a BatteryExtension to its durability characteristics."@en ;
  rdfs:domain  battery:BatteryExtension ;
  rdfs:range   battery:Durability .

battery:batteryStatus
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "batteryStatus"@en ;
  rdfs:comment "Links a BatteryExtension to real-time state measurements."@en ;
  rdfs:domain  battery:BatteryExtension ;
  rdfs:range   battery:BatteryStatus .

battery:circularity
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "circularity"@en ;
  rdfs:comment "Links a BatteryExtension to its end-of-life circularity data."@en ;
  rdfs:domain  battery:BatteryExtension ;
  rdfs:range   battery:Circularity .

battery:supplyChain
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "supplyChain"@en ;
  rdfs:comment "Links a BatteryExtension to supply chain information."@en ;
  rdfs:domain  battery:BatteryExtension ;
  rdfs:range   battery:SupplyChain .

# compliance extension via dpp:extensions. Kept for backward compatibility.
battery:materialComposition
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "materialComposition"@en ;
  rdfs:comment "Set of material composition entries."@en ;
  rdfs:domain  battery:Chemistry ;
  rdfs:range   battery:MaterialCompositionEntry .

battery:criticalRawMaterials
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "criticalRawMaterials"@en ;
  rdfs:comment "Set of critical raw material entries per EU CRM Act."@en ;
  rdfs:domain  battery:BatteryRawMaterials ;
  rdfs:range   battery:MaterialCompositionEntry ;
  rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R0903> .

battery:recycledContent
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "recycledContent"@en ;
  rdfs:comment "Container for recycled content data."@en ;
  rdfs:domain  battery:BatteryRawMaterials ;
  rdfs:range   battery:RecycledContentEntry .

battery:recycledContentByElement
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "recycledContentByElement"@en ;
  rdfs:comment "Per-element recycled content entries."@en ;
  rdfs:domain  battery:BatteryRawMaterials ;
  rdfs:range   battery:RecycledContentEntry .

battery:expectedLifetime
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "expectedLifetime"@en ;
  rdfs:comment "Expected lifetime of the battery."@en ;
  rdfs:domain  battery:Durability ;
  rdfs:range   battery:ExpectedLifetime .

battery:cycleLifeTest
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "cycleLifeTest"@en ;
  rdfs:comment "Test protocol and results for cycle life."@en ;
  rdfs:domain  battery:Durability ;
  rdfs:range   battery:CycleLifeTest .

battery:operatingTemperatureRange
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "operatingTemperatureRange"@en ;
  rdfs:comment "Operating temperature range. Preferred over the deprecated battery:temperatureRange string property."@en ;
  rdfs:domain  battery:Durability ;
  rdfs:range   battery:OperatingTemperatureRange .

battery:deepOverchargeEvents
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "deepOverchargeEvents"@en ;
  rdfs:comment "Recorded deep overcharge or critical events."@en ;
  rdfs:domain  battery:BatteryStatus ;
  rdfs:range   battery:OverchargeEvent .

battery:dueDiligence
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "dueDiligence"@en ;
  rdfs:comment "Supply chain due diligence report."@en ;
  rdfs:domain  battery:SupplyChain ;
  rdfs:range   battery:DueDiligenceReport ;
  # Cross-reference: SoC extension has parallel due diligence for substances
  rdfs:seeAlso <https://www.dpp-interoperability.wiki/vocab/v1/soc#dueDiligenceStatement> .

# ObjectProperty/qudt:QuantityValue for consistency with all other power/energy
# properties in the battery extension.
battery:powerCapability
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "powerCapability"@en ;
  rdfs:comment "Maximum power capability of the battery as a qudt:QuantityValue."@en ;
  rdfs:domain  battery:Performance ;
  rdfs:range   qudt:QuantityValue .

# =============================================================================
# Datatype Properties — Chemistry
# =============================================================================

battery:chemistryType
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "chemistryType"@en ;
  rdfs:comment "Short name of the battery chemistry (e.g. NMC811, LFP)."@en ;
  rdfs:domain  battery:Chemistry ;
  rdfs:range   xsd:string .

battery:anodeMaterial
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "anodeMaterial"@en ;
  rdfs:comment "Anode material (e.g. Graphite, Li4Ti5O12)."@en ;
  rdfs:domain  battery:Chemistry ;
  rdfs:range   xsd:string .

battery:cathodeMaterial
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "cathodeMaterial"@en ;
  rdfs:comment "Cathode material (e.g. LiNi0.8Mn0.1Co0.1O2)."@en ;
  rdfs:domain  battery:Chemistry ;
  rdfs:range   xsd:string .

battery:electrolyteType
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "electrolyteType"@en ;
  rdfs:comment "Electrolyte type (e.g. Liquid LiPF6, Solid-state polymer)."@en ;
  rdfs:domain  battery:Chemistry ;
  rdfs:range   xsd:string .

battery:element
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "element"@en ;
  rdfs:comment "Chemical element name in a composition entry."@en ;
  rdfs:domain  battery:MaterialCompositionEntry ;
  rdfs:range   xsd:string .

battery:materialRole
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "materialRole"@en ;
  rdfs:comment "Role of the element (cathode-active, anode-active, electrolyte, binder, etc.)."@en ;
  rdfs:domain  battery:MaterialCompositionEntry ;
  rdfs:range   xsd:string .

battery:massPercentage
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "massPercentage"@en ;
  rdfs:comment "Mass percentage of the element (0.0 to 100.0). Enforced by companion SHACL shape."@en ;
  rdfs:domain  battery:MaterialCompositionEntry ;
  rdfs:range   xsd:double .

battery:recycledContentPercentage
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "recycledContentPercentage"@en ;
  rdfs:comment "Percentage of recycled content for this material (0.0 to 100.0). Enforced by companion SHACL shape."@en ;
  rdfs:domain  battery:MaterialCompositionEntry ;
  rdfs:range   xsd:double ;
  rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32023R1542> .

# =============================================================================
# Datatype Properties — Performance
# NOTE: ratedCapacity, ratedVoltage, nominalVoltage, ratedEnergy,
#       selfDischargeRate, internalResistance are ObjectProperties (qudt:QuantityValue).
#       roundTripEfficiency remains DatatypeProperty as it is a dimensionless ratio.
# =============================================================================

battery:ratedCapacity
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "ratedCapacity"@en ;
  rdfs:comment "Rated capacity (Ah or kWh). Per EU Battery Regulation Article 10."@en ;
  rdfs:domain  battery:Performance ;
  rdfs:range   qudt:QuantityValue ;
  rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32023R1542> .

battery:ratedVoltage
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "ratedVoltage"@en ;
  rdfs:comment "Rated voltage (V). Canonical property; use instead of battery:nominalVoltage."@en ;
  rdfs:domain  battery:Performance ;
  rdfs:range   qudt:QuantityValue .

# Nominal voltage and rated voltage are related but not identical per IEC 60050.
# Using owl:equivalentProperty would generate false inferences for systems
# that distinguish these values (e.g. EV battery packs vs. cell specifications).
battery:nominalVoltage
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "nominalVoltage"@en ;
  rdfs:comment "Nominal voltage alias used by some initiatives. Sub-property of battery:ratedVoltage; prefer battery:ratedVoltage for canonical use."@en ;
  rdfs:domain  battery:Performance ;
  rdfs:range   qudt:QuantityValue ;
  rdfs:subPropertyOf battery:ratedVoltage .

battery:ratedEnergy
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "ratedEnergy"@en ;
  rdfs:comment "Rated energy (kWh or Wh)."@en ;
  rdfs:domain  battery:Performance ;
  rdfs:range   qudt:QuantityValue .

battery:selfDischargeRate
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "selfDischargeRate"@en ;
  rdfs:comment "Self-discharge rate (e.g. %/month)."@en ;
  rdfs:domain  battery:Performance ;
  rdfs:range   qudt:QuantityValue .

battery:internalResistance
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "internalResistance"@en ;
  rdfs:comment "Internal resistance at beginning of life (mOhm)."@en ;
  rdfs:domain  battery:Performance ;
  rdfs:range   qudt:QuantityValue .

battery:roundTripEfficiency
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "roundTripEfficiency"@en ;
  rdfs:comment "Energy round-trip efficiency as a decimal (0.0 to 1.0). Enforced by companion SHACL shape."@en ;
  rdfs:domain  battery:Performance ;
  rdfs:range   xsd:double .

# =============================================================================
# Datatype Properties — Materials
# =============================================================================

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

battery:sourceCountry
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "sourceCountry"@en ;
  rdfs:comment "Country of origin for a material (ISO 3166-1 alpha-2)."@en ;
  rdfs:domain  battery:BatteryRawMaterials ;
  rdfs:range   xsd:string .

battery:recycledPercentage
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "recycledPercentage"@en ;
  rdfs:comment "Aggregated recycled content percentage. Enforced by companion SHACL shape."@en ;
  rdfs:domain  battery:RecycledContentEntry ;
  rdfs:range   xsd:double .

# =============================================================================
# Datatype Properties — Durability
# and operational lifetime (on ExpectedLifetime) is now formally separated:
#   - battery:designedLifecycleCycles/Years → on battery:Durability
#     (manufacturer design specification)
#   - battery:lifetimeCycles/Years → on battery:ExpectedLifetime
#     (tested or expected operational lifetime)
# =============================================================================

battery:designedLifecycleCycles
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "designedLifecycleCycles"@en ;
  rdfs:comment "Number of full charge/discharge cycles the battery is designed for (manufacturer specification)."@en ;
  rdfs:domain  battery:Durability ;
  rdfs:range   xsd:integer .

battery:designedLifecycleYears
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "designedLifecycleYears"@en ;
  rdfs:comment "Designed calendar lifetime in years (manufacturer specification)."@en ;
  rdfs:domain  battery:Durability ;
  rdfs:range   xsd:double .

battery:lifetimeYears
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "lifetimeYears"@en ;
  rdfs:comment "Expected operational lifetime in years (tested or modelled)."@en ;
  rdfs:domain  battery:ExpectedLifetime ;
  rdfs:range   xsd:double .

battery:lifetimeCycles
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "lifetimeCycles"@en ;
  rdfs:comment "Expected operational lifetime in charge/discharge cycles (tested or modelled)."@en ;
  rdfs:domain  battery:ExpectedLifetime ;
  rdfs:range   xsd:integer .

battery:capacityFadePerYear
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "capacityFadePerYear"@en ;
  rdfs:comment "Annual capacity degradation rate (e.g. 0.02 = 2%/year)."@en ;
  rdfs:domain  battery:Durability ;
  rdfs:range   xsd:double .

battery:powerFadePerYear
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "powerFadePerYear"@en ;
  rdfs:comment "Annual power degradation rate."@en ;
  rdfs:domain  battery:Durability ;
  rdfs:range   xsd:double .

battery:impedanceGrowthPerYear
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "impedanceGrowthPerYear"@en ;
  rdfs:comment "Annual impedance growth rate."@en ;
  rdfs:domain  battery:Durability ;
  rdfs:range   xsd:double .

# battery:OperatingTemperatureRange class accessed via battery:operatingTemperatureRange.
battery:testProtocol
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "testProtocol"@en ;
  rdfs:comment "Standard used for cycle life testing (e.g. IEC 62660-1)."@en ;
  rdfs:domain  battery:CycleLifeTest ;
  rdfs:range   xsd:string .

battery:endOfLifeThreshold
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "endOfLifeThreshold"@en ;
  rdfs:comment "SoH threshold defining end-of-life (e.g. 0.80 = 80%)."@en ;
  rdfs:domain  battery:CycleLifeTest ;
  rdfs:range   xsd:double .

battery:minTemperature
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "minTemperature"@en ;
  rdfs:comment "Minimum operating temperature (°C)."@en ;
  rdfs:domain  battery:OperatingTemperatureRange ;
  rdfs:range   xsd:double .

battery:maxTemperature
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "maxTemperature"@en ;
  rdfs:comment "Maximum operating temperature (°C)."@en ;
  rdfs:domain  battery:OperatingTemperatureRange ;
  rdfs:range   xsd:double .

# =============================================================================
# Datatype Properties — Battery Status
# NOTE: remainingCapacity and currentInternalResistance are ObjectProperties
#       (qudt:QuantityValue). stateOfHealth and stateOfCharge are plain decimals.
# =============================================================================

battery:stateOfHealth
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "stateOfHealth"@en ;
  rdfs:comment "Current SoH as a decimal (0.0 to 1.0). Per EU Battery Regulation Article 77. Enforced by companion SHACL shape."@en ;
  rdfs:domain  battery:BatteryStatus ;
  rdfs:range   xsd:double ;
  rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32023R1542> .

battery:stateOfCharge
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "stateOfCharge"@en ;
  rdfs:comment "Current SoC as a decimal (0.0 to 1.0). Enforced by companion SHACL shape."@en ;
  rdfs:domain  battery:BatteryStatus ;
  rdfs:range   xsd:double .

battery:remainingCapacity
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "remainingCapacity"@en ;
  rdfs:comment "Current remaining capacity as a qudt:QuantityValue."@en ;
  rdfs:domain  battery:BatteryStatus ;
  rdfs:range   qudt:QuantityValue .

battery:fullChargeCycles
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "fullChargeCycles"@en ;
  rdfs:comment "Total full charge/discharge cycles completed."@en ;
  rdfs:domain  battery:BatteryStatus ;
  rdfs:range   xsd:integer .

battery:currentInternalResistance
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "currentInternalResistance"@en ;
  rdfs:comment "Current measured internal resistance as a qudt:QuantityValue."@en ;
  rdfs:domain  battery:BatteryStatus ;
  rdfs:range   qudt:QuantityValue .

battery:eventTimestamp
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "eventTimestamp"@en ;
  rdfs:comment "Timestamp of an overcharge or critical event."@en ;
  rdfs:domain  battery:OverchargeEvent ;
  rdfs:range   xsd:dateTime .

battery:eventSeverity
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "eventSeverity"@en ;
  rdfs:comment "Severity: low, medium, high, or critical."@en ;
  rdfs:domain  battery:OverchargeEvent ;
  rdfs:range   xsd:string .

# =============================================================================
# Datatype Properties — Circularity
# =============================================================================

battery:dismantlingInstructions
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "dismantlingInstructions"@en ;
  rdfs:comment "Instructions for safe dismantling."@en ;
  rdfs:domain  battery:Circularity ;
  rdfs:range   xsd:string .

battery:disassemblyManualLink
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "disassemblyManualLink"@en ;
  rdfs:comment "URL to the disassembly manual."@en ;
  rdfs:domain  battery:Circularity ;
  rdfs:range   xsd:anyURI .

battery:recyclingInstructions
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "recyclingInstructions"@en ;
  rdfs:comment "Recycling instructions."@en ;
  rdfs:domain  battery:Circularity ;
  rdfs:range   xsd:string .

battery:safetyInstructions
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "safetyInstructions"@en ;
  rdfs:comment "Safety instructions for handling, transport, and end-of-life."@en ;
  rdfs:domain  battery:Circularity ;
  rdfs:range   xsd:string .

battery:endOfLifeCollection
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "endOfLifeCollection"@en ;
  rdfs:comment "Collection points and take-back program information."@en ;
  rdfs:domain  battery:Circularity ;
  rdfs:range   xsd:string .

battery:collectionPointsLink
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "collectionPointsLink"@en ;
  rdfs:comment "URL to collection points finder."@en ;
  rdfs:domain  battery:Circularity ;
  rdfs:range   xsd:anyURI .

battery:preparationForReuseStatus
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "preparationForReuseStatus"@en ;
  rdfs:comment "Status: \'eligible\', \'assessed\', or \'not eligible\'."@en ;
  rdfs:domain  battery:Circularity ;
  rdfs:range   xsd:string .

# =============================================================================
# Datatype Properties — Compliance & Supply Chain
# =============================================================================

battery:declarationOfConformityLink
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "declarationOfConformityLink"@en ;
  rdfs:comment "URL to the EU declaration of conformity."@en ;
  rdfs:domain  battery:BatteryExtension ;
  rdfs:range   xsd:anyURI .

battery:testReportsLinks
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "testReportsLinks"@en ;
  rdfs:comment "URLs to relevant test report documents."@en ;
  rdfs:domain  battery:BatteryExtension ;
  rdfs:range   xsd:anyURI .

battery:dueDiligenceReportLink
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/battery> ;
  rdfs:label   "dueDiligenceReportLink"@en ;
  rdfs:comment "URL to the supply chain due diligence report per EU Battery Regulation Article 48."@en ;
  rdfs:domain  battery:SupplyChain ;
  rdfs:range   xsd:anyURI ;
  rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32023R1542> .

# =============================================================================
# Cardinality Constraints  [FIX H9]
# owl:minCardinality 1 added for the mandatory sub-properties of BatteryExtension.
# chemistry, performance, and materials are required per EU Battery Regulation.
# =============================================================================

battery:BatteryExtension
  rdfs:subClassOf
    [ a owl:Restriction ;
      owl:onProperty   battery:chemistry ;
      owl:minCardinality 1 ] ,
    [ a owl:Restriction ;
      owl:onProperty   battery:performance ;
      owl:minCardinality 1 ] ,
    [ a owl:Restriction ;
      owl:onProperty   battery:materials ;
      owl:minCardinality 1 ] ,
    [ a owl:Restriction ;
      owl:onProperty   battery:chemistry ;
      owl:maxCardinality 1 ] ,
    [ a owl:Restriction ;
      owl:onProperty   battery:performance ;
      owl:maxCardinality 1 ] ,
    [ a owl:Restriction ;
      owl:onProperty   battery:materials ;
      owl:maxCardinality 1 ] ,
    [ a owl:Restriction ;
      owl:onProperty   battery:durability ;
      owl:maxCardinality 1 ] ,
    [ a owl:Restriction ;
      owl:onProperty   battery:batteryStatus ;
      owl:maxCardinality 1 ] ,
    [ a owl:Restriction ;
      owl:onProperty   battery:circularity ;
      owl:maxCardinality 1 ] ,
    [ a owl:Restriction ;
      owl:onProperty   battery:supplyChain ;
      owl:maxCardinality 1 ] .
