What is IDS?
Information Delivery Specification (IDS) is a buildingSMART standard that defines what information should be delivered in a BIM model. Think of it as a machine-readable contract between parties specifying exactly what data is required.
Unlike informal checklists or PDF documents, IDS files are structured XML that can be parsed and executed by validation software.
Why IDS Matters
Traditional BIM requirements often look like this:
"All walls must have a fire rating property"
This is ambiguous:
- What's the property called?
FireRating?Fire_Rating?Pset_WallCommon.FireRating? - What values are acceptable?
- Does it apply to all walls or just specific types?
IDS removes ambiguity by defining requirements precisely.
IDS Structure
An IDS file contains specifications, each with:
- Applicability: Which elements does this apply to?
- Requirements: What must those elements have?
<specification name="Wall Fire Rating">
<applicability>
<entity>
<name>IFCWALL</name>
</entity>
</applicability>
<requirements>
<property>
<propertySet>Pset_WallCommon</propertySet>
<name>FireRating</name>
<value>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]+h"/>
</xs:restriction>
</value>
</property>
</requirements>
</specification>
Facet Types
IDS supports several facet types for defining applicability and requirements:
| Facet | Purpose | Example |
|---|---|---|
| Entity | IFC class type | IFCWALL, IFCDOOR |
| Attribute | IFC attributes | Name, Description |
| Property | Pset properties | Pset_WallCommon.FireRating |
| Classification | Classification codes | Uniclass Ss_25_10 |
| Material | Material definitions | Concrete, Steel |
Validation Workflow
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ IFC Model │────▶│ IDS Validator│────▶│ Report │
└──────────────┘ └───────┬──────┘ └──────────────┘
│
┌───────▼──────┐
│ IDS File │
└──────────────┘
Getting Started
Tools for IDS
- IDS Editor: buildingSMART's official editor for creating IDS files
- IfcTester: Python library for IDS validation
- Blender Bonsai: IDS validation built into the Bonsai BIM addon
Basic Validation with IfcTester
from ifctester import ids, reporter
# Load IDS specification
my_ids = ids.open("requirements.ids")
# Load IFC model
my_ids.validate("model.ifc")
# Generate report
reporter.Html(my_ids).report("results.html")
Best Practices
- Start simple: Begin with critical requirements, add complexity gradually
- Test iteratively: Validate IDS against sample models before deployment
- Document intent: Use IDS descriptions to explain why requirements exist
- Version control: Track IDS changes like code
Common Pitfalls
- Over-specification: Requiring data that isn't needed
- Ambiguous patterns: Regex that matches unintended values
- Performance: Too many complex requirements slow validation
Conclusion
IDS transforms BIM requirements from ambiguous text into executable specifications. Combined with automated validation, it ensures consistent data quality across projects.
For teams serious about BIM data quality, IDS is essential infrastructure.