Skip to main content

Crate openbim_ids

Crate openbim_ids 

Source
Expand description

openbim-ids — buildingSMART Information Delivery Specification.

§What this is

The standard, machine-readable way to state “this model must contain these things, with these properties” and audit a model against it. It is the highest-leverage openBIM standard for real projects, because it turns contractual information requirements into an automated check.

§🚨 One namespace, six schema versions

Every published IDS version from 0.2 to 1.0 declares the same targetNamespace. The namespace identifies the format, never the version. Because the differences are in attribute names and cardinality rather than element names, a reader that guesses wrong does not fail — it silently produces a different specification.

Version detection must therefore report how it knows, and must surface disagreement between a file’s claim and its shape instead of picking one. openbim_core::Detected exists for exactly this.

Only 1.0 is an approved buildingSMART standard. Older versions are worth reading because files using them exist; new documents should be 1.0.

§Reporting discipline

An audit that quietly treats “property missing” as “check passed” is worse than no audit. Results distinguish applicable-and-passed, applicable-and-failed, and not-applicable — see openbim_core::Outcome.

§Repository boundary

IDS is a consumer of the IFC layer, not part of it. The IFC layer must never depend on this crate. Shared vocabulary belongs in openbim-core, and the openbimrs/openbim integration repository pins compatible revisions of the repositories without reversing that dependency direction.

§Status

read reads IDS 1.0 into the typed model; every document of the buildingSMART test corpus reads. write writes the model back as IDS 1.0 that validates against ids.xsd; for every corpus document, reading what it writes gives back what was read. Producers build a model with constructors such as Ids::new and Specification::new, without detection evidence.

With the audit-schema or audit feature, audit() checks a document against the IFC schemas of its listed releases (entities, predefined types, attributes, value types, data types, standard property sets, partOf relations): see audit. The feature depends on AGPL-3.0-or-later crates. Checking an IFC model against IDS is not implemented.

The corpus is also the acceptance bar for auditing: every pass- case must pass and every fail- case fail, with not-applicable distinguished from passed.

Re-exports§

pub use audit::audit;
pub use audit::AuditCode;
pub use audit::AuditFinding;
pub use audit::Severity;
pub use model::Applicability;
pub use model::Attribute;
pub use model::Classification;
pub use model::Entity;
pub use model::Facet;
pub use model::Ids;
pub use model::IfcVersion;
pub use model::Info;
pub use model::Material;
pub use model::PartOf;
pub use model::Property;
pub use model::Relation;
pub use model::Requirement;
pub use model::Requirements;
pub use model::Restriction;
pub use model::Specification;
pub use model::Value;
pub use occurrence::Occurrence;
pub use read::from_slice;
pub use read::from_str;
pub use read::ErrorKind;
pub use read::ReadError;
pub use version::detect_version;
pub use version::Signal;
pub use version::VersionSignals;
pub use write::to_string;
pub use write::to_writer;
pub use write::WriteError;
pub use write::WriteErrorKind;

Modules§

audit
Auditing IDS documents against the IFC schemas of their listed releases.
model
The typed content of an IDS 1.0 document.
occurrence
Occurrence, modelled where each IDS revision puts it.
read
Reading IDS 1.0 documents.
version
Version detection that reports the evidence it used.
write
Writing IDS 1.0 documents.

Structs§

ParseIdsVersionError
The error returned when a string does not name a published IDS version.

Enums§

IdsVersion
A published IDS schema version.

Constants§

NAMESPACE
The XML namespace shared by all IDS versions.