Cells#

How to describe a cell: the design as a cell spec, each physical unit as a cell instance under it.

  • The spec is the design (the datasheet); the cell instance is one physical unit - the (spec, serial) pair makes re-registration a no-op.

  • A spec composes from parts by IRI: seven optional *_spec_id reference fields (electrodes, electrolyte, separator, housing), checked at save.

  • The as-built engineering layer (housing, tabs, construction geometry) follows one pattern: identity fields plus a property dict of quantities.

  • An instance can name the physical parts inside it, e.g. working_electrode_id points at the disc.

Define one#

A cell spec, from its datasheet#

from battinfo import CellSpec

spec = CellSpec(
    # The published flagship IRI — dereference it (Accept:
    # application/ld+json) to get this exact record.
    id="https://w3id.org/battinfo/spec/pge5-wer6-2q82-v9k0",
    manufacturer="A123",
    model="ANR26650M1-B",
    format="cylindrical",
    chemistry="Li-ion",
    positive_electrode_basis="LFP",
    properties={
        "nominal_capacity": {"value": 2.5, "unit": "Ah"},
        "nominal_voltage": {"value": 3.3, "unit": "V"},
        "mass": {"value": 76.0, "unit": "g"},
    },
    source={"type": "datasheet", "retrieved_at": 1750000000},
)
record = spec.to_record()
{
  "schema_version": "0.2.0",
  "cell_spec": {
    "id": "https://w3id.org/battinfo/spec/pge5-wer6-2q82-v9k0",
    "short_id": "pge5we",
    "identifier": "cell-spec:pge5-wer6-2q82-v9k0",
    "name": "A123 ANR26650M1-B",
    "model": "ANR26650M1-B",
    "manufacturer": {
      "type": "Organization",
      "name": "A123"
    },
    "cell_format": "cylindrical",
    "chemistry": "Li-ion",
    "positive_electrode_basis": "LFP"
  },
  "properties": {
    "nominal_capacity": {
      "value": 2.5,
      "unit": "Ah"
    },
    "nominal_voltage": {
      "value": 3.3,
      "unit": "V"
    },
    "mass": {
      "value": 76.0,
      "unit": "g"
    }
  },
  "provenance": {
    "source_type": "datasheet",
    "retrieved_at": 1750000000,
    "battinfo_version": "0.7.0"
  }
}

Emitted by record_to_jsonld, hosted-context mode.

