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§
- Parse
IdsVersion Error - 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.