Current collectors#
How to describe current collectors: a current-collector-spec is the foil or mesh product, a current-collector instance is one physical roll or lot. Electrodes usually describe their collector inline; the standalone record is for a foil shared across designs or tracked as its own supply.
The spec is the foil or mesh product; an instance is one physical roll or lot.
The name and
material/formderive the typed node: ‘Aluminium foil’ emits[CurrentCollector, Aluminium, Foil].Electrodes usually embed their collector inline (
current_collectorholder); the standalone record is for a shared or tracked foil, cited viamaterial_spec_id.Author with
create_current_collector_spec(...)/create_current_collector(spec_id=...).
Define one#
The product#
from battinfo.api import create_current_collector_spec
record = create_current_collector_spec(
uid="vq83-2hkm-7tpn-9fdx",
name="Aluminium foil",
material="Al",
form="foil",
property={"thickness": {"value": 15, "unit": "um"}},
source_type="datasheet",
)
{
"schema_version": "0.2.0",
"current_collector_spec": {
"id": "https://w3id.org/battinfo/spec/7d9k-2m4p-8t3x-6nq5",
"short_id": "7d9k2m",
"name": "Aluminium foil",
"material": "Al",
"form": "foil",
"property": {
"thickness": {
"value": 15,
"unit": "um"
}
}
},
"provenance": {
"source_type": "datasheet",
"retrieved_at": 1750000000,
"battinfo_version": "0.7.0"
}
}
Emitted by record_to_jsonld, hosted-context mode.
{
"@context": [
"https://w3id.org/emmo/domain/battery/context",
{
"schema": "https://schema.org/",
"dcterms": "http://purl.org/dc/terms/",
"battinfo": "https://w3id.org/battinfo/"
}
],
"@type": [
"Description",
"schema:ProductModel",
"schema:CreativeWork"
],
"isDescriptionFor": {
"@type": [
"CurrentCollector",
"Aluminium",
"Foil"
],
"schema:name": "Aluminium foil",
"hasProperty": {
"@type": [
"Thickness",
"ConventionalProperty"
],
"skos:prefLabel": "Thickness",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 15
},
"hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
},
"skos:prefLabel": "Aluminium foil",
"@id": "https://w3id.org/battinfo/spec/7d9k-2m4p-8t3x-6nq5#described"
},
"@id": "https://w3id.org/battinfo/spec/7d9k-2m4p-8t3x-6nq5",
"schema:name": "Aluminium foil"
}
A physical lot#
from battinfo.api import create_current_collector
record = create_current_collector(
uid="tr5k-8wq2-3npx-6mvh",
spec_id="https://w3id.org/battinfo/spec/vq83-2hkm-7tpn-9fdx",
lot_id="AL15-2026-031",
)
{
"schema_version": "0.2.0",
"current_collector": {
"id": "https://w3id.org/battinfo/current-collector/7d9k-2m4p-8t3x-6nq5",
"current_collector_spec_id": "https://w3id.org/battinfo/spec/y9xy-kr0v-y5tn-dfj7",
"short_id": "7d9k2m",
"lot_id": "AL15-2026-031"
},
"provenance": {
"source_type": "lab",
"retrieved_at": 1750000000,
"battinfo_version": "0.7.0"
}
}
Emitted by record_to_jsonld, hosted-context mode.
{
"@context": [
"https://w3id.org/emmo/domain/battery/context",
{
"schema": "https://schema.org/",
"dcterms": "http://purl.org/dc/terms/",
"battinfo": "https://w3id.org/battinfo/"
}
],
"@type": "CurrentCollector",
"@id": "https://w3id.org/battinfo/current-collector/7d9k-2m4p-8t3x-6nq5",
"schema:isVariantOf": {
"@id": "https://w3id.org/battinfo/spec/y9xy-kr0v-y5tn-dfj7"
}
}
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.
Aluminium foil (current-collector-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/current-collector-spec/vkaf-f5bv-fwt2-e6yz.json")
.read_text(encoding="utf-8")
)
{
"schema_version": "0.2.0",
"current_collector_spec": {
"id": "https://w3id.org/battinfo/spec/vkaf-f5bv-fwt2-e6yz",
"short_id": "vkaff5",
"name": "Aluminium foil",
"property": {
"thickness": {
"value": 15,
"unit": "um"
},
"areal_mass": {
"value": 4.05,
"unit": "mg/cm2"
}
}
},
"provenance": {
"source_type": "datasheet",
"retrieved_at": 1781768181
},
"notes": [
"Aluminium foil cathode current collector (15 um)."
]
}
Emitted by record_to_jsonld, hosted-context mode.
{
"@context": [
"https://w3id.org/emmo/domain/battery/context",
{
"schema": "https://schema.org/",
"dcterms": "http://purl.org/dc/terms/",
"battinfo": "https://w3id.org/battinfo/"
}
],
"@type": [
"Description",
"schema:ProductModel",
"schema:CreativeWork"
],
"isDescriptionFor": {
"@type": [
"CurrentCollector",
"Aluminium",
"Foil"
],
"schema:name": "Aluminium foil",
"hasProperty": [
{
"@type": [
"battinfo:arealMass",
"ConventionalProperty"
],
"skos:prefLabel": "arealMass",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 4.05
},
"hasMeasurementUnit": "https://w3id.org/emmo#MilliGramPerSquareCentiMetre"
},
{
"@type": [
"Thickness",
"ConventionalProperty"
],
"skos:prefLabel": "Thickness",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 15
},
"hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
}
],
"skos:prefLabel": "Aluminium foil",
"@id": "https://w3id.org/battinfo/spec/vkaf-f5bv-fwt2-e6yz#described"
},
"@id": "https://w3id.org/battinfo/spec/vkaf-f5bv-fwt2-e6yz",
"schema:name": "Aluminium foil"
}
Copper foil (current-collector-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/current-collector-spec/z25y-gab5-hd3n-qfpr.json")
.read_text(encoding="utf-8")
)
{
"schema_version": "0.2.0",
"current_collector_spec": {
"id": "https://w3id.org/battinfo/spec/z25y-gab5-hd3n-qfpr",
"short_id": "z25yga",
"name": "Copper foil",
"property": {
"thickness": {
"value": 10,
"unit": "um"
}
}
},
"provenance": {
"source_type": "datasheet",
"retrieved_at": 1781768181
},
"notes": [
"Copper foil anode current collector (10 um)."
]
}
Emitted by record_to_jsonld, hosted-context mode.
{
"@context": [
"https://w3id.org/emmo/domain/battery/context",
{
"schema": "https://schema.org/",
"dcterms": "http://purl.org/dc/terms/",
"battinfo": "https://w3id.org/battinfo/"
}
],
"@type": [
"Description",
"schema:ProductModel",
"schema:CreativeWork"
],
"isDescriptionFor": {
"@type": [
"CurrentCollector",
"Copper",
"Foil"
],
"schema:name": "Copper foil",
"hasProperty": {
"@type": [
"Thickness",
"ConventionalProperty"
],
"skos:prefLabel": "Thickness",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 10
},
"hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
},
"skos:prefLabel": "Copper foil",
"@id": "https://w3id.org/battinfo/spec/z25y-gab5-hd3n-qfpr#described"
},
"@id": "https://w3id.org/battinfo/spec/z25y-gab5-hd3n-qfpr",
"schema:name": "Copper foil"
}
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.
current-collector-spec fields#
Schema: current-collector-spec.schema.json · required at top level: schema_version, current_collector_spec, provenance
Field |
Type |
Required |
Description |
|---|---|---|---|
|
→ ComponentSpecIri |
yes |
|
|
→ ShortId |
||
|
string |
yes |
Product label of this current-collector design (e.g. ‘Al foil 15 um’). |
|
string |
Substrate material of the current collector (e.g. ‘Al’, ‘Cu’, ‘Ni’, ‘stainless steel’, ‘carbon-coated Al’). |
|
|
|
Physical form of the current collector. |
|
|
string |
||
|
→ quantitative-properties |
Named quantity map of current-collector properties (e.g. thickness, areal_mass, width). See the property keys reference for the full list of recognised keys. |
|
|
→ OrgRef |
Manufacturer of the item. |
|
|
→ OrgRef |
Supplier or vendor the item was sourced from. |
|
|
string |
Manufacturer or supplier product/grade identifier. |
|
|
string |
Free-text comment. |
current-collector fields#
Schema: current-collector.schema.json · required at top level: schema_version, current_collector, provenance
Field |
Type |
Required |
Description |
|---|---|---|---|
|
→ ComponentIri |
yes |
|
|
→ ComponentSpecIri |
yes |
IRI of the current collector-spec this physical current collector realizes. |
|
→ ShortId |
||
|
string |
Human-readable label for this physical item (e.g. a lab inventory id). |
|
|
string |
Manufacturer or supplier lot number. |
|
|
string |
Internal lab batch identifier, when different from the supplier lot. |
|
|
→ OrgRef |
Supplier or vendor the item was sourced from. |
|
|
→ FlexDate |
Date this item was manufactured. |
|
|
array of → DatasetLink |
Characterization datasets recorded for this physical item. |
|
|
→ quantitative-properties |
Named quantity map of technical properties (snake_case key to value+unit quantity). |
|
|
string |
Free-text comment. |
Design notes#
The reasoning behind the model
Inline first, standalone when shared. An electrode spec carries its collector inline (current_collector holder: name, form, thickness); that inline holder and this standalone record are the same shape, and both can cite the foil’s material-spec via material_spec_id — so a lab that later starts tracking foil lots promotes the holder to a record without re-modeling.
Emission. The name parses to a typed stack — ‘Aluminium foil’ → [CurrentCollector, Aluminium, Foil], ‘expanded mesh’ variants reach ExpandedMesh / WovenMesh / PerforatedFoil — so substrate and form are classes, not strings. On a spec the stack rides the described individual (<spec-IRI>#described) under isDescriptionFor (the spec itself is a [Description, schema:ProductModel, schema:CreativeWork]); on an instance it types the node directly.
Generated surface. create_current_collector_spec and friends wrap the shared component machinery; family identifiers use underscores (current_collector), IRI namespaces use hyphens (current-collector), and the API derives one from the other.