BattINFO#

BattINFO is the semantic data layer for battery technology — a Python library, CLI, and canonical asset suite that validates, maps, and publishes battery metadata as machine-readable Linked Data aligned with the EMMO Battery Domain Ontology.

Here is a minimal example that describes a cell spec in Python and saves it locally. The other two tabs show the flagship cell from battinfo.org, the A123 ANR26650M1-B: its record as stored in examples/cell-spec/A123__ANR26650M1-B.json, and the JSON-LD that battinfo.record_to_jsonld writes for that record.

from battinfo import CellSpec, publish

spec = CellSpec(
    manufacturer="A123",
    model="ANR26650M1-B",
    format="cylindrical",
    chemistry="li-ion",
    nominal_capacity={"value": 2.5, "unit": "Ah"},
)

# publish() gives this spec its own IRI, minted from its manufacturer,
# model, format, chemistry and size code. The flagship record in the
# next two tabs has more fields and keeps the IRI it was published
# under, so the two IRIs differ.
result = publish(spec, destination="local")
print(result.canonical_iri)
{
  "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",
    "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
      }
    },
    "ac_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
      }
    },
    "charging_voltage": {
      "value": 3.6,
      "unit": "V",
      "raw": {
        "text": "Recommended Standard Charge Method 2.5A to 3.6V CCCV, 60 min",
        "page": 1,
        "confidence": 0.8
      }
    },
    "nominal_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
      }
    },
    "maximum_pulse_discharging_current": {
      "value": 120.0,
      "unit": "A",
      "conditions": {
        "duration": {
          "value": 10,
          "unit": "s"
        }
      },
      "raw": {
        "text": "Maximum Pulse Discharge (10 seconds) 120A",
        "page": 1,
        "confidence": 0.8
      }
    },
    "operating_temperature_min": {
      "value": -30,
      "unit": "°C",
      "raw": {
        "text": "Operating Temperature -30°C to 55°C",
        "page": 1,
        "confidence": 0.8
      }
    },
    "operating_temperature_max": {
      "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
      }
    }
  },
  "notes": [
    "Recommended fast charge to 80% SOC: 10 A to 3.6 V CC, 12 min (data sheet). Kept as a note: the data sheet gives no maximum continuous or pulse charging current."
  ],
  "provenance": {
    "source_type": "datasheet",
    "source_file": "A123__ANR26650M1-B.pdf",
    "source_url": null,
    "file_hash": "b5069f48e121de3a1308af66215e7a97a1c8c6a87227da089c83e352f1ddf35e",
    "retrieved_at": 1769585584
  }
}
{
  "@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": {
    "@id": "https://w3id.org/battinfo/organization/8z6j-n7vw-e73w-smh7",
    "@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": [
          "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": [
          "ACInternalResistance",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "ACInternalResistance",
        "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": [
          "ChargingVoltage",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "ChargingVoltage",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 3.6
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Volt"
      },
      {
        "@type": [
          "ChargingCurrent",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "ChargingCurrent",
        "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": [
          "MaximumPulseDischargingCurrent",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "MaximumPulseDischargingCurrent",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 120.0
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#Ampere",
        "schema:valueReference": {
          "@type": "schema:PropertyValue",
          "schema:propertyID": "duration",
          "schema:value": 10,
          "schema:unitText": "s"
        }
      },
      {
        "@type": [
          "MinimumOperatingTemperature",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "MinimumOperatingTemperature",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": -30
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#DegreeCelsius"
      },
      {
        "@type": [
          "MaximumOperatingTemperature",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "MaximumOperatingTemperature",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 55
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#DegreeCelsius"
      },
      {
        "@type": [
          "MinimumStorageTemperature",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "MinimumStorageTemperature",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": -40
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#DegreeCelsius"
      },
      {
        "@type": [
          "MaximumStorageTemperature",
          "ConventionalProperty"
        ],
        "skos:prefLabel": "MaximumStorageTemperature",
        "hasNumericalPart": {
          "@type": "RealData",
          "hasNumberValue": 60
        },
        "hasMeasurementUnit": "https://w3id.org/emmo#DegreeCelsius"
      },
      {
        "@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:brand": {
    "@type": "schema:Brand",
    "schema:name": "A123"
  },
  "schema:category": "battery cell",
  "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"
  }
}

Explore the documentation#

The documentation follows the Diátaxis structure: tutorials teach, how-to guides solve one task each, reference states the facts, and concepts explain the design.

Get Started

Install BattINFO and publish your first records in five minutes.

pages/getting-started.html

Tutorials

Six notebooks, one story — from the record model to a published, citable dataset.

pages/guides.html

How-to guides

Task-shaped recipes: bulk ingest, fixing validation errors, resuming submissions, funding tags.

pages/howto.html

Reference

Python API, CLI commands, schemas, and the validation policy contract.

pages/reference.html

Concepts

How records read as linked data, the ontology architecture, and how BattINFO is built.

pages/concepts.html

Community

Monthly office hours: slides, notes, and the questions raised on each call.

community/index.html