{
  "@context": "https://w3id.org/battinfo/context/records/v1.json",
  "@type": [
    "BatteryCellSpecification",
    "schema:ProductModel",
    "schema:CreativeWork"
  ],
  "@id": "https://w3id.org/battinfo/spec/pge5-wer6-2q82-v9k0",
  "schema:identifier": "pge5-wer6-2q82-v9k0",
  "schema:name": "A123 ANR26650M1-B",
  "schema:model": "ANR26650M1-B",
  "schema:manufacturer": {
    "@type": "schema:Organization",
    "schema:name": "A123"
  },
  "schema:url": "https://www.battery-genome.org/registry/spec/pge5-wer6-2q82-v9k0",
  "isDescriptionFor": {
    "@type": [
      "BatteryCell",
      "CylindricalBattery",
      "LithiumIonBattery",
      "LithiumIonIronPhosphateBattery"
    ],
    "@id": "https://w3id.org/battinfo/spec/pge5-wer6-2q82-v9k0#described",
    "skos:prefLabel": "A123 ANR26650M1-B",
    "hasProperty": [
      {
        "@type": [
          "NominalCapacity",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalCapacity",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 2.5
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#AmpereHour"
      },
      {
        "@type": [
          "NominalVoltage",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalVoltage",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 3.3
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Volt"
      },
      {
        "@type": [
          "Mass",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "Mass",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 76.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Gram"
      }
    ],
    "hasPositiveElectrode": {
      "@type": "LithiumIronPhosphateElectrode"
    }
  },
  "schema:schemaVersion": "0.2.0",
  "schema:weight": {
    "@type": "schema:QuantitativeValue",
    "schema:value": 76.0,
    "schema:unitText": "g"
  },
  "dcterms:source": {
    "@type": "prov:Entity",
    "dcterms:type": "datasheet",
    "prov:generatedAtTime": "2025-06-15T15:06:40+00:00"
  }
}

What to notice:

  • The spec node is the datasheet: name, manufacturer, codes. The cell it describes — with its capacity, voltage and electrodes — hangs off isDescriptionFor, because a document doesn’t have a positive electrode.

  • schema:manufacturer and schema:model carry the identity that seeded the IRI.

A cell instance under that spec#

from battinfo import Cell, CellSpec

spec = CellSpec(
    id="https://w3id.org/battinfo/spec/7d9k-2m4p-8t3x-6nq5",
    manufacturer="Samsung SDI",
    model="INR21700-50E",
    format="cylindrical",
    chemistry="Li-ion",
)
cell = Cell(
    id="https://w3id.org/battinfo/cell/y9xy-kr0v-y5tn-dfj7",
    cell_spec=spec,                    # every cell links to its spec
    serial_number="LAB-2026-0001",
    batch_id="2026-W03",
    manufactured_at="2026-01-15",
    source={"type": "lab", "retrieved_at": 1750000000},
)
record = cell.to_record()
{
  "schema_version": "0.2.0",
  "cell_instance": {
    "id": "https://w3id.org/battinfo/cell/y9xy-kr0v-y5tn-dfj7",
    "short_id": "y9xykr",
    "cell_spec_id": "https://w3id.org/battinfo/spec/7d9k-2m4p-8t3x-6nq5",
    "name": "LAB-2026-0001",
    "serial_number": "LAB-2026-0001",
    "batch_id": "2026-W03",
    "manufactured_at": "2026-01-15"
  },
  "provenance": {
    "source_type": "lab",
    "retrieved_at": 1750000000,
    "battinfo_version": "0.7.0"
  }
}

Emitted by record_to_jsonld, hosted-context mode.

{
  "@context": "https://w3id.org/battinfo/context/records/v1.json",
  "@type": [
    "BatteryCell",
    "schema:IndividualProduct"
  ],
  "@id": "https://w3id.org/battinfo/cell/y9xy-kr0v-y5tn-dfj7",
  "schema:serialNumber": "LAB-2026-0001",
  "hasDescription": {
    "@id": "https://w3id.org/battinfo/spec/7d9k-2m4p-8t3x-6nq5"
  },
  "schema:isVariantOf": {
    "@id": "https://w3id.org/battinfo/spec/7d9k-2m4p-8t3x-6nq5"
  },
  "schema:identifier": {
    "@type": "schema:PropertyValue",
    "schema:propertyID": "batch_id",
    "schema:value": "2026-W03"
  },
  "schema:productionDate": "2026-01-15",
  "dcterms:source": {
    "@type": "prov:Entity",
    "dcterms:type": "lab",
    "prov:generatedAtTime": "2025-06-15T15:06:40+00:00"
  }
}

What to notice:

  • cell_spec_id is the instantiation edge; the JSON-LD states it as a reference to the spec node.

  • schema:serialNumber carries the physical identity.

Common examples#

A selection of real, validated records from the packaged examples corpus — each one click away, included from its single source under examples/. The full, living library is the registry: browse it there.

A123 ANR26650M1-B (cell-spec)

The record ships in the installed wheel — load it as a starting point:

import json
from importlib import resources

record = json.loads(
    resources.files("battinfo")
    .joinpath("data/examples/cell-spec/A123__ANR26650M1-B.json")
    .read_text(encoding="utf-8")
)
{
  "schema_version": "0.2.0",
  "cell_spec": {
    "id": "https://w3id.org/battinfo/spec/pge5-wer6-2q82-v9k0",
    "short_id": "pge5we",
    "identifier": "cell-spec:pge5-wer6-2q82-v9k0",
    "name": "A123 ANR26650M1-B",
    "model": "ANR26650M1-B",
    "manufacturer": {
      "type": "Organization",
      "name": "A123",
      "id": "https://w3id.org/battinfo/organization/8z6j-n7vw-e73w-smh7"
    },
    "brand": {
      "type": "Brand",
      "name": "A123"
    },
    "category": "battery cell",
    "cell_format": "cylindrical",
    "chemistry": "Li-ion",
    "positive_electrode_basis": "LFP",
    "negative_electrode_basis": "unknown",
    "size_code": "R26650",
    "iec_code": "IFpR26650",
    "country_of_origin": "United States",
    "year": 2012
  },
  "properties": {
    "nominal_capacity": {
      "value": 2.5,
      "unit": "Ah",
      "raw": {
        "text": "Cell Capacity (nominal/minimum) (0.5C Rate) 2.5/2.4 Ah",
        "page": 1,
        "confidence": 0.8
      }
    },
    "minimum_capacity": {
      "value": 2.4,
      "unit": "Ah",
      "raw": {
        "text": "Cell Capacity (nominal/minimum) (0.5C Rate) 2.5/2.4 Ah",
        "page": 1,
        "confidence": 0.8
      }
    },
    "nominal_voltage": {
      "value": 3.3,
      "unit": "V",
      "raw": {
        "text": "Voltage (nominal) 3.3V",
        "page": 1,
        "confidence": 0.8
      }
    },
    "internal_resistance": {
      "value": 6.0,
      "unit": "mΩ",
      "raw": {
        "text": "Internal Impedance (1kHz AC typical) 6mΩ",
        "page": 1,
        "confidence": 0.8
      }
    },
    "mass": {
      "value": 76.0,
      "unit": "g",
      "raw": {
        "text": "Cell Weight 76g",
        "page": 1,
        "confidence": 0.8
      }
    },
    "diameter": {
      "value": 26.0,
      "unit": "mm",
      "raw": {
        "text": "Cell Dimensions 26 x 65 mm",
        "page": 1,
        "confidence": 0.8
      }
    },
    "height": {
      "value": 65.0,
      "unit": "mm",
      "raw": {
        "text": "Cell Dimensions 26 x 65 mm",
        "page": 1,
        "confidence": 0.8
      }
    },
    "pulse_charging_current": {
      "value": 10.0,
      "unit": "A",
      "raw": {
        "text": "Recommended Fast Charge Method to 80% SOC 10A to 3.6V CC, 12 min",
        "page": 1,
        "confidence": 0.8
      }
    },
    "maximum_continuous_charging_current": {
      "value": 2.5,
      "unit": "A",
      "raw": {
        "text": "Recommended Standard Charge Method 2.5A to 3.6V CCCV, 60 min",
        "page": 1,
        "confidence": 0.8
      }
    },
    "maximum_continuous_discharging_current": {
      "value": 50.0,
      "unit": "A",
      "raw": {
        "text": "Maximum Continuous Discharge 50A",
        "page": 1,
        "confidence": 0.8
      }
    },
    "minimum_discharging_temperature": {
      "value": -30,
      "unit": "°C",
      "raw": {
        "text": "Operating Temperature -30°C to 55°C",
        "page": 1,
        "confidence": 0.8
      }
    },
    "maximum_discharging_temperature": {
      "value": 55,
      "unit": "°C",
      "raw": {
        "text": "Operating Temperature -30°C to 55°C",
        "page": 1,
        "confidence": 0.8
      }
    },
    "minimum_storage_temperature": {
      "value": -40,
      "unit": "°C",
      "raw": {
        "text": "Storage Temperature -40°C to 60°C",
        "page": 1,
        "confidence": 0.8
      }
    },
    "maximum_storage_temperature": {
      "value": 60,
      "unit": "°C",
      "raw": {
        "text": "Storage Temperature -40°C to 60°C",
        "page": 1,
        "confidence": 0.8
      }
    },
    "cycle_life": {
      "value_text": ">1000",
      "unit": "count",
      "raw": {
        "text": "Cycle Life at 20A Discharge, 100% DOD >1,000 cycles",
        "page": 1,
        "confidence": 0.7
      }
    }
  },
  "provenance": {
    "source_type": "datasheet",
    "source_file": "A123__ANR26650M1-B.pdf",
    "source_url": null,
    "file_hash": "b5069f48e121de3a1308af66215e7a97a1c8c6a87227da089c83e352f1ddf35e",
    "retrieved_at": 1769585584
  }
}

Emitted by record_to_jsonld, hosted-context mode.

{
  "@context": "https://w3id.org/battinfo/context/records/v1.json",
  "@type": [
    "BatteryCellSpecification",
    "schema:ProductModel",
    "schema:CreativeWork"
  ],
  "@id": "https://w3id.org/battinfo/spec/pge5-wer6-2q82-v9k0",
  "schema:identifier": "pge5-wer6-2q82-v9k0",
  "schema:name": "A123 ANR26650M1-B",
  "schema:model": "ANR26650M1-B",
  "schema:manufacturer": {
    "@type": "schema:Organization",
    "schema:name": "A123"
  },
  "schema:url": "https://www.battery-genome.org/registry/spec/pge5-wer6-2q82-v9k0",
  "isDescriptionFor": {
    "@type": [
      "BatteryCell",
      "CylindricalBattery",
      "LithiumIonBattery",
      "LithiumIonIronPhosphateBattery"
    ],
    "@id": "https://w3id.org/battinfo/spec/pge5-wer6-2q82-v9k0#described",
    "skos:prefLabel": "A123 ANR26650M1-B",
    "hasIECCode": "IFpR26650",
    "hasProperty": [
      {
        "@type": [
          "NominalCapacity",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalCapacity",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 2.5
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#AmpereHour"
      },
      {
        "@type": [
          "MinimumCapacity",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "MinimumCapacity",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 2.4
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#AmpereHour"
      },
      {
        "@type": [
          "NominalVoltage",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalVoltage",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 3.3
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Volt"
      },
      {
        "@type": [
          "InternalResistance",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "InternalResistance",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 6.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#MilliOhm"
      },
      {
        "@type": [
          "Mass",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "Mass",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 76.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Gram"
      },
      {
        "@type": [
          "Diameter",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "Diameter",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 26.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#MilliMetre"
      },
      {
        "@type": [
          "Height",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "Height",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 65.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#MilliMetre"
      },
      {
        "@type": [
          "MaximumPulseChargingCurrent",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "MaximumPulseChargingCurrent",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 10.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Ampere"
      },
      {
        "@type": [
          "MaximumContinuousChargingCurrent",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "MaximumContinuousChargingCurrent",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 2.5
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Ampere"
      },
      {
        "@type": [
          "MaximumContinuousDischargingCurrent",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "MaximumContinuousDischargingCurrent",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 50.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Ampere"
      },
      {
        "@type": [
          "MinimumDischargingTemperature",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "MinimumDischargingTemperature",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": -30
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_36a9bf69_483b_42fd_8a0c_7ac9206320bc"
      },
      {
        "@type": [
          "MaximumDischargingTemperature",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "MaximumDischargingTemperature",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 55
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_36a9bf69_483b_42fd_8a0c_7ac9206320bc"
      },
      {
        "@type": [
          "MinimumStorageTemperature",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "MinimumStorageTemperature",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": -40
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_36a9bf69_483b_42fd_8a0c_7ac9206320bc"
      },
      {
        "@type": [
          "MaximumStorageTemperature",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "MaximumStorageTemperature",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 60
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_36a9bf69_483b_42fd_8a0c_7ac9206320bc"
      },
      {
        "@type": [
          "CycleLife",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "CycleLife",
        "hasStringValue": ">1000",
        "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
      }
    ],
    "hasPositiveElectrode": {
      "@type": "LithiumIronPhosphateElectrode"
    }
  },
  "schema:size": "R26650",
  "schema:productID": "IFpR26650",
  "schema:brand": {
    "@type": "schema:Brand",
    "schema:name": "A123"
  },
  "schema:category": "battery cell",
  "schema:countryOfOrigin": {
    "@type": "schema:Country",
    "schema:name": "United States"
  },
  "schema:releaseDate": "2012-01-01",
  "schema:schemaVersion": "0.2.0",
  "schema:weight": {
    "@type": "schema:QuantitativeValue",
    "schema:value": 76.0,
    "schema:unitText": "g"
  },
  "schema:height": {
    "@type": "schema:QuantitativeValue",
    "schema:value": 65.0,
    "schema:unitText": "mm"
  },
  "schema:width": {
    "@type": "schema:QuantitativeValue",
    "schema:value": 26.0,
    "schema:unitText": "mm"
  },
  "schema:depth": {
    "@type": "schema:QuantitativeValue",
    "schema:value": 26.0,
    "schema:unitText": "mm"
  },
  "dcterms:source": {
    "@type": "prov:Entity",
    "dcterms:type": "datasheet",
    "prov:generatedAtTime": "2026-01-28T07:33:04+00:00"
  }
}
ExampleLab CYL-LFP-18650 (cell-spec)

The record ships in the installed wheel — load it as a starting point:

import json
from importlib import resources

record = json.loads(
    resources.files("battinfo")
    .joinpath("data/examples/cell-spec/research/cylindrical-detailed.example.json")
    .read_text(encoding="utf-8")
)
{
  "schema_version": "0.2.0",
  "cell_spec": {
    "id": "https://w3id.org/battinfo/spec/2d5n-8r4k-3p7t-6v9m",
    "name": "ExampleLab CYL-LFP-18650",
    "manufacturer": {
      "type": "Organization",
      "name": "ExampleLab"
    },
    "model": "CYL-LFP-18650",
    "cell_format": "cylindrical",
    "chemistry": "Li-ion",
    "positive_electrode_basis": "LFP",
    "negative_electrode_basis": "graphite",
    "size_code": "18650"
  },
  "properties": {
    "nominal_capacity": {
      "value": 1.5,
      "unit": "Ah"
    },
    "nominal_voltage": {
      "value": 3.2,
      "unit": "V"
    }
  },
  "construction": {
    "assembly_type": "wound",
    "layering": "multilayer",
    "layer_count": 32,
    "comment": "Jelly-roll cylindrical example fixture."
  },
  "positive_electrode": {
    "coating": {
      "component": {
        "active_material": [
          {
            "name": "LFP",
            "property": {
              "mass_fraction": {
                "value": 0.94,
                "unit": "1"
              }
            }
          }
        ],
        "binder": [
          {
            "name": "PVDF",
            "property": {
              "mass_fraction": {
                "value": 0.03,
                "unit": "1"
              }
            }
          }
        ],
        "additive": [
          {
            "name": "Carbon black",
            "property": {
              "mass_fraction": {
                "value": 0.03,
                "unit": "1"
              }
            }
          }
        ]
      },
      "property": {
        "loading": {
          "value": 17.5,
          "unit": "mg/cm^2"
        },
        "thickness": {
          "value": 64.0,
          "unit": "um"
        }
      }
    },
    "current_collector": {
      "name": "Al foil",
      "property": {
        "thickness": {
          "value": 15.0,
          "unit": "um"
        }
      }
    }
  },
  "negative_electrode": {
    "coating": {
      "component": {
        "active_material": [
          {
            "name": "Graphite",
            "property": {
              "mass_fraction": {
                "value": 0.95,
                "unit": "1"
              }
            }
          }
        ],
        "binder": [
          {
            "name": "CMC/SBR",
            "property": {
              "mass_fraction": {
                "value": 0.05,
                "unit": "1"
              }
            }
          }
        ]
      },
      "property": {
        "thickness": {
          "value": 72.0,
          "unit": "um"
        }
      }
    },
    "current_collector": {
      "name": "Cu foil",
      "property": {
        "thickness": {
          "value": 10.0,
          "unit": "um"
        }
      }
    }
  },
  "electrolyte": {
    "family": "organic",
    "solvent_mixture": {
      "component": [
        {
          "name": "EC",
          "property": {
            "volume_fraction": {
              "value": 0.3,
              "unit": "1"
            }
          }
        },
        {
          "name": "EMC",
          "property": {
            "volume_fraction": {
              "value": 0.7,
              "unit": "1"
            }
          }
        }
      ]
    },
    "salt": {
      "name": "LiPF6",
      "property": {
        "concentration": {
          "value": 1.0,
          "unit": "mol/L"
        }
      }
    },
    "additive": [
      {
        "name": "VC",
        "property": {
          "volume_fraction": {
            "value": 0.02,
            "unit": "1"
          }
        }
      }
    ]
  },
  "separator": {
    "material": "PE/PP trilayer",
    "property": {
      "thickness": {
        "value": 18.0,
        "unit": "um"
      }
    }
  },
  "provenance": {
    "source_type": "manual",
    "source_name": "BattINFO example fixtures",
    "source_file": "examples/cell-descriptors/cylindrical-detailed.example.json",
    "retrieved_at": 1773201600,
    "workflow_version": "example-fixtures-0.1",
    "comment": "Canonical detailed cylindrical fixture."
  },
  "notes": [
    "Detailed cylindrical descriptor for validation coverage.",
    "Example fixture for detailed cylindrical-cell descriptions."
  ]
}

Emitted by record_to_jsonld, hosted-context mode.

{
  "@context": "https://w3id.org/battinfo/context/records/v1.json",
  "@type": [
    "BatteryCellSpecification",
    "schema:ProductModel",
    "schema:CreativeWork"
  ],
  "@id": "https://w3id.org/battinfo/spec/2d5n-8r4k-3p7t-6v9m",
  "schema:identifier": "2d5n-8r4k-3p7t-6v9m",
  "schema:name": "ExampleLab CYL-LFP-18650",
  "schema:model": "CYL-LFP-18650",
  "schema:manufacturer": {
    "@type": "schema:Organization",
    "schema:name": "ExampleLab"
  },
  "schema:url": "https://www.battery-genome.org/registry/spec/2d5n-8r4k-3p7t-6v9m",
  "isDescriptionFor": {
    "@type": [
      "BatteryCell",
      "CylindricalBattery",
      "LithiumIonBattery",
      "LithiumIonIronPhosphateBattery",
      "LithiumIonGraphiteBattery"
    ],
    "@id": "https://w3id.org/battinfo/spec/2d5n-8r4k-3p7t-6v9m#described",
    "skos:prefLabel": "ExampleLab CYL-LFP-18650",
    "hasProperty": [
      {
        "@type": [
          "NominalCapacity",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalCapacity",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 1.5
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#AmpereHour"
      },
      {
        "@type": [
          "NominalVoltage",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalVoltage",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 3.2
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Volt"
      }
    ],
    "hasPositiveElectrode": {
      "hasCoating": {
        "@type": "ElectrodeCoating",
        "hasActiveMaterial": {
          "@type": [
            "LithiumIronPhosphate",
            "ActiveMaterial"
          ],
          "schema:name": "LFP",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.94
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasBinder": {
          "@type": [
            "PolyvinylideneFluoride",
            "Binder"
          ],
          "schema:name": "PVDF",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.03
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasConductiveAdditive": {
          "@type": [
            "CarbonBlack",
            "ConductiveAdditive"
          ],
          "schema:name": "Carbon black",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.03
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasProperty": [
          {
            "@type": [
              "ActiveMassLoading",
              "ConventionalProperty"
            ],
            "skos:prefLabel": "ActiveMassLoading",
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 17.5
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#MilliGramPerSquareCentiMetre"
          },
          {
            "@type": [
              "CalenderedCoatingThickness",
              "ConventionalProperty"
            ],
            "skos:prefLabel": "CalenderedCoatingThickness",
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 64.0
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
          }
        ]
      },
      "hasCurrentCollector": {
        "@type": [
          "CurrentCollector",
          "Foil"
        ],
        "schema:name": "Al foil",
        "hasProperty": {
          "@type": [
            "Thickness",
            "ConventionalProperty"
          ],
          "skos:prefLabel": "Thickness",
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 15.0
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
        }
      },
      "@type": "LithiumIronPhosphateElectrode"
    },
    "hasNegativeElectrode": {
      "hasCoating": {
        "@type": "ElectrodeCoating",
        "hasActiveMaterial": {
          "@type": [
            "Graphite",
            "ActiveMaterial"
          ],
          "schema:name": "Graphite",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.95
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasBinder": {
          "@type": "Binder",
          "schema:name": "CMC/SBR",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.05
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasProperty": {
          "@type": [
            "CalenderedCoatingThickness",
            "ConventionalProperty"
          ],
          "skos:prefLabel": "CalenderedCoatingThickness",
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 72.0
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
        }
      },
      "hasCurrentCollector": {
        "@type": [
          "CurrentCollector",
          "Foil"
        ],
        "schema:name": "Cu foil",
        "hasProperty": {
          "@type": [
            "Thickness",
            "ConventionalProperty"
          ],
          "skos:prefLabel": "Thickness",
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 10.0
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
        }
      },
      "@type": "GraphiteElectrode"
    },
    "hasElectrolyte": {
      "@type": "OrganicElectrolyte",
      "hasSolute": {
        "@type": [
          "LithiumHexafluorophosphate",
          "Solute"
        ],
        "schema:name": "LiPF6",
        "hasProperty": {
          "@type": [
            "AmountConcentration",
            "ConventionalProperty"
          ],
          "skos:prefLabel": "AmountConcentration",
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 1.0
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#MolePerLitre"
        }
      },
      "hasSolvent": [
        {
          "@type": [
            "EthyleneCarbonate",
            "Solvent"
          ],
          "schema:name": "EC",
          "hasProperty": {
            "@type": [
              "VolumeFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.3
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        {
          "@type": [
            "EthylMethylCarbonate",
            "Solvent"
          ],
          "schema:name": "EMC",
          "hasProperty": {
            "@type": [
              "VolumeFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.7
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        }
      ],
      "hasAdditive": {
        "@type": [
          "VinyleneCarbonate",
          "ElectrolyteAdditive"
        ],
        "schema:name": "VC",
        "hasProperty": {
          "@type": [
            "VolumeFraction",
            "ConventionalProperty"
          ],
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 0.02
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
        }
      }
    },
    "hasSeparator": {
      "@type": "Separator",
      "schema:name": "PE/PP trilayer",
      "hasProperty": {
        "@type": [
          "Thickness",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "Thickness",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 18.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
      }
    },
    "schema:additionalProperty": [
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.assembly_type",
        "schema:name": "Assembly Type",
        "schema:value": "wound"
      },
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.layering",
        "schema:name": "Layering",
        "schema:value": "multilayer"
      },
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.layer_count",
        "schema:name": "Layer Count",
        "schema:value": 32
      },
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.comment",
        "schema:name": "Construction Comment",
        "schema:value": "Jelly-roll cylindrical example fixture."
      }
    ]
  },
  "schema:size": "18650",
  "schema:schemaVersion": "0.2.0",
  "dcterms:source": {
    "@type": "prov:Entity",
    "dcterms:type": "manual",
    "prov:generatedAtTime": "2026-03-11T04:00:00+00:00"
  }
}
ExampleLab PRISM-LFP-020 (cell-spec)

The record ships in the installed wheel — load it as a starting point:

import json
from importlib import resources

record = json.loads(
    resources.files("battinfo")
    .joinpath("data/examples/cell-spec/research/prismatic-detailed.example.json")
    .read_text(encoding="utf-8")
)
{
  "schema_version": "0.2.0",
  "cell_spec": {
    "id": "https://w3id.org/battinfo/spec/5j9r-4k7p-2m8t-6v3q",
    "name": "ExampleLab PRISM-LFP-020",
    "manufacturer": {
      "type": "Organization",
      "name": "ExampleLab"
    },
    "model": "PRISM-LFP-020",
    "cell_format": "prismatic",
    "chemistry": "Li-ion",
    "positive_electrode_basis": "LFP",
    "negative_electrode_basis": "graphite"
  },
  "properties": {
    "nominal_capacity": {
      "value": 20.0,
      "unit": "Ah"
    },
    "nominal_voltage": {
      "value": 3.2,
      "unit": "V"
    }
  },
  "construction": {
    "assembly_type": "stacked",
    "layering": "multilayer",
    "layer_count": 24,
    "comment": "Stacked prismatic example fixture."
  },
  "positive_electrode": {
    "coating": {
      "component": {
        "active_material": [
          {
            "name": "LFP",
            "property": {
              "mass_fraction": {
                "value": 0.94,
                "unit": "1"
              }
            }
          }
        ],
        "binder": [
          {
            "name": "PVDF",
            "property": {
              "mass_fraction": {
                "value": 0.03,
                "unit": "1"
              }
            }
          }
        ],
        "additive": [
          {
            "name": "Carbon black",
            "property": {
              "mass_fraction": {
                "value": 0.03,
                "unit": "1"
              }
            }
          }
        ]
      },
      "property": {
        "loading": {
          "value": 24.0,
          "unit": "mg/cm^2"
        }
      }
    },
    "current_collector": {
      "name": "Al foil"
    }
  },
  "negative_electrode": {
    "coating": {
      "component": {
        "active_material": [
          {
            "name": "Graphite",
            "property": {
              "mass_fraction": {
                "value": 0.95,
                "unit": "1"
              }
            }
          }
        ],
        "binder": [
          {
            "name": "CMC/SBR",
            "property": {
              "mass_fraction": {
                "value": 0.05,
                "unit": "1"
              }
            }
          }
        ]
      },
      "property": {
        "loading": {
          "value": 13.0,
          "unit": "mg/cm^2"
        }
      }
    },
    "current_collector": {
      "name": "Cu foil"
    }
  },
  "electrolyte": {
    "family": "organic",
    "solvent_mixture": {
      "component": [
        {
          "name": "EC",
          "property": {
            "volume_fraction": {
              "value": 0.25,
              "unit": "1"
            }
          }
        },
        {
          "name": "EMC",
          "property": {
            "volume_fraction": {
              "value": 0.75,
              "unit": "1"
            }
          }
        }
      ]
    },
    "salt": {
      "name": "LiPF6",
      "property": {
        "concentration": {
          "value": 1.0,
          "unit": "mol/L"
        }
      }
    },
    "additive": [
      {
        "name": "FEC",
        "property": {
          "volume_fraction": {
            "value": 0.03,
            "unit": "1"
          }
        }
      }
    ]
  },
  "separator": {
    "material": "Ceramic-coated PP",
    "property": {
      "thickness": {
        "value": 18.0,
        "unit": "um"
      }
    }
  },
  "provenance": {
    "source_type": "manual",
    "source_name": "BattINFO example fixtures",
    "source_file": "examples/cell-descriptors/prismatic-detailed.example.json",
    "retrieved_at": 1773201600,
    "workflow_version": "example-fixtures-0.1",
    "comment": "Canonical detailed prismatic fixture."
  },
  "notes": [
    "Detailed prismatic descriptor for validation coverage.",
    "Example fixture for detailed prismatic-cell descriptions."
  ]
}

Emitted by record_to_jsonld, hosted-context mode.

{
  "@context": "https://w3id.org/battinfo/context/records/v1.json",
  "@type": [
    "BatteryCellSpecification",
    "schema:ProductModel",
    "schema:CreativeWork"
  ],
  "@id": "https://w3id.org/battinfo/spec/5j9r-4k7p-2m8t-6v3q",
  "schema:identifier": "5j9r-4k7p-2m8t-6v3q",
  "schema:name": "ExampleLab PRISM-LFP-020",
  "schema:model": "PRISM-LFP-020",
  "schema:manufacturer": {
    "@type": "schema:Organization",
    "schema:name": "ExampleLab"
  },
  "schema:url": "https://www.battery-genome.org/registry/spec/5j9r-4k7p-2m8t-6v3q",
  "isDescriptionFor": {
    "@type": [
      "BatteryCell",
      "PrismaticBattery",
      "LithiumIonBattery",
      "LithiumIonIronPhosphateBattery",
      "LithiumIonGraphiteBattery"
    ],
    "@id": "https://w3id.org/battinfo/spec/5j9r-4k7p-2m8t-6v3q#described",
    "skos:prefLabel": "ExampleLab PRISM-LFP-020",
    "hasProperty": [
      {
        "@type": [
          "NominalCapacity",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalCapacity",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 20.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#AmpereHour"
      },
      {
        "@type": [
          "NominalVoltage",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalVoltage",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 3.2
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Volt"
      }
    ],
    "hasPositiveElectrode": {
      "hasCoating": {
        "@type": "ElectrodeCoating",
        "hasActiveMaterial": {
          "@type": [
            "LithiumIronPhosphate",
            "ActiveMaterial"
          ],
          "schema:name": "LFP",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.94
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasBinder": {
          "@type": [
            "PolyvinylideneFluoride",
            "Binder"
          ],
          "schema:name": "PVDF",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.03
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasConductiveAdditive": {
          "@type": [
            "CarbonBlack",
            "ConductiveAdditive"
          ],
          "schema:name": "Carbon black",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.03
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasProperty": {
          "@type": [
            "ActiveMassLoading",
            "ConventionalProperty"
          ],
          "skos:prefLabel": "ActiveMassLoading",
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 24.0
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#MilliGramPerSquareCentiMetre"
        }
      },
      "hasCurrentCollector": {
        "@type": [
          "CurrentCollector",
          "Foil"
        ],
        "schema:name": "Al foil"
      },
      "@type": "LithiumIronPhosphateElectrode"
    },
    "hasNegativeElectrode": {
      "hasCoating": {
        "@type": "ElectrodeCoating",
        "hasActiveMaterial": {
          "@type": [
            "Graphite",
            "ActiveMaterial"
          ],
          "schema:name": "Graphite",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.95
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasBinder": {
          "@type": "Binder",
          "schema:name": "CMC/SBR",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.05
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasProperty": {
          "@type": [
            "ActiveMassLoading",
            "ConventionalProperty"
          ],
          "skos:prefLabel": "ActiveMassLoading",
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 13.0
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#MilliGramPerSquareCentiMetre"
        }
      },
      "hasCurrentCollector": {
        "@type": [
          "CurrentCollector",
          "Foil"
        ],
        "schema:name": "Cu foil"
      },
      "@type": "GraphiteElectrode"
    },
    "hasElectrolyte": {
      "@type": "OrganicElectrolyte",
      "hasSolute": {
        "@type": [
          "LithiumHexafluorophosphate",
          "Solute"
        ],
        "schema:name": "LiPF6",
        "hasProperty": {
          "@type": [
            "AmountConcentration",
            "ConventionalProperty"
          ],
          "skos:prefLabel": "AmountConcentration",
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 1.0
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#MolePerLitre"
        }
      },
      "hasSolvent": [
        {
          "@type": [
            "EthyleneCarbonate",
            "Solvent"
          ],
          "schema:name": "EC",
          "hasProperty": {
            "@type": [
              "VolumeFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.25
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        {
          "@type": [
            "EthylMethylCarbonate",
            "Solvent"
          ],
          "schema:name": "EMC",
          "hasProperty": {
            "@type": [
              "VolumeFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.75
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        }
      ],
      "hasAdditive": {
        "@type": [
          "FluoroethyleneCarbonate",
          "ElectrolyteAdditive"
        ],
        "schema:name": "FEC",
        "hasProperty": {
          "@type": [
            "VolumeFraction",
            "ConventionalProperty"
          ],
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 0.03
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
        }
      }
    },
    "hasSeparator": {
      "@type": "Separator",
      "schema:name": "Ceramic-coated PP",
      "hasProperty": {
        "@type": [
          "Thickness",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "Thickness",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 18.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
      }
    },
    "schema:additionalProperty": [
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.assembly_type",
        "schema:name": "Assembly Type",
        "schema:value": "stacked"
      },
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.layering",
        "schema:name": "Layering",
        "schema:value": "multilayer"
      },
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.layer_count",
        "schema:name": "Layer Count",
        "schema:value": 24
      },
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.comment",
        "schema:name": "Construction Comment",
        "schema:value": "Stacked prismatic example fixture."
      }
    ]
  },
  "schema:schemaVersion": "0.2.0",
  "dcterms:source": {
    "@type": "prov:Entity",
    "dcterms:type": "manual",
    "prov:generatedAtTime": "2026-03-11T04:00:00+00:00"
  }
}
ExampleLab POUCH-ML-LFP-018 (cell-spec)

The record ships in the installed wheel — load it as a starting point:

import json
from importlib import resources

record = json.loads(
    resources.files("battinfo")
    .joinpath("data/examples/cell-spec/research/pouch-multilayer-detailed.example.json")
    .read_text(encoding="utf-8")
)
{
  "schema_version": "0.2.0",
  "cell_spec": {
    "id": "https://w3id.org/battinfo/spec/4h8p-3t6m-9q2k-7v5r",
    "name": "ExampleLab POUCH-ML-LFP-018",
    "manufacturer": {
      "type": "Organization",
      "name": "ExampleLab"
    },
    "model": "POUCH-ML-LFP-018",
    "cell_format": "pouch",
    "chemistry": "Li-ion",
    "positive_electrode_basis": "LFP",
    "negative_electrode_basis": "graphite"
  },
  "properties": {
    "nominal_capacity": {
      "value": 5.0,
      "unit": "Ah"
    },
    "nominal_voltage": {
      "value": 3.2,
      "unit": "V"
    }
  },
  "construction": {
    "assembly_type": "stacked",
    "layering": "multilayer",
    "layer_count": 18,
    "comment": "Multilayer pouch example fixture."
  },
  "positive_electrode": {
    "coating": {
      "component": {
        "active_material": [
          {
            "name": "LFP",
            "property": {
              "mass_fraction": {
                "value": 0.94,
                "unit": "1"
              }
            }
          }
        ],
        "binder": [
          {
            "name": "PVDF",
            "property": {
              "mass_fraction": {
                "value": 0.03,
                "unit": "1"
              }
            }
          }
        ],
        "additive": [
          {
            "name": "Carbon black",
            "property": {
              "mass_fraction": {
                "value": 0.03,
                "unit": "1"
              }
            }
          }
        ]
      },
      "property": {
        "loading": {
          "value": 21.0,
          "unit": "mg/cm^2"
        }
      }
    },
    "current_collector": {
      "name": "Al foil"
    }
  },
  "negative_electrode": {
    "coating": {
      "component": {
        "active_material": [
          {
            "name": "Graphite",
            "property": {
              "mass_fraction": {
                "value": 0.95,
                "unit": "1"
              }
            }
          }
        ],
        "binder": [
          {
            "name": "CMC/SBR",
            "property": {
              "mass_fraction": {
                "value": 0.05,
                "unit": "1"
              }
            }
          }
        ]
      },
      "property": {
        "loading": {
          "value": 12.0,
          "unit": "mg/cm^2"
        }
      }
    },
    "current_collector": {
      "name": "Cu foil"
    }
  },
  "electrolyte": {
    "family": "organic",
    "solvent_mixture": {
      "component": [
        {
          "name": "EC",
          "property": {
            "volume_fraction": {
              "value": 0.3,
              "unit": "1"
            }
          }
        },
        {
          "name": "EMC",
          "property": {
            "volume_fraction": {
              "value": 0.7,
              "unit": "1"
            }
          }
        }
      ]
    },
    "salt": {
      "name": "LiPF6",
      "property": {
        "concentration": {
          "value": 1.1,
          "unit": "mol/L"
        }
      }
    },
    "additive": [
      {
        "name": "VC",
        "property": {
          "volume_fraction": {
            "value": 0.02,
            "unit": "1"
          }
        }
      }
    ]
  },
  "separator": {
    "material": "Ceramic-coated PE",
    "property": {
      "thickness": {
        "value": 20.0,
        "unit": "um"
      }
    }
  },
  "provenance": {
    "source_type": "manual",
    "source_name": "BattINFO example fixtures",
    "source_file": "examples/cell-descriptors/pouch-multilayer-detailed.example.json",
    "retrieved_at": 1773201600,
    "workflow_version": "example-fixtures-0.1",
    "comment": "Canonical detailed multilayer pouch fixture."
  },
  "notes": [
    "Detailed multilayer pouch descriptor for validation coverage.",
    "Example fixture for detailed multilayer pouch-cell descriptions."
  ]
}

Emitted by record_to_jsonld, hosted-context mode.

{
  "@context": "https://w3id.org/battinfo/context/records/v1.json",
  "@type": [
    "BatteryCellSpecification",
    "schema:ProductModel",
    "schema:CreativeWork"
  ],
  "@id": "https://w3id.org/battinfo/spec/4h8p-3t6m-9q2k-7v5r",
  "schema:identifier": "4h8p-3t6m-9q2k-7v5r",
  "schema:name": "ExampleLab POUCH-ML-LFP-018",
  "schema:model": "POUCH-ML-LFP-018",
  "schema:manufacturer": {
    "@type": "schema:Organization",
    "schema:name": "ExampleLab"
  },
  "schema:url": "https://www.battery-genome.org/registry/spec/4h8p-3t6m-9q2k-7v5r",
  "isDescriptionFor": {
    "@type": [
      "BatteryCell",
      "PouchCell",
      "LithiumIonBattery",
      "LithiumIonIronPhosphateBattery",
      "LithiumIonGraphiteBattery"
    ],
    "@id": "https://w3id.org/battinfo/spec/4h8p-3t6m-9q2k-7v5r#described",
    "skos:prefLabel": "ExampleLab POUCH-ML-LFP-018",
    "hasProperty": [
      {
        "@type": [
          "NominalCapacity",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalCapacity",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 5.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#AmpereHour"
      },
      {
        "@type": [
          "NominalVoltage",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalVoltage",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 3.2
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Volt"
      }
    ],
    "hasPositiveElectrode": {
      "hasCoating": {
        "@type": "ElectrodeCoating",
        "hasActiveMaterial": {
          "@type": [
            "LithiumIronPhosphate",
            "ActiveMaterial"
          ],
          "schema:name": "LFP",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.94
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasBinder": {
          "@type": [
            "PolyvinylideneFluoride",
            "Binder"
          ],
          "schema:name": "PVDF",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.03
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasConductiveAdditive": {
          "@type": [
            "CarbonBlack",
            "ConductiveAdditive"
          ],
          "schema:name": "Carbon black",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.03
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasProperty": {
          "@type": [
            "ActiveMassLoading",
            "ConventionalProperty"
          ],
          "skos:prefLabel": "ActiveMassLoading",
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 21.0
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#MilliGramPerSquareCentiMetre"
        }
      },
      "hasCurrentCollector": {
        "@type": [
          "CurrentCollector",
          "Foil"
        ],
        "schema:name": "Al foil"
      },
      "@type": "LithiumIronPhosphateElectrode"
    },
    "hasNegativeElectrode": {
      "hasCoating": {
        "@type": "ElectrodeCoating",
        "hasActiveMaterial": {
          "@type": [
            "Graphite",
            "ActiveMaterial"
          ],
          "schema:name": "Graphite",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.95
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasBinder": {
          "@type": "Binder",
          "schema:name": "CMC/SBR",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.05
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasProperty": {
          "@type": [
            "ActiveMassLoading",
            "ConventionalProperty"
          ],
          "skos:prefLabel": "ActiveMassLoading",
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 12.0
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#MilliGramPerSquareCentiMetre"
        }
      },
      "hasCurrentCollector": {
        "@type": [
          "CurrentCollector",
          "Foil"
        ],
        "schema:name": "Cu foil"
      },
      "@type": "GraphiteElectrode"
    },
    "hasElectrolyte": {
      "@type": "OrganicElectrolyte",
      "hasSolute": {
        "@type": [
          "LithiumHexafluorophosphate",
          "Solute"
        ],
        "schema:name": "LiPF6",
        "hasProperty": {
          "@type": [
            "AmountConcentration",
            "ConventionalProperty"
          ],
          "skos:prefLabel": "AmountConcentration",
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 1.1
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#MolePerLitre"
        }
      },
      "hasSolvent": [
        {
          "@type": [
            "EthyleneCarbonate",
            "Solvent"
          ],
          "schema:name": "EC",
          "hasProperty": {
            "@type": [
              "VolumeFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.3
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        {
          "@type": [
            "EthylMethylCarbonate",
            "Solvent"
          ],
          "schema:name": "EMC",
          "hasProperty": {
            "@type": [
              "VolumeFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.7
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        }
      ],
      "hasAdditive": {
        "@type": [
          "VinyleneCarbonate",
          "ElectrolyteAdditive"
        ],
        "schema:name": "VC",
        "hasProperty": {
          "@type": [
            "VolumeFraction",
            "ConventionalProperty"
          ],
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 0.02
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
        }
      }
    },
    "hasSeparator": {
      "@type": "Separator",
      "schema:name": "Ceramic-coated PE",
      "hasProperty": {
        "@type": [
          "Thickness",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "Thickness",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 20.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
      }
    },
    "schema:additionalProperty": [
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.assembly_type",
        "schema:name": "Assembly Type",
        "schema:value": "stacked"
      },
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.layering",
        "schema:name": "Layering",
        "schema:value": "multilayer"
      },
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.layer_count",
        "schema:name": "Layer Count",
        "schema:value": 18
      },
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.comment",
        "schema:name": "Construction Comment",
        "schema:value": "Multilayer pouch example fixture."
      }
    ]
  },
  "schema:schemaVersion": "0.2.0",
  "dcterms:source": {
    "@type": "prov:Entity",
    "dcterms:type": "manual",
    "prov:generatedAtTime": "2026-03-11T04:00:00+00:00"
  }
}
ExampleLab COIN-LFP-2032 (cell-spec)

The record ships in the installed wheel — load it as a starting point:

import json
from importlib import resources

record = json.loads(
    resources.files("battinfo")
    .joinpath("data/examples/cell-spec/research/coin-detailed.example.json")
    .read_text(encoding="utf-8")
)
{
  "schema_version": "0.2.0",
  "cell_spec": {
    "id": "https://w3id.org/battinfo/spec/1c4m-7p9q-2k6t-8v3r",
    "name": "ExampleLab COIN-LFP-2032",
    "manufacturer": {
      "type": "Organization",
      "name": "ExampleLab"
    },
    "model": "COIN-LFP-2032",
    "cell_format": "coin",
    "chemistry": "Li-ion",
    "positive_electrode_basis": "LFP",
    "negative_electrode_basis": "graphite",
    "size_code": "2032"
  },
  "properties": {
    "nominal_capacity": {
      "value": 0.04,
      "unit": "Ah"
    },
    "nominal_voltage": {
      "value": 3.2,
      "unit": "V"
    }
  },
  "construction": {
    "assembly_type": "stacked",
    "layering": "not_applicable",
    "comment": "Coin-cell example fixture with stacked pellet-style components."
  },
  "positive_electrode": {
    "coating": {
      "component": {
        "active_material": [
          {
            "name": "LFP",
            "property": {
              "mass_fraction": {
                "value": 0.92,
                "unit": "1"
              }
            }
          }
        ],
        "binder": [
          {
            "name": "PVDF",
            "property": {
              "mass_fraction": {
                "value": 0.04,
                "unit": "1"
              }
            }
          }
        ],
        "additive": [
          {
            "name": "Carbon black",
            "property": {
              "mass_fraction": {
                "value": 0.04,
                "unit": "1"
              }
            }
          }
        ]
      },
      "property": {
        "thickness": {
          "value": 55.0,
          "unit": "um"
        }
      }
    },
    "current_collector": {
      "name": "Al foil"
    }
  },
  "negative_electrode": {
    "coating": {
      "component": {
        "active_material": [
          {
            "name": "Graphite",
            "property": {
              "mass_fraction": {
                "value": 0.95,
                "unit": "1"
              }
            }
          }
        ],
        "binder": [
          {
            "name": "CMC/SBR",
            "property": {
              "mass_fraction": {
                "value": 0.05,
                "unit": "1"
              }
            }
          }
        ]
      },
      "property": {
        "thickness": {
          "value": 48.0,
          "unit": "um"
        }
      }
    },
    "current_collector": {
      "name": "Cu foil"
    }
  },
  "electrolyte": {
    "family": "organic",
    "solvent_mixture": {
      "component": [
        {
          "name": "EC",
          "property": {
            "volume_fraction": {
              "value": 0.5,
              "unit": "1"
            }
          }
        },
        {
          "name": "DEC",
          "property": {
            "volume_fraction": {
              "value": 0.5,
              "unit": "1"
            }
          }
        }
      ]
    },
    "salt": {
      "name": "LiPF6",
      "property": {
        "concentration": {
          "value": 1.0,
          "unit": "mol/L"
        }
      }
    }
  },
  "separator": {
    "material": "PP membrane",
    "property": {
      "thickness": {
        "value": 20.0,
        "unit": "um"
      }
    }
  },
  "provenance": {
    "source_type": "manual",
    "source_name": "BattINFO example fixtures",
    "source_file": "examples/cell-descriptors/coin-detailed.example.json",
    "retrieved_at": 1773201600,
    "workflow_version": "example-fixtures-0.1",
    "comment": "Canonical detailed coin-cell fixture."
  },
  "notes": [
    "Detailed coin-cell descriptor for validation coverage.",
    "Example fixture for detailed coin-cell descriptions."
  ]
}

Emitted by record_to_jsonld, hosted-context mode.

{
  "@context": "https://w3id.org/battinfo/context/records/v1.json",
  "@type": [
    "BatteryCellSpecification",
    "schema:ProductModel",
    "schema:CreativeWork"
  ],
  "@id": "https://w3id.org/battinfo/spec/1c4m-7p9q-2k6t-8v3r",
  "schema:identifier": "1c4m-7p9q-2k6t-8v3r",
  "schema:name": "ExampleLab COIN-LFP-2032",
  "schema:model": "COIN-LFP-2032",
  "schema:manufacturer": {
    "@type": "schema:Organization",
    "schema:name": "ExampleLab"
  },
  "schema:url": "https://www.battery-genome.org/registry/spec/1c4m-7p9q-2k6t-8v3r",
  "isDescriptionFor": {
    "@type": [
      "BatteryCell",
      "CoinCell",
      "LithiumIonBattery",
      "LithiumIonIronPhosphateBattery",
      "LithiumIonGraphiteBattery"
    ],
    "@id": "https://w3id.org/battinfo/spec/1c4m-7p9q-2k6t-8v3r#described",
    "skos:prefLabel": "ExampleLab COIN-LFP-2032",
    "hasProperty": [
      {
        "@type": [
          "NominalCapacity",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalCapacity",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 0.04
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#AmpereHour"
      },
      {
        "@type": [
          "NominalVoltage",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalVoltage",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 3.2
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Volt"
      }
    ],
    "hasPositiveElectrode": {
      "hasCoating": {
        "@type": "ElectrodeCoating",
        "hasActiveMaterial": {
          "@type": [
            "LithiumIronPhosphate",
            "ActiveMaterial"
          ],
          "schema:name": "LFP",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.92
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasBinder": {
          "@type": [
            "PolyvinylideneFluoride",
            "Binder"
          ],
          "schema:name": "PVDF",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.04
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasConductiveAdditive": {
          "@type": [
            "CarbonBlack",
            "ConductiveAdditive"
          ],
          "schema:name": "Carbon black",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.04
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasProperty": {
          "@type": [
            "CalenderedCoatingThickness",
            "ConventionalProperty"
          ],
          "skos:prefLabel": "CalenderedCoatingThickness",
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 55.0
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
        }
      },
      "hasCurrentCollector": {
        "@type": [
          "CurrentCollector",
          "Foil"
        ],
        "schema:name": "Al foil"
      },
      "@type": "LithiumIronPhosphateElectrode"
    },
    "hasNegativeElectrode": {
      "hasCoating": {
        "@type": "ElectrodeCoating",
        "hasActiveMaterial": {
          "@type": [
            "Graphite",
            "ActiveMaterial"
          ],
          "schema:name": "Graphite",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.95
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasBinder": {
          "@type": "Binder",
          "schema:name": "CMC/SBR",
          "hasProperty": {
            "@type": [
              "MassFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.05
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        "hasProperty": {
          "@type": [
            "CalenderedCoatingThickness",
            "ConventionalProperty"
          ],
          "skos:prefLabel": "CalenderedCoatingThickness",
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 48.0
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
        }
      },
      "hasCurrentCollector": {
        "@type": [
          "CurrentCollector",
          "Foil"
        ],
        "schema:name": "Cu foil"
      },
      "@type": "GraphiteElectrode"
    },
    "hasElectrolyte": {
      "@type": "OrganicElectrolyte",
      "hasSolute": {
        "@type": [
          "LithiumHexafluorophosphate",
          "Solute"
        ],
        "schema:name": "LiPF6",
        "hasProperty": {
          "@type": [
            "AmountConcentration",
            "ConventionalProperty"
          ],
          "skos:prefLabel": "AmountConcentration",
          "hasNumericalPart": {
            "@type": "RealData",
            "hasNumberValue": 1.0
          },
          "hasMeasurementUnit": "https://w3id.org/emmo#MolePerLitre"
        }
      },
      "hasSolvent": [
        {
          "@type": [
            "EthyleneCarbonate",
            "Solvent"
          ],
          "schema:name": "EC",
          "hasProperty": {
            "@type": [
              "VolumeFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.5
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        },
        {
          "@type": "Solvent",
          "schema:name": "DEC",
          "hasProperty": {
            "@type": [
              "VolumeFraction",
              "ConventionalProperty"
            ],
            "hasNumericalPart": {
              "@type": "RealData",
              "hasNumberValue": 0.5
            },
            "hasMeasurementUnit": "https://w3id.org/emmo#EMMO_5ebd5e01_0ed3_49a2_a30d_cd05cbe72978"
          }
        }
      ]
    },
    "hasSeparator": {
      "@type": "Separator",
      "schema:name": "PP membrane",
      "hasProperty": {
        "@type": [
          "Thickness",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "Thickness",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 20.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
      }
    },
    "schema:additionalProperty": [
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.assembly_type",
        "schema:name": "Assembly Type",
        "schema:value": "stacked"
      },
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.layering",
        "schema:name": "Layering",
        "schema:value": "not_applicable"
      },
      {
        "@type": "schema:PropertyValue",
        "schema:propertyID": "construction.comment",
        "schema:name": "Construction Comment",
        "schema:value": "Coin-cell example fixture with stacked pellet-style components."
      }
    ]
  },
  "schema:size": "2032",
  "schema:schemaVersion": "0.2.0",
  "dcterms:source": {
    "@type": "prov:Entity",
    "dcterms:type": "manual",
    "prov:generatedAtTime": "2026-03-11T04:00:00+00:00"
  }
}
EMPA COIN-NMC811-D (cell-spec)

The record ships in the installed wheel — load it as a starting point:

import json
from importlib import resources

record = json.loads(
    resources.files("battinfo")
    .joinpath("data/examples/cell-spec/cell-spec-tme2-0sy6-q89b-8m92.json")
    .read_text(encoding="utf-8")
)
{
  "schema_version": "0.2.0",
  "cell_spec": {
    "id": "https://w3id.org/battinfo/spec/tme2-0sy6-q89b-8m92",
    "short_id": "tme20s",
    "identifier": "cell-spec:tme2-0sy6-q89b-8m92",
    "name": "EMPA COIN-NMC811-D",
    "model": "COIN-NMC811-D",
    "manufacturer": {
      "type": "Organization",
      "name": "EMPA",
      "id": "https://w3id.org/battinfo/organization/mtf8-84d1-addg-nnvv"
    },
    "cell_format": "coin",
    "chemistry": "Li-ion",
    "positive_electrode_basis": "NMC811",
    "negative_electrode_basis": "graphite"
  },
  "properties": {
    "nominal_capacity": {
      "value": 0.0038,
      "unit": "Ah"
    },
    "nominal_voltage": {
      "value": 3.8,
      "unit": "V"
    }
  },
  "provenance": {
    "source_type": "datasheet",
    "source_file": "manual.json",
    "source_url": null,
    "retrieved_at": 1781772766
  },
  "positive_electrode_spec_id": "https://w3id.org/battinfo/spec/qfjh-7xyr-ga1k-tjez",
  "negative_electrode_spec_id": "https://w3id.org/battinfo/spec/d7qr-n581-74c3-7g7r",
  "electrolyte_spec_id": "https://w3id.org/battinfo/spec/gpkh-74nj-6sdb-vcsc",
  "separator_spec_id": "https://w3id.org/battinfo/spec/wgym-4xfa-pws1-ek1b",
  "housing_spec_id": "https://w3id.org/battinfo/spec/38af-bpnv-1zmm-32hs",
  "notes": [
    "Discovery NMC811-Graphite coin cell."
  ]
}

Emitted by record_to_jsonld, hosted-context mode.

{
  "@context": "https://w3id.org/battinfo/context/records/v1.json",
  "@type": [
    "BatteryCellSpecification",
    "schema:ProductModel",
    "schema:CreativeWork"
  ],
  "@id": "https://w3id.org/battinfo/spec/tme2-0sy6-q89b-8m92",
  "schema:identifier": "tme2-0sy6-q89b-8m92",
  "schema:name": "EMPA COIN-NMC811-D",
  "schema:model": "COIN-NMC811-D",
  "schema:manufacturer": {
    "@type": "schema:Organization",
    "schema:name": "EMPA"
  },
  "schema:url": "https://www.battery-genome.org/registry/spec/tme2-0sy6-q89b-8m92",
  "isDescriptionFor": {
    "@type": [
      "BatteryCell",
      "CoinCell",
      "LithiumIonBattery",
      "LithiumIonNickelManganeseCobaltOxideBattery",
      "LithiumIonGraphiteBattery"
    ],
    "@id": "https://w3id.org/battinfo/spec/tme2-0sy6-q89b-8m92#described",
    "skos:prefLabel": "EMPA COIN-NMC811-D",
    "hasProperty": [
      {
        "@type": [
          "NominalCapacity",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalCapacity",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 0.0038
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#AmpereHour"
      },
      {
        "@type": [
          "NominalVoltage",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalVoltage",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 3.8
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Volt"
      }
    ],
    "hasPositiveElectrode": {
      "@type": "LithiumNickelManganeseCobaltOxideElectrode",
      "@id": "https://w3id.org/battinfo/spec/qfjh-7xyr-ga1k-tjez#described"
    },
    "hasNegativeElectrode": {
      "@type": "GraphiteElectrode",
      "@id": "https://w3id.org/battinfo/spec/d7qr-n581-74c3-7g7r#described"
    },
    "hasElectrolyte": {
      "@id": "https://w3id.org/battinfo/spec/gpkh-74nj-6sdb-vcsc#described"
    },
    "hasSeparator": {
      "@id": "https://w3id.org/battinfo/spec/wgym-4xfa-pws1-ek1b#described"
    },
    "hasConstituent": {
      "@id": "https://w3id.org/battinfo/spec/38af-bpnv-1zmm-32hs#described"
    }
  },
  "schema:schemaVersion": "0.2.0",
  "dcterms:source": {
    "@type": "prov:Entity",
    "dcterms:type": "datasheet",
    "prov:generatedAtTime": "2026-06-18T08:52:46+00:00"
  }
}
EMPA PRISM-LFP-100AH (cell-spec)

The record ships in the installed wheel — load it as a starting point:

import json
from importlib import resources

record = json.loads(
    resources.files("battinfo")
    .joinpath("data/examples/cell-spec/cell-spec-86k6-6tzd-c4sf-5s01.json")
    .read_text(encoding="utf-8")
)
{
  "schema_version": "0.2.0",
  "cell_spec": {
    "id": "https://w3id.org/battinfo/spec/86k6-6tzd-c4sf-5s01",
    "short_id": "86k66t",
    "identifier": "cell-spec:86k6-6tzd-c4sf-5s01",
    "name": "EMPA PRISM-LFP-100AH",
    "model": "PRISM-LFP-100AH",
    "manufacturer": {
      "type": "Organization",
      "name": "EMPA",
      "id": "https://w3id.org/battinfo/organization/mtf8-84d1-addg-nnvv"
    },
    "cell_format": "prismatic",
    "chemistry": "Li-ion",
    "positive_electrode_basis": "LFP",
    "negative_electrode_basis": "graphite"
  },
  "properties": {
    "nominal_capacity": {
      "value": 100.0,
      "unit": "Ah"
    },
    "nominal_voltage": {
      "value": 3.2,
      "unit": "V"
    }
  },
  "provenance": {
    "source_type": "datasheet",
    "source_file": "manual.json",
    "source_url": null,
    "retrieved_at": 1781772767
  },
  "positive_electrode_spec_id": "https://w3id.org/battinfo/spec/m6y0-tkfg-sn40-q10p",
  "negative_electrode_spec_id": "https://w3id.org/battinfo/spec/d7qr-n581-74c3-7g7r",
  "electrolyte_spec_id": "https://w3id.org/battinfo/spec/gpkh-74nj-6sdb-vcsc",
  "separator_spec_id": "https://w3id.org/battinfo/spec/wgym-4xfa-pws1-ek1b",
  "housing_spec_id": "https://w3id.org/battinfo/spec/ypyh-v38v-r276-snmk",
  "notes": [
    "LFP 100 Ah prismatic engineering cell (Cell_Design_Tool)."
  ]
}

Emitted by record_to_jsonld, hosted-context mode.

{
  "@context": "https://w3id.org/battinfo/context/records/v1.json",
  "@type": [
    "BatteryCellSpecification",
    "schema:ProductModel",
    "schema:CreativeWork"
  ],
  "@id": "https://w3id.org/battinfo/spec/86k6-6tzd-c4sf-5s01",
  "schema:identifier": "86k6-6tzd-c4sf-5s01",
  "schema:name": "EMPA PRISM-LFP-100AH",
  "schema:model": "PRISM-LFP-100AH",
  "schema:manufacturer": {
    "@type": "schema:Organization",
    "schema:name": "EMPA"
  },
  "schema:url": "https://www.battery-genome.org/registry/spec/86k6-6tzd-c4sf-5s01",
  "isDescriptionFor": {
    "@type": [
      "BatteryCell",
      "PrismaticBattery",
      "LithiumIonBattery",
      "LithiumIonIronPhosphateBattery",
      "LithiumIonGraphiteBattery"
    ],
    "@id": "https://w3id.org/battinfo/spec/86k6-6tzd-c4sf-5s01#described",
    "skos:prefLabel": "EMPA PRISM-LFP-100AH",
    "hasProperty": [
      {
        "@type": [
          "NominalCapacity",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalCapacity",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 100.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#AmpereHour"
      },
      {
        "@type": [
          "NominalVoltage",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalVoltage",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 3.2
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Volt"
      }
    ],
    "hasPositiveElectrode": {
      "@type": "LithiumIronPhosphateElectrode",
      "@id": "https://w3id.org/battinfo/spec/m6y0-tkfg-sn40-q10p#described"
    },
    "hasNegativeElectrode": {
      "@type": "GraphiteElectrode",
      "@id": "https://w3id.org/battinfo/spec/d7qr-n581-74c3-7g7r#described"
    },
    "hasElectrolyte": {
      "@id": "https://w3id.org/battinfo/spec/gpkh-74nj-6sdb-vcsc#described"
    },
    "hasSeparator": {
      "@id": "https://w3id.org/battinfo/spec/wgym-4xfa-pws1-ek1b#described"
    },
    "hasConstituent": {
      "@id": "https://w3id.org/battinfo/spec/ypyh-v38v-r276-snmk#described"
    }
  },
  "schema:schemaVersion": "0.2.0",
  "dcterms:source": {
    "@type": "prov:Entity",
    "dcterms:type": "datasheet",
    "prov:generatedAtTime": "2026-06-18T08:52:47+00:00"
  }
}
EMPA COIN-ZNMNO2-ALK (cell-spec)

The record ships in the installed wheel — load it as a starting point:

import json
from importlib import resources

record = json.loads(
    resources.files("battinfo")
    .joinpath("data/examples/cell-spec/cell-spec-jgyy-x3h5-drmv-5tn5.json")
    .read_text(encoding="utf-8")
)
{
  "schema_version": "0.2.0",
  "cell_spec": {
    "id": "https://w3id.org/battinfo/spec/jgyy-x3h5-drmv-5tn5",
    "short_id": "jgyyx3",
    "identifier": "cell-spec:jgyy-x3h5-drmv-5tn5",
    "name": "EMPA COIN-ZNMNO2-ALK",
    "model": "COIN-ZNMNO2-ALK",
    "manufacturer": {
      "type": "Organization",
      "name": "EMPA",
      "id": "https://w3id.org/battinfo/organization/mtf8-84d1-addg-nnvv"
    },
    "cell_format": "coin",
    "chemistry": "Zn-MnO2 alkaline",
    "positive_electrode_basis": "MnO2",
    "negative_electrode_basis": "zinc"
  },
  "properties": {
    "nominal_capacity": {
      "value": 0.0015,
      "unit": "Ah"
    },
    "nominal_voltage": {
      "value": 1.5,
      "unit": "V"
    }
  },
  "provenance": {
    "source_type": "datasheet",
    "source_file": "manual.json",
    "source_url": null,
    "retrieved_at": 1781772767
  },
  "positive_electrode_spec_id": "https://w3id.org/battinfo/spec/277n-cp9k-3g4m-w40y",
  "negative_electrode_spec_id": "https://w3id.org/battinfo/spec/3abg-gxzh-6487-9eex",
  "electrolyte_spec_id": "https://w3id.org/battinfo/spec/gzt2-hrqq-gsfn-sp94",
  "separator_spec_id": "https://w3id.org/battinfo/spec/wgym-4xfa-pws1-ek1b",
  "housing_spec_id": "https://w3id.org/battinfo/spec/38af-bpnv-1zmm-32hs",
  "notes": [
    "Non-Li-ion alkaline Zn-MnO2 coin cell (7M KOH)."
  ]
}

Emitted by record_to_jsonld, hosted-context mode.

{
  "@context": "https://w3id.org/battinfo/context/records/v1.json",
  "@type": [
    "BatteryCellSpecification",
    "schema:ProductModel",
    "schema:CreativeWork"
  ],
  "@id": "https://w3id.org/battinfo/spec/jgyy-x3h5-drmv-5tn5",
  "schema:identifier": "jgyy-x3h5-drmv-5tn5",
  "schema:name": "EMPA COIN-ZNMNO2-ALK",
  "schema:model": "COIN-ZNMNO2-ALK",
  "schema:manufacturer": {
    "@type": "schema:Organization",
    "schema:name": "EMPA"
  },
  "schema:url": "https://www.battery-genome.org/registry/spec/jgyy-x3h5-drmv-5tn5",
  "isDescriptionFor": {
    "@type": [
      "BatteryCell",
      "CoinCell",
      "LithiumManganeseDioxideBattery"
    ],
    "@id": "https://w3id.org/battinfo/spec/jgyy-x3h5-drmv-5tn5#described",
    "skos:prefLabel": "EMPA COIN-ZNMNO2-ALK",
    "hasProperty": [
      {
        "@type": [
          "NominalCapacity",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalCapacity",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 0.0015
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#AmpereHour"
      },
      {
        "@type": [
          "NominalVoltage",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "NominalVoltage",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 1.5
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Volt"
      }
    ],
    "hasPositiveElectrode": {
      "@type": "ManganeseDioxideElectrode",
      "@id": "https://w3id.org/battinfo/spec/277n-cp9k-3g4m-w40y#described"
    },
    "hasNegativeElectrode": {
      "@type": "ZincElectrode",
      "@id": "https://w3id.org/battinfo/spec/3abg-gxzh-6487-9eex#described"
    },
    "hasElectrolyte": {
      "@id": "https://w3id.org/battinfo/spec/gzt2-hrqq-gsfn-sp94#described"
    },
    "hasSeparator": {
      "@id": "https://w3id.org/battinfo/spec/wgym-4xfa-pws1-ek1b#described"
    },
    "hasConstituent": {
      "@id": "https://w3id.org/battinfo/spec/38af-bpnv-1zmm-32hs#described"
    }
  },
  "schema:schemaVersion": "0.2.0",
  "dcterms:source": {
    "@type": "prov:Entity",
    "dcterms:type": "datasheet",
    "prov:generatedAtTime": "2026-06-18T08:52:47+00:00"
  }
}

Fields#

Generated from the packaged JSON Schemas — the same files battinfo validate and the registry’s publish gate enforce. Every record also carries the shared envelope (schema_version, provenance, and optional notes, funding, contributor, license). Quantities are {value, unit} maps and may also carry value_basis (Measured, Conventional, Rated, or Nominal) and conditions (the parameters under which the value holds, each itself a quantity; a qualitative condition may be value_text alone). In JSON-LD, conditions ride a measurement node the quantity isOutputOf; the voltage_reference key instead becomes a hasMetrologicalReference datum on the quantity, beside its unit. When authoring, an instance references its spec with the spec_id= kwarg; the record stores the self-describing <type>_spec_id key shown in the tables below.

cell-spec fields#

Schema: cell-spec.schema.json · required at top level: schema_version, cell_spec, provenance

The cell_spec block:

Field

Type

Required

Description

id

→ SpecIri

yes

Canonical IRI of this cell spec.

short_id

→ ShortId

identifier

→ Identifier

Additional identifier(s) for the cell model, as strings or PropertyValue pairs.

name

string

yes

Human-readable display name, typically manufacturer plus model.

model

string

yes

Manufacturer model designation (e.g. ‘ANR26650M1-B’).

manufacturer

→ Organization

yes

Organization that manufactures this cell model.

brand

→ BrandOrOrganization

Brand the cell is marketed under, when different from the manufacturer.

category

string

Coarse product category label (e.g. ‘battery cell’).

url

string

Product or datasheet page URL.

additional_type

string or array of string

Extra JSON-LD type IRIs or labels stacked onto the record’s @type.

product_type

commercial | research | prototype

Whether this cell spec is a commercial product, a research cell, or a prototype.

cell_format

cylindrical | prismatic | pouch | coin … (6 values)

yes

Mechanical format of the cell.

size_code

string

Standard size designation (e.g. ‘18650’, ‘21700’, ‘CR2032’).

iec_code

string

IEC designation code (IEC 60086 / IEC 61960), when defined.

country_of_origin

string

Country where the cell is manufactured.

rechargeable

boolean

Whether this cell is rechargeable (true) or primary/single-use (false).

year

integer

Year the cell model was released or the datasheet was issued.

chemistry

string

yes

Overall cell chemistry label (e.g. ‘Li-ion’, ‘NiMH’, ‘Zn-MnO2’). Use the recognised labels where they apply (see the property keys reference); other values are carried as literals.

positive_electrode_basis

string

Positive-electrode active material basis (e.g. ‘LFP’, ‘NMC811’). Use the recognised labels where they apply (see the property keys reference); other values are carried as literals.

negative_electrode_basis

string

Negative-electrode active material basis (e.g. ‘graphite’, ‘LTO’, ‘Si-C’). Use the recognised labels where they apply (see the property keys reference); other values are carried as literals.

datasheet_revision

string

Revision label of the datasheet the spec was taken from.

manufacturing_place

string

Geographic location of the battery manufacturing plant (EU Battery Regulation Annex VI Part A).

battery_category

EV | LMT | industrial | stationary … (7 values)

Battery category per EU Battery Regulation Article 3.

reference_electrode

→ electrode or string

The physical reference electrode of a three-electrode build, as an inline electrode holder (a lithium ring or wire is a monolithic material). The legacy string shorthand (e.g. ‘lithium’, ‘NHE’) stays accepted. In a half_cell the counter electrode IS the reference - state nothing here. Emitted as hasReferenceElectrode with @type ReferenceElectrode.

cell_configuration

full_cell | half_cell | three_electrode_cell

Electrode configuration as built. Optional; absent means unstated (read as a full cell unless a reference_electrode is present). Stated explicitly it overrides that heuristic: half_cell types the JSON-LD as BatteryHalfCell + HalfCellDevice, three_electrode_cell as ThreeElectrodeCellDevice, full_cell suppresses both.

Top-level properties: Datasheet-style quantitative properties of the cell model; each key holds a SpecItem quantity. Dimension keys follow the format rules: diameter for cylindrical and coin, length/width/thickness for prismatic and pouch, height for all.

The bibliography block:

Field

Type

Required

Description

subject_of

array of → BibliographyEntry

Publications (papers, reports) that study or document this cell model.

Top-level specification_comment: Verbatim comment lines carried over from the source specification.

Top-level editorial: Internal editorial metadata — review status and curation notes. Ignored by the publish pipeline; not forwarded to the registry semantic payload.

Top-level construction: Internal construction: assembly type, layering, sheet counts, and electrode-assembly geometry.

Top-level positive_electrode: Inline description of the positive electrode (coating, current collector, tab, properties).

Top-level negative_electrode: Inline description of the negative electrode (coating, current collector, tab, properties).

Top-level working_electrode: Inline working-electrode structure. Role holder for a half_cell or three_electrode_cell: a cell that is not a full cell has no positive/negative polarity to assign, so the electrode under study is the working electrode. Emitted as hasWorkingElectrode with @type WorkingElectrode.

Top-level counter_electrode: Inline counter-electrode structure. Role holder for a half_cell or three_electrode_cell. In a half cell the counter electrode also serves as the reference, so it is emitted with @type [CounterElectrode, ReferenceElectrode]; in a three-electrode cell the separate reference_electrode field carries the reference role.

Top-level electrolyte: Inline electrolyte description (family, salt, solvents, additives).

Top-level separator: Inline separator description (material, structure, coating, and properties).

Top-level housing: Inline housing description (case, cap, terminals, seals, parts).

Top-level positive_electrode_spec_id: IRI of the standalone electrode-spec used as the positive electrode of this cell model; may be given instead of, or alongside, the inline positive_electrode holder.

Top-level negative_electrode_spec_id: IRI of the standalone electrode-spec used as the negative electrode of this cell model; may be given instead of, or alongside, the inline negative_electrode holder.

Top-level working_electrode_spec_id: Optional canonical IRI of a standalone electrode-spec for the working electrode (used instead of, or alongside, the inline working_electrode holder).

Top-level counter_electrode_spec_id: Optional canonical IRI of a standalone electrode-spec for the counter electrode.

Top-level reference_electrode_spec_id: Optional canonical IRI of a standalone electrode-spec for the reference electrode of a three-electrode build (used instead of, or alongside, the inline reference_electrode holder).

Top-level electrolyte_spec_id: IRI of the standalone electrolyte-spec used in this cell model; may be given instead of, or alongside, the inline electrolyte holder.

Top-level separator_spec_id: IRI of the standalone separator-spec used in this cell model; may be given instead of, or alongside, the inline separator holder.

Top-level housing_spec_id: IRI of the standalone housing-spec used in this cell model; may be given instead of, or alongside, the inline housing holder.

Top-level hazardous_substances: Hazardous substances present in the battery (EU Battery Regulation Annex XIII §7.1).

Top-level critical_raw_materials: Critical raw materials present in the battery at more than 0.1% weight by weight (EU Battery Regulation Annex XIII §7.1).

Top-level extinguishing_agent: Usable extinguishing agent for the battery (EU Battery Regulation Annex VI Part A).

cell-instance fields#

Schema: cell-instance.schema.json · required at top level: schema_version, cell_instance, provenance

The cell_instance block:

Field

Type

Required

Description

id

→ CellIri

yes

Canonical IRI of this cell instance.

cell_spec_id

→ SpecIri

yes

IRI of the cell spec this physical cell realizes.

working_electrode_id

→ ElectrodeIri

Canonical IRI of the electrode record (the physical batch or disc) built into this cell as its working electrode. The cell spec says which electrode design the cell uses; this says which built electrode went into this individual cell.

counter_electrode_id

→ ElectrodeIri

Canonical IRI of the electrode record built into this cell as its counter electrode. In a half cell that electrode is also the reference electrode, so it is emitted with both role classes.

name

string

Human-readable name / label for this cell (e.g. a lab batch ID). The primary identifier; usually present even without a manufacturer serial number.

short_id

→ ShortId

serial_number

string

Manufacturer serial number (unique within the product model); optional.

batch_id

string

Production or lab batch this cell belongs to.

grade

string

Quality grade assigned to this cell (e.g. ‘A’, ‘B’, ‘C’, ‘reject’).

manufactured_at

→ FlexDate

Production date. ISO 8601 string (YYYY, YYYY-MM, YYYY-MM-DD) or Unix timestamp.

expires_at

→ FlexDate

Expiration / best-before date. ISO 8601 string (YYYY, YYYY-MM, YYYY-MM-DD) or Unix timestamp.

service_start_date

string

ISO 8601 date when the battery was first put into service.

battery_status

original | repurposed | re-used | remanufactured … (5 values)

Current status of the battery per EU Battery Regulation Annex XIII.

dpp_status

active | archived | inactive | marked-for-deletion

Status of this digital product passport record.

supersedes

→ CellIri

IRI of the previous cell record this passport replaces, e.g. after repurposing.

conformance

object

Assessment of how well this record followed the spec that governs it.

Top-level measured: Measured cell properties using the same keys as the spec’s properties map; read each key as the value measured for this cell (e.g. nominal_capacity = measured discharge capacity, mass = weighed mass).

Top-level datasets: Datasets recorded for this cell. Back-reference to dataset records. dataset.about is the source of truth for what a dataset describes; when records are saved together through a workspace the library fills this list from each dataset’s cell and test links, and hand-authored records may set it directly.

Design notes#

The reasoning behind the model

Composing a cell from parts. The seven reference fields resolve as: positive_electrode_spec_id / negative_electrode_spec_id and working_electrode_spec_id / counter_electrode_spec_idelectrode-spec (which pair applies follows from cell_configuration); electrolyte_spec_idelectrolyte-spec; separator_spec_idseparator-spec; housing_spec_idhousing-spec. A cell may reference, inline, or both — inline holders stay optional, so existing records are unaffected. The JSON-LD emits reference nodes pointing at the target spec’s described component (hasPositiveElectrode: {"@id": "…#described"} — a physical relation lands on a physical individual, never on the spec document), merging the @id onto an inline node when both are present.

References are checked at save. A *_spec_id that points at nothing fails the save with the missing IRI named; resolve_references=False opts out for staged workflows, and save_batch allows references within the batch and validates the completed set. extract_component_specs(cell_spec_record) goes the other way, lifting inline holders into standalone specs so any inline cell can be decomposed and de-duplicated.

The engineering layer. Beyond composition and rated performance, a spec can carry the as-designed build. Deliberately excluded: design-tool scratch math (recomputed, not stored) and state-dependent behaviour (belongs to tests and datasets). Every part follows holder + property: identity fields plus {value, unit} quantities, unknown keys preserved and warned rather than dropped. The housing (case, cap, terminals, seals, parts) is authored inline or as a standalone housing spec; tabs and coatings belong to the electrode; the wound/stacked geometry is the spec’s own construction block.

The full graph, end to end:

cell-spec  →  cell-instance  →  test  →  dataset
     ↓ references
electrode-spec / electrolyte-spec / separator-spec / housing-spec  →  material-specs

What the spec node says. One node, three personas: the EMMO information artifact (BatteryCellSpecification — id, schema version, provenance, citation), the schema.org catalogue entity (schema:ProductModel — name, manufacturer, brand, size and IEC codes, release date), and the record (schema:CreativeWork). Every EMMO-axiomatized physical fact — hasProperty quantities, electrode/electrolyte/separator/housing composition, construction — rides the described battery under isDescriptionFor: those relations declare physical subjects (hasProperty’s domain is Referent, hasElectrolyte’s is ElectrochemicalCell), so asserting them on the document would entail a false typing.

The described battery, precisely. The isDescriptionFor individual is an existential witness — “there exists a battery such that …” — satisfied by at least one conforming unit (the universal reading a datasheet gestures at is not expressible at individual level); it is not a prototype object and no identity is asserted between it and any cell instance. It carries a stable name, <spec-IRI>#described, so repeated ingest merges instead of duplicating, other records can reference the design, and *_spec_id reference edges resolve to physical individuals — naming the witness changes none of the above. Declared values carry their epistemic status in the property-nature class (today ConventionalProperty, a value attributed by agreement; RatedProperty joins when it is published upstream), not in a universality claim. An instance links to its spec via hasDescription and schema:isVariantOf and carries its own physical typing — the schema.org ProductModel pattern on the schema layer, EMMO’s own BatterySpecification isDescriptionFor some Battery axiom on the semantic layer (which is also where the existential commitment for never-built designs comes from). For SPARQL, the property path isDescriptionFor?/hasProperty reads both this shape and pre-pattern documents in one query.