OpenBIM.rs EPD¶
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:
- ÖKOBAUDAT;
- IBU.data, whose public description identifies its downloadable XML as ILCD+EPD;
- ECO Platform;
- InData, which governs the format.
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¶
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¶
- Published architecture — repository, dependency, and format boundaries
openbimrs/openbim— integrated workspace and facade- ISO 22057:2022 — standard catalogue entry
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.