Test specs#
A test-spec (test-protocol record) is the reusable, IRI-addressable description of a test
procedure — the spec half of test-spec + test. A test (instance) links a cell-instance to
a test-spec via protocol_id and to its datasets.
examples/test-protocol/ now carries one example for every BatteryTestType value (20
kinds), enforced by tests/test_test_contract.py::test_test_protocol_examples_cover_full_battery_test_type_enum.
Kind |
Modelled with |
|---|---|
cycling, capacity_check, formation, rate_capability, hppc, ici, gitt, dcir, rpt, quasi_ocv, duty_cycle |
structured |
eis, impedance |
an |
calendar_ageing |
storage |
wltp, nedc |
drive-cycle power profile — |
sem, characterization, field, other |
minimal |
Semantic depth of a test protocol#
The current representation types the protocol at the class level and carries a free-text
description. EMMO domain-electrochemistry has richer terms that allow a more explicit,
machine-replicable representation — here is what is available and when to use it.
What the ontology provides#
EMMO term |
Meaning |
|---|---|
|
The complete CC-CV cycle-life protocol |
|
A single CC-CV charge step |
|
A single CC discharge step |
|
A rest / OCV hold step |
|
General electrochemical test container |
|
Structural containers for step sequences |
|
Step-to-step sequencing predicates |
|
Per-step parameters |
A 1C CC-CV cycle-life protocol could therefore be expressed as an IterativeWorkflow
containing a SerialWorkflow whose steps are:
ConstantCurrentConstantVoltageCharging → Resting → ConstantCurrentDischarging →
Resting, each step carrying typed parameters for C-rate, voltage limit, cut-off
current, rest duration, and temperature.
Pros of explicit step decomposition#
Machine-replicable: the test can be reproduced from the JSON-LD alone without parsing free text.
SPARQL-queryable at step level: structured queries like “find all datasets charged to 4.2 V at 1C CC-CV” become precise rather than text-search-based.
Parameter validation: step parameters (C-rate, voltage limits, temperatures) can be range-checked against cell specs and standards (IEC 62660, EUCAR) automatically.
Stable protocol identity: the semantic structure survives even if the free-text description is incomplete or updated.
Cons and practical limits#
Authoring burden: a four-step cycle becomes a graph of ~10 typed nodes. No researcher will author this by hand, so tooling is a prerequisite.
EMMO coverage gaps: GITT, interspersed EIS, multi-rate formation sequences, and temperature ramps do not yet have first-class EMMO step types. Mixed typed/free-text nodes undermine the value of the graph.
Cycler-file redundancy and false precision: the ground-truth protocol is usually the binary file in Biologic BT-Lab, Maccor, or Arbin format. A parallel step graph that was hand-authored can silently diverge from what was actually run — which is worse than no graph at all.
Version fragility: step-graph records couple tightly to specific EMMO term IRIs. An upstream rename invalidates stored records in a way that a text description does not.
Current recommendation#
Type the protocol at the class level (e.g. ConstantCurrentConstantVoltageCycling) and
record protocol-level parameters (C-rate, voltage window, temperature, cut-off
condition) as typed properties. Keep the free-text description as the human-readable
ground truth. Reserve step-level decomposition for cases where:
The protocol is simple enough to express without gaps (standard CC, CC-CV, or rest steps only), and
The step graph is generated programmatically from a machine-readable protocol definition (e.g. a cycler script), not authored by hand.
When the cycler file is included as a dataset distribution, it already carries the authoritative step definition — the EMMO class typing on the protocol record is then sufficient for discovery and filtering.