ifc-classification
Classification systems, document references, libraries, external references.
| Status | Implemented |
| Latest release | 0.3.0 (2026-09-29) |
| Registries | crates.io ifc-classification |
| Via the facade | openbim-ifc feature classification |
| API documentation | rustdoc · docs.rs |
| Source | crates/ifc-classification/ |
Overview
Borrowed IFC2X3/IFC4/IFC4X3 classification, document, library and association semantics.
Views borrow ifc_model::Model and read every record against the release its header declares (see classification_schema): IFC2X3 TC1, IFC4 ADD2 TC1 or IFC4X3 ADD2. Slot positions, selects, domains and enumerations come from that release's bundled table, looked up by attribute name. A header declaring several schemas, or one with no bundled table, is refused rather than read as IFC4; a header declaring none (an in-memory model) binds IFC4.
Authoring helpers stage records on a caller-owned ifc_model::Transaction in the same release's layout, refusing values and entities the release cannot hold. No query performs external I/O.
Depends on
Changes
Latest release, 0.3.0 (2026-09-29):
Changed (breaking)
ClassificationHierarchyandEffectiveClassificationsare#[non_exhaustive].- Every public draft is
#[non_exhaustive], so struct literals no longer compile outside the crate. Each gains a constructor taking its required fields and one builder setter per other field, named after the field and taking the unwrapped value (.source("NBS")setsSome):ClassificationDraft::new(name)DocumentDraft::new(identification, name)LibraryDraft::new(name)AssociationDraft::new(global_id, related_objects)ExternalReferenceRelationshipDraft::new(relating_reference, related_resources)ClassificationReferenceDraft::new(),DocumentReferenceDraft::new()andLibraryReferenceDraft::new(), which now also deriveDefault
Changed
- Depends on
ifc-schemawith its default features named explicitly (every bundled release), now that the workspace dependency turns them off for the facade's per-release features (#112). UnsupportedSchemareads "a release this crate has no verified layout for" instead of "no bundled schema table".- A model whose header declares
IFC4X1orIFC4X2is refused with the existing unsupported-schema error.ifc-schemanow bundles both releases, but no layout here is verified against them, so they are never read as IFC4 or IFC4X3.
Full history: crates/ifc-classification/CHANGELOG.md