Skip to content

Data model

The central object is Material: formula, elements, optional CrystalStructure, a list of MaterialProperty entries, and ProvenanceRecord for lineage. Existing 0.1 JSON records remain valid.

Properties carry source, method (dft, experimental, model_predicted, derived, unknown), and optional confidence / uncertainty when the upstream provides them.

Optional PropertyContext records decision-neutral conditions: temperature, pressure, environment, orientation, material state, process route, specimen, test method, instrument, statistical basis, and applicability. SourceArtifact carries citation/DOI, URI, upstream revision, page, license, and SHA-256 integrity metadata. These fields describe evidence; they do not encode approval, requirements, qualification, or decision linkage.

DatasetManifest gives a normalized dataset a deterministic content identity and records source format, accepted/rejected counts, degradation state, content and normalized checksums, and normalized byte size. SimulationResultEnvelope is the corresponding engine-neutral evidence contract for imported results.

from mattergraph import MaterialProperty, PropertyContext, Quantity, SourceArtifact

value = MaterialProperty(
    name="yield_strength",
    value=410,
    unit="MPa",
    source="published_table",
    method="experimental",
    context=PropertyContext(
        temperature=Quantity(value=298.15, unit="K"),
        orientation="rolling direction",
        test_method="ASTM E8",
    ),
    source_artifact=SourceArtifact(
        citation="Example et al. (2025)",
        license="CC-BY-4.0",
        checksum_sha256="a" * 64,
    ),
)

Pydantic models are the source of truth for JSON interchange. Canonically formatted schemas live under data/schemas/; regenerate with python scripts/generate_schemas.py and verify drift with python scripts/generate_schemas.py --check.