Materials#
How to describe a material: the manufactured product as a material spec, a physical lot or batch as a material instance, both under a curated Level-1 kind.
kindis required and curated: aliases resolve on input (NMC 811, LiFePO4, Si/Gr), an unknown kind is rejected at save.A kind’s
roleslist is informative, never restrictive - the role a material plays is stated where it is used.The spec is the manufactured product (Targray NMC811, grade X); the material instance is one physical lot.
Other records reference a material at whichever level you know - kind key, spec IRI, or lot IRI - and upgrade later without re-modeling.
Define one#
A material spec (the powder as a product)#
from battinfo.api import create_material_spec
record = create_material_spec(
uid="7d9k-2m4p-8t3x-6nq5",
name="NMC811 cathode powder",
kind="nmc811", # Level-1 key from the curated vocabulary
property={
"specific_capacity": {"value": 200, "unit": "mAh/g"},
"d50_particle_size": {"value": 10, "unit": "um"},
},
source_type="datasheet",
)
{
"schema_version": "0.2.0",
"material_spec": {
"id": "https://w3id.org/battinfo/spec/7d9k-2m4p-8t3x-6nq5",
"short_id": "7d9k2m",
"name": "NMC811 cathode powder",
"kind": "nmc811",
"property": {
"specific_capacity": {
"value": 200,
"unit": "mAh/g"
},
"d50_particle_size": {
"value": 10,
"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"
],
"@id": "https://w3id.org/battinfo/spec/7d9k-2m4p-8t3x-6nq5",
"schema:name": "NMC811 cathode powder",
"schema:sameAs": {
"@id": "https://w3id.org/emmo/domain/chemical-substance#substance_e877987f_3b08_4e21_8f2e_c280e6bef52f"
},
"skos:exactMatch": [
{
"@id": "http://www.wikidata.org/entity/Q121086674"
}
],
"isDescriptionFor": {
"@type": "LithiumNickelManganeseCobaltOxide811",
"hasProperty": [
{
"@type": [
"D50ParticleSize",
"ConventionalProperty"
],
"skos:prefLabel": "D50ParticleSize",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 10
},
"hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
},
{
"@type": [
"SpecificCapacity",
"ConventionalProperty"
],
"skos:prefLabel": "SpecificCapacity",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 200
},
"schema:unitText": "mAh/g"
}
],
"@id": "https://w3id.org/battinfo/spec/7d9k-2m4p-8t3x-6nq5#described",
"skos:prefLabel": "NMC811 cathode powder"
}
}
What to notice:
The
kindresolves to the chemical-substance class IRI that types the emitted node — the genome’s aggregation axis.
A material instance (one physical lot)#
from battinfo.api import create_material
record = create_material(
uid="y9xy-kr0v-y5tn-dfj7",
name="NMC811 lot 2026-04",
spec_id="https://w3id.org/battinfo/spec/7d9k-2m4p-8t3x-6nq5",
source_type="lab",
)
{
"schema_version": "0.2.0",
"material": {
"id": "https://w3id.org/battinfo/material/y9xy-kr0v-y5tn-dfj7",
"material_spec_id": "https://w3id.org/battinfo/spec/7d9k-2m4p-8t3x-6nq5",
"short_id": "y9xykr",
"name": "NMC811 lot 2026-04"
},
"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/"
}
],
"@id": "https://w3id.org/battinfo/material/y9xy-kr0v-y5tn-dfj7",
"@type": "schema:ChemicalSubstance",
"schema:name": "NMC811 lot 2026-04",
"schema:isVariantOf": {
"@id": "https://w3id.org/battinfo/spec/7d9k-2m4p-8t3x-6nq5"
}
}
What to notice:
material_spec_idlinks the lot to its product; the lot is what an electrode batch actually consumed.
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.
NMC811 (material-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/material-spec/npa4-0dnw-evyh-hhdm.json")
.read_text(encoding="utf-8")
)
{
"schema_version": "0.2.0",
"material_spec": {
"id": "https://w3id.org/battinfo/spec/npa4-0dnw-evyh-hhdm",
"short_id": "npa40d",
"name": "NMC811",
"kind": "nmc811",
"material_class": "active_material",
"formula": "LiNi0.8Mn0.1Co0.1O2",
"chemistry_family": "layered-oxide",
"manufacturer": {
"type": "Organization",
"name": "Canrud",
"id": "https://w3id.org/battinfo/organization/9rfa-w6b3-dv1x-vj4z"
},
"property": {
"specific_capacity": {
"value": 200,
"unit": "mAh/g",
"value_basis": "Measured",
"conditions": {
"discharging_c_rate": {
"value": 0.1,
"unit": "C"
},
"lower_voltage_limit": {
"value": 3.0,
"unit": "V"
},
"upper_voltage_limit": {
"value": 4.3,
"unit": "V"
},
"temperature": {
"value": 25,
"unit": "degC"
},
"voltage_reference": {
"value_text": "Li/Li+"
}
}
},
"true_density": {
"value": 4.8,
"unit": "g/cm3"
},
"average_voltage": {
"value": 3.8,
"unit": "V"
}
}
},
"provenance": {
"source_type": "datasheet",
"retrieved_at": 1781740345
},
"notes": [
"Nickel-rich layered oxide cathode. Discovery-Benchmark NMC811-Graphite cells."
]
}
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"
],
"@id": "https://w3id.org/battinfo/spec/npa4-0dnw-evyh-hhdm",
"schema:name": "NMC811",
"schema:sameAs": {
"@id": "https://w3id.org/emmo/domain/chemical-substance#substance_e877987f_3b08_4e21_8f2e_c280e6bef52f"
},
"skos:exactMatch": [
{
"@id": "http://www.wikidata.org/entity/Q121086674"
}
],
"schema:manufacturer": {
"@type": "schema:Organization",
"schema:name": "Canrud"
},
"isDescriptionFor": {
"@type": "LithiumNickelManganeseCobaltOxide811",
"schema:molecularFormula": "LiNi0.8Mn0.1Co0.1O2",
"hasProperty": [
{
"@type": [
"Voltage",
"ConventionalProperty"
],
"skos:prefLabel": "Voltage",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 3.8
},
"hasMeasurementUnit": "https://w3id.org/emmo#Volt"
},
{
"@type": [
"SpecificCapacity",
"MeasuredProperty"
],
"skos:prefLabel": "SpecificCapacity",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 200
},
"schema:unitText": "mAh/g",
"schema:valueReference": {
"@type": [
"ReferenceElectrode",
"LithiumElectrode"
],
"skos:prefLabel": "Li/Li+"
},
"isOutputOf": {
"@type": "BatteryMeasurement",
"hasMeasurementParameter": [
{
"@type": [
"CRate",
"ConventionalProperty"
],
"skos:prefLabel": "discharging_c_rate",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 0.1
},
"schema:unitText": "C"
},
{
"@type": [
"LowerVoltageLimit",
"ConventionalProperty"
],
"skos:prefLabel": "lower_voltage_limit",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 3.0
},
"hasMeasurementUnit": "https://w3id.org/emmo#Volt"
},
{
"@type": [
"CelsiusTemperature",
"ConventionalProperty"
],
"skos:prefLabel": "temperature",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 25
},
"hasMeasurementUnit": "https://w3id.org/emmo#EMMO_36a9bf69_483b_42fd_8a0c_7ac9206320bc"
},
{
"@type": [
"UpperVoltageLimit",
"ConventionalProperty"
],
"skos:prefLabel": "upper_voltage_limit",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 4.3
},
"hasMeasurementUnit": "https://w3id.org/emmo#Volt"
}
]
}
},
{
"@type": [
"Density",
"ConventionalProperty"
],
"skos:prefLabel": "Density",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 4.8
},
"hasMeasurementUnit": "https://w3id.org/emmo#GramPerCubicCentiMetre"
}
],
"@id": "https://w3id.org/battinfo/spec/npa4-0dnw-evyh-hhdm#described",
"skos:prefLabel": "NMC811"
},
"schema:comment": "Nickel-rich layered oxide cathode. Discovery-Benchmark NMC811-Graphite cells."
}
LFP (material-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/material-spec/5ms1-9jv8-hr54-mn4e.json")
.read_text(encoding="utf-8")
)
{
"schema_version": "0.2.0",
"material_spec": {
"id": "https://w3id.org/battinfo/spec/5ms1-9jv8-hr54-mn4e",
"short_id": "5ms19j",
"name": "LFP",
"kind": "lfp",
"material_class": "active_material",
"formula": "LiFePO4",
"chemistry_family": "olivine",
"manufacturer": {
"type": "Organization",
"name": "Canrud",
"id": "https://w3id.org/battinfo/organization/9rfa-w6b3-dv1x-vj4z"
},
"property": {
"specific_capacity": {
"value": 160,
"unit": "mAh/g",
"value_basis": "Measured",
"conditions": {
"discharging_c_rate": {
"value": 0.1,
"unit": "C"
},
"lower_voltage_limit": {
"value": 2.5,
"unit": "V"
},
"upper_voltage_limit": {
"value": 3.65,
"unit": "V"
},
"temperature": {
"value": 25,
"unit": "degC"
},
"voltage_reference": {
"value_text": "Li/Li+"
}
}
},
"true_density": {
"value": 3.6,
"unit": "g/cm3"
},
"average_voltage": {
"value": 3.4,
"unit": "V"
}
}
},
"provenance": {
"source_type": "datasheet",
"retrieved_at": 1781740345
},
"notes": [
"Lithium iron phosphate cathode active material. Discovery-Benchmark LFP-Graphite cells."
]
}
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"
],
"@id": "https://w3id.org/battinfo/spec/5ms1-9jv8-hr54-mn4e",
"schema:name": "LFP",
"schema:sameAs": {
"@id": "https://w3id.org/emmo/domain/chemical-substance#substance_aa8e9cc4_5f66_4307_b1c8_26fac7653a90"
},
"skos:exactMatch": [
{
"@id": "http://www.wikidata.org/entity/Q3042400"
},
{
"@id": "https://pubchem.ncbi.nlm.nih.gov/compound/15320824"
},
{
"@id": "https://next-gen.materialsproject.org/materials/mp-19017"
}
],
"schema:manufacturer": {
"@type": "schema:Organization",
"schema:name": "Canrud"
},
"isDescriptionFor": {
"@type": "LithiumIronPhosphate",
"schema:molecularFormula": "LiFePO4",
"hasProperty": [
{
"@type": [
"Voltage",
"ConventionalProperty"
],
"skos:prefLabel": "Voltage",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 3.4
},
"hasMeasurementUnit": "https://w3id.org/emmo#Volt"
},
{
"@type": [
"SpecificCapacity",
"MeasuredProperty"
],
"skos:prefLabel": "SpecificCapacity",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 160
},
"schema:unitText": "mAh/g",
"schema:valueReference": {
"@type": [
"ReferenceElectrode",
"LithiumElectrode"
],
"skos:prefLabel": "Li/Li+"
},
"isOutputOf": {
"@type": "BatteryMeasurement",
"hasMeasurementParameter": [
{
"@type": [
"CRate",
"ConventionalProperty"
],
"skos:prefLabel": "discharging_c_rate",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 0.1
},
"schema:unitText": "C"
},
{
"@type": [
"LowerVoltageLimit",
"ConventionalProperty"
],
"skos:prefLabel": "lower_voltage_limit",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 2.5
},
"hasMeasurementUnit": "https://w3id.org/emmo#Volt"
},
{
"@type": [
"CelsiusTemperature",
"ConventionalProperty"
],
"skos:prefLabel": "temperature",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 25
},
"hasMeasurementUnit": "https://w3id.org/emmo#EMMO_36a9bf69_483b_42fd_8a0c_7ac9206320bc"
},
{
"@type": [
"UpperVoltageLimit",
"ConventionalProperty"
],
"skos:prefLabel": "upper_voltage_limit",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 3.65
},
"hasMeasurementUnit": "https://w3id.org/emmo#Volt"
}
]
}
},
{
"@type": [
"Density",
"ConventionalProperty"
],
"skos:prefLabel": "Density",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 3.6
},
"hasMeasurementUnit": "https://w3id.org/emmo#GramPerCubicCentiMetre"
}
],
"@id": "https://w3id.org/battinfo/spec/5ms1-9jv8-hr54-mn4e#described",
"skos:prefLabel": "LFP"
},
"schema:comment": "Lithium iron phosphate cathode active material. Discovery-Benchmark LFP-Graphite cells."
}
Graphite (material-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/material-spec/gwck-k5kf-ae1f-gfgc.json")
.read_text(encoding="utf-8")
)
{
"schema_version": "0.2.0",
"material_spec": {
"id": "https://w3id.org/battinfo/spec/gwck-k5kf-ae1f-gfgc",
"short_id": "gwckk5",
"name": "Graphite",
"kind": "graphite",
"material_class": "active_material",
"formula": "C",
"chemistry_family": "graphitic-carbon",
"manufacturer": {
"type": "Organization",
"name": "Canrud",
"id": "https://w3id.org/battinfo/organization/9rfa-w6b3-dv1x-vj4z"
},
"property": {
"specific_capacity": {
"value": 360,
"unit": "mAh/g",
"value_basis": "Measured",
"conditions": {
"discharging_c_rate": {
"value": 0.1,
"unit": "C"
},
"lower_voltage_limit": {
"value": 0.01,
"unit": "V"
},
"upper_voltage_limit": {
"value": 1.5,
"unit": "V"
},
"temperature": {
"value": 25,
"unit": "degC"
},
"voltage_reference": {
"value_text": "Li/Li+"
}
}
},
"true_density": {
"value": 2.26,
"unit": "g/cm3"
},
"particle_size_d50": {
"value": 15,
"unit": "um"
}
}
},
"provenance": {
"source_type": "datasheet",
"retrieved_at": 1781740345
},
"notes": [
"Graphite anode active material. Grounded in the DIGIBAT Discovery-Benchmark coin-cell builds (Canrud anode)."
]
}
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"
],
"@id": "https://w3id.org/battinfo/spec/gwck-k5kf-ae1f-gfgc",
"schema:name": "Graphite",
"schema:sameAs": {
"@id": "https://w3id.org/emmo/domain/chemical-substance#substance_d53259a7_0d9c_48b9_a6c1_4418169df303"
},
"skos:exactMatch": [
{
"@id": "http://www.wikidata.org/entity/Q5309"
},
{
"@id": "https://pubchem.ncbi.nlm.nih.gov/compound/5462310"
},
{
"@id": "https://next-gen.materialsproject.org/materials/mp-48"
}
],
"schema:manufacturer": {
"@type": "schema:Organization",
"schema:name": "Canrud"
},
"isDescriptionFor": {
"@type": "Graphite",
"schema:molecularFormula": "C",
"hasProperty": [
{
"@type": [
"D50ParticleSize",
"ConventionalProperty"
],
"skos:prefLabel": "D50ParticleSize",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 15
},
"hasMeasurementUnit": "https://w3id.org/emmo#MicroMetre"
},
{
"@type": [
"SpecificCapacity",
"MeasuredProperty"
],
"skos:prefLabel": "SpecificCapacity",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 360
},
"schema:unitText": "mAh/g",
"schema:valueReference": {
"@type": [
"ReferenceElectrode",
"LithiumElectrode"
],
"skos:prefLabel": "Li/Li+"
},
"isOutputOf": {
"@type": "BatteryMeasurement",
"hasMeasurementParameter": [
{
"@type": [
"CRate",
"ConventionalProperty"
],
"skos:prefLabel": "discharging_c_rate",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 0.1
},
"schema:unitText": "C"
},
{
"@type": [
"LowerVoltageLimit",
"ConventionalProperty"
],
"skos:prefLabel": "lower_voltage_limit",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 0.01
},
"hasMeasurementUnit": "https://w3id.org/emmo#Volt"
},
{
"@type": [
"CelsiusTemperature",
"ConventionalProperty"
],
"skos:prefLabel": "temperature",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 25
},
"hasMeasurementUnit": "https://w3id.org/emmo#EMMO_36a9bf69_483b_42fd_8a0c_7ac9206320bc"
},
{
"@type": [
"UpperVoltageLimit",
"ConventionalProperty"
],
"skos:prefLabel": "upper_voltage_limit",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 1.5
},
"hasMeasurementUnit": "https://w3id.org/emmo#Volt"
}
]
}
},
{
"@type": [
"Density",
"ConventionalProperty"
],
"skos:prefLabel": "Density",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 2.26
},
"hasMeasurementUnit": "https://w3id.org/emmo#GramPerCubicCentiMetre"
}
],
"@id": "https://w3id.org/battinfo/spec/gwck-k5kf-ae1f-gfgc#described",
"skos:prefLabel": "Graphite"
},
"schema:comment": "Graphite anode active material. Grounded in the DIGIBAT Discovery-Benchmark coin-cell builds (Canrud anode)."
}
Silicon-graphite composite (material-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/material-spec/jnab-ggw9-cbn8-hhjr.json")
.read_text(encoding="utf-8")
)
{
"schema_version": "0.2.0",
"material_spec": {
"id": "https://w3id.org/battinfo/spec/jnab-ggw9-cbn8-hhjr",
"short_id": "jnabgg",
"name": "Silicon-graphite composite",
"kind": "silicon_graphite",
"material_class": "active_material",
"formula": "Si/C",
"property": {
"specific_capacity": {
"value": 450,
"unit": "mAh/g"
}
}
},
"provenance": {
"source_type": "literature",
"retrieved_at": 1786492800,
"battinfo_version": "0.7.0"
},
"notes": [
"Generic Si/Gr blend (nominal 450 mAh/g); a real grade carries its manufacturer and grade."
]
}
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"
],
"@id": "https://w3id.org/battinfo/spec/jnab-ggw9-cbn8-hhjr",
"schema:name": "Silicon-graphite composite",
"schema:sameAs": {
"@id": "https://w3id.org/emmo/domain/chemical-substance#substance_3f061928_e90f_4414_9308_d4c843ebb79a"
},
"isDescriptionFor": {
"@type": "SiliconGraphite",
"schema:molecularFormula": "Si/C",
"hasProperty": {
"@type": [
"SpecificCapacity",
"ConventionalProperty"
],
"skos:prefLabel": "SpecificCapacity",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 450
},
"schema:unitText": "mAh/g"
},
"@id": "https://w3id.org/battinfo/spec/jnab-ggw9-cbn8-hhjr#described",
"skos:prefLabel": "Silicon-graphite composite"
},
"schema:comment": "Generic Si/Gr blend (nominal 450 mAh/g); a real grade carries its manufacturer and grade."
}
LNMO (material-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/material-spec/83bd-jmk7-2x47-s04a.json")
.read_text(encoding="utf-8")
)
{
"schema_version": "0.2.0",
"material_spec": {
"id": "https://w3id.org/battinfo/spec/83bd-jmk7-2x47-s04a",
"short_id": "83bdjm",
"name": "LNMO",
"kind": "lnmo",
"material_class": "active_material",
"formula": "LiNi0.5Mn1.5O4",
"chemistry_family": "spinel",
"property": {
"specific_capacity": {
"value": 140,
"unit": "mAh/g",
"value_basis": "Measured",
"conditions": {
"discharging_c_rate": {
"value": 0.1,
"unit": "C"
},
"lower_voltage_limit": {
"value": 3.5,
"unit": "V"
},
"upper_voltage_limit": {
"value": 4.9,
"unit": "V"
},
"temperature": {
"value": 25,
"unit": "degC"
},
"voltage_reference": {
"value_text": "Li/Li+"
}
}
},
"average_voltage": {
"value": 4.7,
"unit": "V"
}
}
},
"provenance": {
"source_type": "datasheet",
"retrieved_at": 1781740345
},
"notes": [
"High-voltage spinel cathode active material (synthetic reference example)."
]
}
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"
],
"@id": "https://w3id.org/battinfo/spec/83bd-jmk7-2x47-s04a",
"schema:name": "LNMO",
"schema:sameAs": {
"@id": "https://w3id.org/emmo/domain/chemical-substance#substance_f3e7979a_e3ef_450a_8762_7d8778afe478"
},
"isDescriptionFor": {
"@type": "LithiumNickelManganeseOxide",
"schema:molecularFormula": "LiNi0.5Mn1.5O4",
"hasProperty": [
{
"@type": [
"Voltage",
"ConventionalProperty"
],
"skos:prefLabel": "Voltage",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 4.7
},
"hasMeasurementUnit": "https://w3id.org/emmo#Volt"
},
{
"@type": [
"SpecificCapacity",
"MeasuredProperty"
],
"skos:prefLabel": "SpecificCapacity",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 140
},
"schema:unitText": "mAh/g",
"schema:valueReference": {
"@type": [
"ReferenceElectrode",
"LithiumElectrode"
],
"skos:prefLabel": "Li/Li+"
},
"isOutputOf": {
"@type": "BatteryMeasurement",
"hasMeasurementParameter": [
{
"@type": [
"CRate",
"ConventionalProperty"
],
"skos:prefLabel": "discharging_c_rate",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 0.1
},
"schema:unitText": "C"
},
{
"@type": [
"LowerVoltageLimit",
"ConventionalProperty"
],
"skos:prefLabel": "lower_voltage_limit",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 3.5
},
"hasMeasurementUnit": "https://w3id.org/emmo#Volt"
},
{
"@type": [
"CelsiusTemperature",
"ConventionalProperty"
],
"skos:prefLabel": "temperature",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 25
},
"hasMeasurementUnit": "https://w3id.org/emmo#EMMO_36a9bf69_483b_42fd_8a0c_7ac9206320bc"
},
{
"@type": [
"UpperVoltageLimit",
"ConventionalProperty"
],
"skos:prefLabel": "upper_voltage_limit",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 4.9
},
"hasMeasurementUnit": "https://w3id.org/emmo#Volt"
}
]
}
}
],
"@id": "https://w3id.org/battinfo/spec/83bd-jmk7-2x47-s04a#described",
"skos:prefLabel": "LNMO"
},
"schema:comment": "High-voltage spinel cathode active material (synthetic reference example)."
}
PVDF (material-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/material-spec/bkrw-7shb-tzbm-j664.json")
.read_text(encoding="utf-8")
)
{
"schema_version": "0.2.0",
"material_spec": {
"id": "https://w3id.org/battinfo/spec/bkrw-7shb-tzbm-j664",
"short_id": "bkrw7s",
"name": "PVDF",
"kind": "pvdf",
"material_class": "binder",
"formula": "(C2H2F2)n",
"chemistry_family": "fluoropolymer",
"property": {
"molar_mass": {
"value": 534000,
"unit": "g/mol"
},
"true_density": {
"value": 1.78,
"unit": "g/cm3"
}
}
},
"provenance": {
"source_type": "datasheet",
"retrieved_at": 1781740345
},
"notes": [
"Polyvinylidene fluoride binder."
]
}
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"
],
"@id": "https://w3id.org/battinfo/spec/bkrw-7shb-tzbm-j664",
"schema:name": "PVDF",
"schema:sameAs": {
"@id": "https://w3id.org/emmo/domain/chemical-substance#substance_f2e48e9e_f774_4f42_939f_1fe522efb7c8"
},
"isDescriptionFor": {
"@type": "PolyvinylideneFluoride",
"schema:molecularFormula": "(C2H2F2)n",
"hasProperty": [
{
"@type": [
"MolarMass",
"ConventionalProperty"
],
"skos:prefLabel": "MolarMass",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 534000
},
"hasMeasurementUnit": "https://w3id.org/emmo#GramPerMole"
},
{
"@type": [
"Density",
"ConventionalProperty"
],
"skos:prefLabel": "Density",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 1.78
},
"hasMeasurementUnit": "https://w3id.org/emmo#GramPerCubicCentiMetre"
}
],
"@id": "https://w3id.org/battinfo/spec/bkrw-7shb-tzbm-j664#described",
"skos:prefLabel": "PVDF"
},
"schema:comment": "Polyvinylidene fluoride binder."
}
Carbon black (material-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/material-spec/r5xt-4hrh-jm2k-yg4m.json")
.read_text(encoding="utf-8")
)
{
"schema_version": "0.2.0",
"material_spec": {
"id": "https://w3id.org/battinfo/spec/r5xt-4hrh-jm2k-yg4m",
"short_id": "r5xt4h",
"name": "Carbon black",
"kind": "carbon_black",
"material_class": "conductive_additive",
"formula": "C",
"chemistry_family": "amorphous-carbon",
"property": {
"bet_surface_area": {
"value": 62,
"unit": "m2/g"
},
"true_density": {
"value": 1.8,
"unit": "g/cm3"
}
}
},
"provenance": {
"source_type": "datasheet",
"retrieved_at": 1781740345
},
"notes": [
"Conductive carbon additive (e.g. Super P-grade)."
]
}
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"
],
"@id": "https://w3id.org/battinfo/spec/r5xt-4hrh-jm2k-yg4m",
"schema:name": "Carbon black",
"schema:sameAs": {
"@id": "https://w3id.org/emmo/domain/chemical-substance#substance_0a5cb747_60cf_4929_a54a_712c54b49f3b"
},
"isDescriptionFor": {
"@type": "CarbonBlack",
"schema:molecularFormula": "C",
"hasProperty": [
{
"@type": [
"SpecificSurfaceArea",
"ConventionalProperty"
],
"skos:prefLabel": "SpecificSurfaceArea",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 62
},
"hasMeasurementUnit": "https://w3id.org/emmo#SquareMetrePerGram"
},
{
"@type": [
"Density",
"ConventionalProperty"
],
"skos:prefLabel": "Density",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 1.8
},
"hasMeasurementUnit": "https://w3id.org/emmo#GramPerCubicCentiMetre"
}
],
"@id": "https://w3id.org/battinfo/spec/r5xt-4hrh-jm2k-yg4m#described",
"skos:prefLabel": "Carbon black"
},
"schema:comment": "Conductive carbon additive (e.g. Super P-grade)."
}
LiPF6 (material-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/material-spec/fpeg-3wg8-e6cs-2vn1.json")
.read_text(encoding="utf-8")
)
{
"schema_version": "0.2.0",
"material_spec": {
"id": "https://w3id.org/battinfo/spec/fpeg-3wg8-e6cs-2vn1",
"short_id": "fpeg3w",
"name": "LiPF6",
"kind": "lipf6",
"material_class": "electrolyte_salt",
"formula": "LiPF6",
"chemistry_family": "lithium-salt",
"manufacturer": {
"type": "Organization",
"name": "Canrud",
"id": "https://w3id.org/battinfo/organization/9rfa-w6b3-dv1x-vj4z"
},
"property": {
"molar_mass": {
"value": 151.9,
"unit": "g/mol"
}
}
},
"provenance": {
"source_type": "datasheet",
"retrieved_at": 1781740346
},
"notes": [
"Lithium hexafluorophosphate; conducting salt for organic Li-ion electrolytes. Discovery-Benchmark 1M LiPF6 EC:EMC."
]
}
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"
],
"@id": "https://w3id.org/battinfo/spec/fpeg-3wg8-e6cs-2vn1",
"schema:name": "LiPF6",
"schema:sameAs": {
"@id": "https://w3id.org/emmo/domain/chemical-substance#substance_0deb4fe8_b0c0_4e3f_8848_64435e5c0771"
},
"skos:exactMatch": [
{
"@id": "http://www.wikidata.org/entity/Q2583808"
},
{
"@id": "https://pubchem.ncbi.nlm.nih.gov/compound/23688915"
},
{
"@id": "https://next-gen.materialsproject.org/materials/mp-9143"
}
],
"schema:manufacturer": {
"@type": "schema:Organization",
"schema:name": "Canrud"
},
"isDescriptionFor": {
"@type": "LithiumHexafluorophosphate",
"schema:molecularFormula": "LiPF6",
"hasProperty": {
"@type": [
"MolarMass",
"ConventionalProperty"
],
"skos:prefLabel": "MolarMass",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 151.9
},
"hasMeasurementUnit": "https://w3id.org/emmo#GramPerMole"
},
"@id": "https://w3id.org/battinfo/spec/fpeg-3wg8-e6cs-2vn1#described",
"skos:prefLabel": "LiPF6"
},
"schema:comment": "Lithium hexafluorophosphate; conducting salt for organic Li-ion electrolytes. Discovery-Benchmark 1M LiPF6 EC:EMC."
}
EC (material-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/material-spec/efxx-b9yg-wh00-d23a.json")
.read_text(encoding="utf-8")
)
{
"schema_version": "0.2.0",
"material_spec": {
"id": "https://w3id.org/battinfo/spec/efxx-b9yg-wh00-d23a",
"short_id": "efxxb9",
"name": "EC",
"kind": "ec",
"material_class": "electrolyte_solvent",
"formula": "C3H4O3",
"chemistry_family": "carbonate-solvent",
"property": {
"molar_mass": {
"value": 88.06,
"unit": "g/mol"
},
"density": {
"value": 1.32,
"unit": "g/cm3"
}
}
},
"provenance": {
"source_type": "datasheet",
"retrieved_at": 1781740346
},
"notes": [
"Ethylene carbonate; cyclic carbonate solvent."
]
}
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"
],
"@id": "https://w3id.org/battinfo/spec/efxx-b9yg-wh00-d23a",
"schema:name": "EC",
"schema:sameAs": {
"@id": "https://w3id.org/emmo/domain/chemical-substance#substance_57339d90_0553_4a96_8da9_ff6c3684e226"
},
"skos:exactMatch": [
{
"@id": "http://www.wikidata.org/entity/Q421145"
},
{
"@id": "https://pubchem.ncbi.nlm.nih.gov/compound/7303"
}
],
"isDescriptionFor": {
"@type": "EthyleneCarbonate",
"schema:molecularFormula": "C3H4O3",
"hasProperty": [
{
"@type": [
"Density",
"ConventionalProperty"
],
"skos:prefLabel": "Density",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 1.32
},
"hasMeasurementUnit": "https://w3id.org/emmo#GramPerCubicCentiMetre"
},
{
"@type": [
"MolarMass",
"ConventionalProperty"
],
"skos:prefLabel": "MolarMass",
"hasNumericalPart": {
"@type": "RealData",
"hasNumberValue": 88.06
},
"hasMeasurementUnit": "https://w3id.org/emmo#GramPerMole"
}
],
"@id": "https://w3id.org/battinfo/spec/efxx-b9yg-wh00-d23a#described",
"skos:prefLabel": "EC"
},
"schema:comment": "Ethylene carbonate; cyclic carbonate solvent."
}
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.
material-spec fields#
Schema: material-spec.schema.json · required at top level: schema_version, material_spec, provenance
Field |
Type |
Required |
Description |
|---|---|---|---|
|
→ MaterialSpecIri |
yes |
|
|
→ ShortId |
||
|
string |
yes |
Human-readable material name / grade (e.g. ‘LFP’, ‘Graphite’, ‘NMC811’, ‘PVDF’). |
|
string |
Required Level-1 MaterialKind key from the curated material_kinds vocabulary (e.g. ‘graphite’, ‘lfp’, ‘nmc811’). The aggregation axis of the Battery Genome; resolves to the kind’s chemical-substance class IRI. An unknown kind is rejected at save time. See battinfo.materials.material_kind_keys(). |
|
|
string |
Manufacturer grade / product version (e.g. ‘grade X’, ‘v2’). Part of spec identity together with manufacturer and product. |
|
|
|
Deprecated in favor of the kind’s roles (the curated vocabulary lists the use-site slots a kind is known to fill): a single forced role is system-relative. Accepted for back-compat and still written by importers; slated for removal at the next record-shape version. |
|
|
|
Deprecated, do not author: polarity is an electrode property, never a material’s — state it on the electrode or through the cell’s holders. Accepted only so existing records keep validating. |
|
|
string |
Chemical formula or idealized composition (e.g. ‘LiFePO4’, ‘C’, ‘Zn’, ‘(C2H2F2)n’). |
|
|
string |
Coarse chemistry family label (e.g. ‘olivine’, ‘layered-oxide’, ‘spinel’, ‘graphitic-carbon’). |
|
|
string |
Optional EMMO/domain-battery class label or IRI for this material; informs JSON-LD @type. |
|
|
string |
CAS Registry Number, when applicable. |
|
|
→ OrgRef |
Manufacturer of the item. |
|
|
→ OrgRef |
Supplier or vendor the item was sourced from. |
|
|
string |
Manufacturer / supplier product or grade identifier. |
|
|
→ Composition |
Structured derivation of this grade: base material, coatings, dopants, and constituents. |
|
|
→ quantitative-properties |
Named quantity map of technical properties (snake_case key to value+unit quantity). |
|
|
string |
Longer free-text description of the material. |
|
|
string |
Free-text comment. |
material fields#
Schema: material.schema.json · required at top level: schema_version, material, provenance
Field |
Type |
Required |
Description |
|---|---|---|---|
|
→ MaterialIri |
yes |
|
|
→ MaterialSpecIri |
yes |
IRI of the material-spec this physical lot realizes. |
|
→ ShortId |
||
|
string |
Human-readable label for this physical lot (e.g. a lab/inventory id). |
|
|
string |
Manufacturer / supplier lot or batch number. |
|
|
string |
Internal lab batch identifier, when different from the supplier lot. |
|
|
→ OrgRef |
Supplier or vendor the item was sourced from. |
|
|
→ FlexDate |
Date the lot was received (YYYY, YYYY-MM, or YYYY-MM-DD, or Unix timestamp). |
|
|
→ FlexDate |
Date this lot was first opened / put into use. |
|
|
→ FlexDate |
Expiry or retest date for the lot (YYYY, YYYY-MM, or YYYY-MM-DD, or Unix timestamp). |
|
|
→ quantity |
Quantity of this lot on hand or consumed (e.g. mass in g, volume in mL). |
|
|
string |
Storage conditions for this lot (e.g. ‘argon glovebox’, ‘dry room, -40 degC dew point’). |
|
|
→ Processing |
||
|
array of → DatasetLink |
Characterization datasets for this material lot (XRD, SEM, ICP, PSD, …). |
|
|
→ 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
Why three levels. The kind (Level 1) is a curated vocabulary, not a record type — if generic materials were records, the corpus would grow fifty graphites. Level 2 (material-spec) is a manufactured product; Level 3 (material) is a physical lot. This mirrors cells: chemistry/format vocabulary above cell-spec above cell.
The kind’s semantic identity is its chemical-substance ontology class (chemsub), verified per release; the battinfo key is the ergonomic handle. Optional external anchors (wikidata_qid, inchikey, pubchem_cid, mp_id, cas_rn) each emit as a skos:exactMatch link and are populated only where verified — absent means unverified, never guessed. Kinds may carry curated, citable reference_properties (for example a theoretical specific capacity) that the genome compares reported distributions against.
Why roles is a list, and informative only. Roles are system-relative: FEC is both co-solvent and additive, CMC both binder and thickener, and which electrode an active material serves depends on the cell (graphite is the positive electrode of a lithium-counter half cell). So the list means “known to fill these use-site slots”, a use outside it is never an error, and the role a material actually plays is stated where it is used — coating role slots, electrolyte constituent slots, or the component spec that references it. active_material is the one load-bearing role: it gates electrode kinds and anchors reference properties. An empty list is honest too: NMP fills no composition slot (a processing solvent), which its roles_note says.
The embedded ↔ standalone bridge. A material described inline in a composition can be lifted to a standalone spec (material_spec_from_component) and a cell’s inline holders decomposed and de-duplicated (extract_material_specs), so starting embedded never blocks graduating to first-class records.
Two deprecated record fields. electrode_polarity is deprecated and has no authoring path: polarity is an electrode property, never a material’s — the schema accepts the key only so existing records keep validating. material_class is deprecated in favor of the kind’s roles: a single forced role is system-relative, and the kind carries strictly better information; the field stays accepted (importers still write it) until the next record-shape version.
Governance: the vocabulary changes by PR only; tests pin that each kind’s emmo class resolves in the bundled context and names the same substance as its chemsub anchor.
The spec describes; the substance node carries the chemistry. A material spec emits as [Description, schema:ProductModel, schema:CreativeWork] (no MaterialSpecification class is published yet - upstream ask), with the substance node - chemsub class, formula, properties - on the described individual (<spec-IRI>#described) under isDescriptionFor, read the same way as a cell spec’s described battery. The schema:sameAs/skos:exactMatch identity anchors are catalogue facts and ride the spec node itself (skos:exactMatch is symmetric and transitive - on the described substance it would conflate every supplier’s grade through the shared Wikidata IRI). Material lots are physical and keep their typing.