Allotrope ADF

Status: Experimental · Vendor: Allotrope Foundation · Extensions: .adf · Feature flag: fmt-hdf5

ADF (Allotrope Data Format) is the Allotrope Foundation’s HDF5-based container for analytical data cubes plus an RDF semantic description. This reader covers a narrow data-cube subset and decodes a small, defensive slice of the RDF triplestore. It is local-fixture only while redistributable and vendor ADF files are sourced.

Instruments & software

Produced by Allotrope-aware analytical software and conversion tools. Validation currently relies on a single local adfsee demonstration file; vendor instrumental ADF exports (Waters, Sciex, Agilent, Bruker, …) are not yet available.

File structure

Detected by an .adf extension plus the HDF5 magic (\x89HDF\r\n\x1a\n); the ADF structure is validated on read. Decoding uses the pure-Rust hdf5-reader crate (gated behind fmt-hdf5) through the shared HDF5 helper, which also routes external-file references via the sidecar resolver. The reader requires the four core ADF groups: /data-cubes, /data-description, /data-package and /named-graphs.

For each cube under /data-cubes, numeric datasets under measures become records. A 1-D dataset under scales whose length matches the primary measure dimension is used as the x axis; otherwise a generated index axis is used. Two-dimensional measures are split into one record per secondary column.

The reader additionally decodes the RDF triplestore in /data-description/dictionary (a byte store + 13-byte key rows) and /data-description/quads (a 5-column subject/predicate/object table indexed into the dictionary), promoting cube titles/labels/descriptions, measure component types and primary/secondary scale component types when the expected ADF mapping pattern is present. Unknown mappings fall back to conservative IDs and warnings.

What nirs4all-formats extracts

  • Signals — numeric measures datasets. The adfsee fixture maps AbsorbanceUnitValue measures to an absorbance signal in mAU; other component types yield an Unknown-typed signal named from the measure ID.

  • Axis — a matching scales dataset or a generated index axis. SecondTimeValue scales become a seconds axis typed Time; NanometerValue scales become an nm wavelength axis (used as the secondary axis for split 2-D records).

  • Metadata — cube ID, measure ID/shape, axis source/unit/kind, scale IDs, ADF component types, axis order, and decoded cube titles/labels/descriptions.

  • Provenance & warnings — always allotrope_adf_reverse_engineered_data_cube_subset, plus allotrope_adf_rdf_semantics_partially_mapped / ..._not_resolved (and a decode-failure warning if the RDF slice cannot be read).

Variants & support status

Variant

Status

Notes

1-D numeric data cube

Experimental

One record per measure on its scale or a generated index axis.

2-D data cube

Experimental

Split into one record per secondary column.

RDF semantics (titles, component types)

Experimental

Defensive subset of dictionary + quads; conservative fallback otherwise.

Vendor instrumental ADF

Planned

Waters/Sciex/Agilent/etc. exports not yet sourced.

Limitations & known gaps

  • Not a full Allotrope implementation: only the narrow data-cube subset and a defensive RDF slice are decoded.

  • The full ADF ontology, complete quantity/unit/dimension resolution and SDK / reference-reader validation are pending.

  • No vendor instrumental ADF exports are available, and the only fixture is local-only (governed by Allotrope terms), so this cannot run in CI.

  • The JSON Simple Model (ASM) path is separate — see allotrope-asm.

Reference readers

The Allotrope SDK and the adfsee inspection tool; full conformance awaits redistributable fixtures and ontology resolution.

Samples & validation

Fixture: samples_local/allotrope_adf/adfsee_example.adf (4 records from 3 numeric cubes, including one 2-column measure; generated-index or seconds scale with a secondary 250/400 nm axis for the 2-D UV spectrum; mAU absorbance). The file is not committed because the ADF data package and ontologies remain governed by Allotrope terms even though adfsee is an open inspection tool; CI skips this test when samples_local/ is absent. The probe reports allotrope-adf at Confidence::Likely.