The language machines use to understand batteries
BattINFO builds on the open EMMO ontology — a shared, standardized vocabulary for materials and battery science — so battery data is machine-readable and reusable across tools and teams. It turns a folder of cycler exports into citable, findable records in about fifteen minutes. New to the terms? The glossary.
Every record knows what it describes, what touched it, and what it produced, hover, then click through.
Quickstart
From cycler files to a citable dataset.
This is the real recipe, the same one ws.quickstart() prints, kept in sync by the test suite. Every step explained →
python -m venv .venv
# until the 0.8 release lands on PyPI, install from source:
.venv/bin/pip install git+https://github.com/BIG-MAP/BattINFO.gitimport battinfo
ws = battinfo.workspace(".")
ws.convert() # cycler files -> tidy tables
hits = ws.search("molicel p45b") # find your cell...
spec = hits[0] if hits else battinfo.CellSpec(...) # ...or describe it
ws.add("cell", spec=spec, serial_numbers=["S1", "S2"])
ws.add("test", type="cycling", cell="S1", data="bdf/S1.bdf.csv")
ws.save() # validated records + stable IRIs
ws.publish(zenodo=True) # citable DOI + registryHow it works
From datasheet to machine-readable Linked Data, in four steps.
- 1
Author
Write plain, readable JSON — the same fields you already put on a datasheet or spec. No ontology expertise required.
- 2
Validate
Check structure, references, and semantics against one contract-grade engine, with stable issue codes.
- 3
Convert
A deterministic, mapping-driven transform emits canonical EMMO-aligned JSON-LD — and valid RDF.
- 4
Publish
Get back a stable w3id.org/battinfo IRI. Your record is now Linked Data anyone can resolve and reuse.
What BattINFO does
Real semantics, without losing the data on the way.
Ontology-aligned
Every record is typed against EMMO domain-battery. BattINFO is the non-normative implementation layer; the ontology stays the source of truth.
JSON-LD first
Author plain JSON; publish valid RDF. A deterministic, mapping-table-driven transform produces canonical EMMO-aligned JSON-LD.
Validated, multi-layer
JSON Schema 2020-12, Pydantic, JSON-LD URDNA2015 normalisation, semantic rules, and referential integrity — not just shape-checking.
Persistent identifiers
Published entities carry stable, opaque w3id.org/battinfo/{type}/{uid} IRIs, governed by a published identifier policy.
One coherent model
Linked record types with a shared provenance chain.
Cell spec → Cell → Test → Dataset
Cell spec
An as-designed cell specification (a product / SKU).
Cell
A physical, individually-tracked cell of a spec.
Test
A measurement performed on a cell under a protocol.
Dataset
The data and files a test produced, with distributions.
Test spec
The reusable procedure a test was run under.
Organization
Manufacturers, labs, and publishers, as linked entities.
Each type has a canonical JSON Schema and an EMMO mapping. See a worked example →
Who it's for
One model, two audiences.
Engineers, designers & data owners
Describe cells, builds, and tests in JSON you can read. Keep units explicit and provenance linked — and move data cleanly across teams, suppliers, and tools without learning RDF.
Author your first record →Software & data teams
A stable JSON Schema contract, a Python library and CLI, structured validation issue codes, and JSON-LD you can load into any database or triplestore.
Read the schemas & API →Principles
Built to be depended on.
Open & non-proprietary
Schemas, mappings, and tooling are public and openly licensed. The normative semantics live in the community EMMO ontology, not in this project.
Stable, resolvable identifiers
Published entities get opaque, persistent IRIs under w3id.org/battinfo, governed by a written identifier policy — they don't break when the site changes.
Versioned & reproducible
Upstream ontologies are pinned; the transform is deterministic; validation policies are versioned so downstream systems can rely on them.
Layered, not monolithic
EMMO is the source of truth; BattINFO is the operational layer of schemas and tools. Each layer can evolve without rewriting the other.
Build on the battery genome.
BattINFO is open infrastructure. Publish your data, validate a record in the browser, or read the docs.