Skip to content

OpenBIM.rs EPD

CI Documentation crates.io docs.rs MSRV

Pure-Rust contracts for using environmental product declaration (EPD) data in building information modelling, based on ISO 22057:2022.

This repository is the canonical home of the EPD family in OpenBIM.rs. The integration repository pins it under packages/epd.

Documentation

GitHub Pages builds these pages from the repository on every main push. The API is generated by rustdoc; the roadmap and changelog are copied from the canonical root Markdown files so their website versions cannot drift.

Status

The published 0.1.1 release is a reserved scaffold, not an EPD parser, writer, or validator. Current unreleased main adds a bounded, read-only ILCD+EPD v1.3 process adapter while retaining that strict capability boundary.

Capability Status
ISO 22057:2022 edition contract Implemented and unit-tested
All 18 EPD information-module codes, including A1-A3 Implemented and unit-tested
Semantic grouping (including D beyond the system boundary) Implemented and unit-tested
ISO 23387 data-template composition via openbim-dt Implemented and contract-tested on unreleased main
ISO 22057 XML parsing/writing Not applicable: the standard defines no single XML serialization
ILCD+EPD v1.3 process XML parsing Implemented on unreleased main; namespace/version gated and resource bounded
Lossless ILCD+EPD round trip Exact original bytes only for unmodified parsed documents
ILCD+EPD editing/writing, XSD validation, ZIP packages, and provider APIs Not implemented
INIES or openEPD adapters Not implemented
Complete ISO 22057 Annex A model and validation Not implemented
IFC integration Not implemented

No capability beyond the explicit rows above should be inferred from a crate existing on crates.io or from successful parsing of one format version.

Why there is no epd.xml schema here

ISO 22057 specifies an information structure for EPD data templates and maps it to existing practices. It does not assign a universal XML namespace or publish one normative XSD for all ISO 22057 datasets. Its mapping material covers more than one external format.

The implementation therefore keeps the ISO 22057 domain model separate from versioned format adapters. Inventing an ISO_22057 XML namespace would create a new private format while falsely presenting it as an ISO serialization.

ILCD+EPD ecosystem

The adapter targets the public InData ILCD+EPD data format, not a provider-private API. ILCD+EPD is used in the data ecosystems named for this implementation:

Provider use does not imply identical profiles, API terms, or redistribution rights. The adapter gates the InData wire version explicitly and preserves unknown provider extensions in the original byte snapshot.

Crate

Crate Purpose
openbim-epd Format-neutral ISO 22057 contracts and ISO 23387 data-template composition
openbim-ilcd-epd (unreleased) Explicit, bounded ILCD+EPD v1.3 process XML adapter

The short epd crate name is owned by another crates.io publisher, so this project ships only canonical openbim-* names.

Install

cargo add openbim-epd
use openbim_epd::{InformationModule, InformationModuleGroup, StandardEdition};

assert_eq!(StandardEdition::CURRENT.designation(), "ISO 22057:2022");
assert_eq!(InformationModule::A1.code(), "A1");
assert_eq!(
    InformationModule::D.group(),
    InformationModuleGroup::BeyondSystemBoundary
);

Architecture

EPD may consume shared data-template and IFC contracts. IFC, core, codec, and data-template substrate layers must never depend on EPD.

Standards material

No ISO/CEN document or annex workbook is distributed by this repository or the crate package. Legally accessed references remain under the ignored local references/specs/ directory; possession does not establish redistribution rights. The public InData release can be cloned at the pinned path documented in references/README.md, but its schemas and documents are still excluded from Git, crate packages, and Pages.

Development

Requires Rust 1.85 or newer, Python 3, and Node.js. Node.js is used only to syntax-check generated JavaScript before it enters the Pages archive.

git clone https://github.com/openbimrs/epd.git
cd epd
./scripts/gate.sh
python -m pip install -r docs/requirements.txt
./scripts/build-docs.sh

The gate checks formatting, build, tests, Clippy, rustdoc, and crates.io package verification using command exit codes. The documentation build assembles the site under target/site/, rejects symlinked ancestry, non-regular paths, unexpected locations, and malformed content, then verifies local links before creating the exact checked Pages upload at target/artifact.tar from an immutable content snapshot. The filename is part of the deploy-pages artifact contract; its rooted directory topology is derived from the validated snapshot without reopening the site tree.

Contributing

See CONTRIBUTING.md. Capability work must add executable conformance evidence and update the status table without overstating coverage.

License

AGPL-3.0-or-later — see LICENSE.