Skip to content

ifc-classification ​

Classification systems, document references, libraries, external references.

StatusImplemented
Latest release0.3.0 (2026-09-29)
Registriescrates.io ifc-classification
Via the facadeopenbim-ifc feature classification
API documentationrustdoc · docs.rs
Sourcecrates/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) ​

  • ClassificationHierarchy and EffectiveClassifications are #[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") sets Some):
    • 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() and LibraryReferenceDraft::new(), which now also derive Default

Changed ​

  • Depends on ifc-schema with its default features named explicitly (every bundled release), now that the workspace dependency turns them off for the facade's per-release features (#112).
  • UnsupportedSchema reads "a release this crate has no verified layout for" instead of "no bundled schema table".
  • A model whose header declares IFC4X1 or IFC4X2 is refused with the existing unsupported-schema error. ifc-schema now 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

Released under the AGPL-3.0-or-later licence. ISO and CEN standards material is not redistributed.