Skip to content

Diff: architecture/bim-objects-substrate

From bf9d2e1 to bf9d2e1

+0 / −0 lines
BeforeAfter
--- ---
schema: foundry-doc-v1 schema: foundry-doc-v1
title: "BIM objects — substrate" title: "BIM objects — substrate"
slug: bim-objects-substrate slug: bim-objects-substrate
short_description: "BIM Objects anchor to the IFC 4.3 entity hierarchy, Uniclass 2015 classification, and bSDD URIs, organizing into eight primitive categories that encode spatial, elemental, material, assembly, system, performance, and climate-zone specifications." short_description: "BIM Objects anchor to the IFC 4.3 entity hierarchy, Uniclass 2015 classification, and bSDD URIs, organizing into eight primitive categories that encode spatial, elemental, material, assembly, system, performance, and climate-zone specifications."
category: architecture category: architecture
type: topic type: topic
status: active status: active
bcsc_class: public-disclosure-safe bcsc_class: public-disclosure-safe
last_edited: 2026-05-17 last_edited: 2026-05-17
editor: pointsav-engineering editor: pointsav-engineering
cites: [ifc-4-3, uniclass-2015, bsdd-v1, ids-1-0, dtcg-w3c] cites: [ifc-4-3, uniclass-2015, bsdd-v1, ids-1-0, dtcg-w3c]
paired_with: bim-objects-substrate.es.md paired_with: bim-objects-substrate.es.md
--- ---
The [[building-design-system-bim|Building Design System]] [[bim-objects-what-they-are|BIM Object]] library anchors every object to a node in the IFC 4.3 entity hierarchy, classified by Uniclass 2015, and published as a dereferenceable bSDD URI. This article describes how the [[bim-objects-three-layers|three-layer reference system]] works, what the eight BIM Object primitive categories encode, and how a BIM operator reads and applies them when authoring an IFC file. The [[building-design-system-bim|Building Design System]] [[bim-objects-what-they-are|BIM Object]] library anchors every object to a node in the IFC 4.3 entity hierarchy, classified by Uniclass 2015, and published as a dereferenceable bSDD URI. This article describes how the [[bim-objects-three-layers|three-layer reference system]] works, what the eight BIM Object primitive categories encode, and how a BIM operator reads and applies them when authoring an IFC file.
## Three Layers of Reference ## Three Layers of Reference
### Layer 1 — IFC 4.3 entity hierarchy ### Layer 1 — IFC 4.3 entity hierarchy
IFC 4.3 was published as ISO 16739-1:2024 in April 2024. The standard defines a hierarchy of named entity classes — `IfcSite`, `IfcBuilding`, `IfcBuildingStorey`, `IfcSpace`, `IfcWall`, `IfcSlab`, `IfcDoor`, and hundreds more — each with typed Property Sets (Psets) specifying what attributes a compliant implementation must support. IFC 4.3 was published as ISO 16739-1:2024 in April 2024. The standard defines a hierarchy of named entity classes — `IfcSite`, `IfcBuilding`, `IfcBuildingStorey`, `IfcSpace`, `IfcWall`, `IfcSlab`, `IfcDoor`, and hundreds more — each with typed Property Sets (Psets) specifying what attributes a compliant implementation must support.
Every [[building-design-system-bim|Building Design System]] BIM Object maps to a specific IFC entity class or Pset. The spatial BIM Object `bim.spatial.storey` anchors to `IfcBuildingStorey`; the performance BIM Object `bim.performance.door-fire-exit` anchors to `Pset_DoorCommon.IsFireExit`. When a BIM Object value changes, a validator can trace the change back to the IFC Pset that the BIM Object represents. Every [[building-design-system-bim|Building Design System]] BIM Object maps to a specific IFC entity class or Pset. The spatial BIM Object `bim.spatial.storey` anchors to `IfcBuildingStorey`; the performance BIM Object `bim.performance.door-fire-exit` anchors to `Pset_DoorCommon.IsFireExit`. When a BIM Object value changes, a validator can trace the change back to the IFC Pset that the BIM Object represents.
### Layer 2 — Uniclass 2015 classification floor ### Layer 2 — Uniclass 2015 classification floor
Uniclass 2015 is the unified classification system for the UK construction industry, maintained by the NBS. Building Design System BIM Objects carry a Uniclass 2015 reference in their `$extensions.uniclass` field, establishing a classification floor that maps to the national procurement and specification context. Uniclass 2015 is the unified classification system for the UK construction industry, maintained by the NBS. Building Design System BIM Objects carry a Uniclass 2015 reference in their `$extensions.uniclass` field, establishing a classification floor that maps to the national procurement and specification context.
The classification is non-normative for jurisdictions outside the UK but serves as the consistent structural vocabulary for the object catalogue. Where a North American equivalent exists — OmniClass, UniFormat II, or MasterFormat — the object carries a cross-map annotation in `$extensions.omniclass`. The classification is non-normative for jurisdictions outside the UK but serves as the consistent structural vocabulary for the object catalogue. Where a North American equivalent exists — OmniClass, UniFormat II, or MasterFormat — the object carries a cross-map annotation in `$extensions.omniclass`.
### Layer 3 — bSDD URIs ### Layer 3 — bSDD URIs
buildingSMART's Data Dictionary (bSDD) publishes machine-readable JSON-LD definitions for building properties and classifications, each with a stable dereferenceable URI such as `https://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/prop/IsFireExit`. Building Design System BIM Objects carry these URIs in their `$extensions.bsdd_uri` fields, linking the object to an authoritative definition that a validator or authoring tool can resolve at runtime. buildingSMART's Data Dictionary (bSDD) publishes machine-readable JSON-LD definitions for building properties and classifications, each with a stable dereferenceable URI such as `https://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/prop/IsFireExit`. Building Design System BIM Objects carry these URIs in their `$extensions.bsdd_uri` fields, linking the object to an authoritative definition that a validator or authoring tool can resolve at runtime.
## Eight BIM Object Primitive Categories ## Eight BIM Object Primitive Categories
The [[building-design-system-bim|Building Design System]] groups BIM Objects into eight categories, each mapped to a distinct layer of the IFC entity model. The [[building-design-system-bim|Building Design System]] groups BIM Objects into eight categories, each mapped to a distinct layer of the IFC entity model.
### 1. Spatial (`bim.spatial.*`) ### 1. Spatial (`bim.spatial.*`)
Site, Building, Storey, and Space — the `IfcSpatialStructureElement` hierarchy. BIM Objects in this category encode floor-to-floor heights, minimum net area per use type, and occupancy limits. These are the objects that drive building massing at the earliest design stage. Site, Building, Storey, and Space — the `IfcSpatialStructureElement` hierarchy. BIM Objects in this category encode floor-to-floor heights, minimum net area per use type, and occupancy limits. These are the objects that drive building massing at the earliest design stage.
Source file: `spatial.dtcg.json` Source file: `spatial.dtcg.json`
### 2. Elements (`bim.elements.*`) ### 2. Elements (`bim.elements.*`)
Walls, slabs, columns, beams, curtain walls, doors, and windows — `IfcProduct` subclasses. BIM Objects encode structural fire ratings, acoustic performance classes, maximum glazing ratios, and the door-width minima required by ADA 2010 and CSA-B651. Walls, slabs, columns, beams, curtain walls, doors, and windows — `IfcProduct` subclasses. BIM Objects encode structural fire ratings, acoustic performance classes, maximum glazing ratios, and the door-width minima required by ADA 2010 and CSA-B651.
Source file: `elements.dtcg.json` Source file: `elements.dtcg.json`
### 3. Materials (`bim.materials.*`) ### 3. Materials (`bim.materials.*`)
Thermal conductivity, density, acoustic absorption coefficients, and compressive strength — `Pset_MaterialCommon` and material-specific Psets. Material BIM Objects encode the properties of the substrate, not the assembly. Assembly-level properties (U-values for a wall assembly) are encoded in the Assemblies category. Thermal conductivity, density, acoustic absorption coefficients, and compressive strength — `Pset_MaterialCommon` and material-specific Psets. Material BIM Objects encode the properties of the substrate, not the assembly. Assembly-level properties (U-values for a wall assembly) are encoded in the Assemblies category.
Source file: `materials.dtcg.json` Source file: `materials.dtcg.json`
### 4. Assemblies (`bim.assemblies.*`) ### 4. Assemblies (`bim.assemblies.*`)
Composite element constructions — wall assemblies, floor-ceiling assemblies, roof assemblies — where the performance property belongs to the layered system, not any single material. Thermal transmittance (U-value) and sound reduction index (Rw) live here, anchored to ISO 10077 and ISO 717-1 respectively. Composite element constructions — wall assemblies, floor-ceiling assemblies, roof assemblies — where the performance property belongs to the layered system, not any single material. Thermal transmittance (U-value) and sound reduction index (Rw) live here, anchored to ISO 10077 and ISO 717-1 respectively.
Source file: `assemblies.dtcg.json` Source file: `assemblies.dtcg.json`
### 5. Systems (`bim.systems.*`) ### 5. Systems (`bim.systems.*`)
HVAC zones, electrical circuits, and plumbing networks — `IfcSystem` and `IfcDistributionSystem`. The central BIM Object in this category is the climate-zone-autonomy principle: one Tile equals one HVAC zone. The BIM Object `bim.systems.tile-climate-autonomy` encodes this invariant so any downstream validator can confirm a proposed floor-plate composition satisfies it. HVAC zones, electrical circuits, and plumbing networks — `IfcSystem` and `IfcDistributionSystem`. The central BIM Object in this category is the climate-zone-autonomy principle: one Tile equals one HVAC zone. The BIM Object `bim.systems.tile-climate-autonomy` encodes this invariant so any downstream validator can confirm a proposed floor-plate composition satisfies it.
Source file: `systems.dtcg.json` Source file: `systems.dtcg.json`
### 6. Performance (`bim.performance.*`) ### 6. Performance (`bim.performance.*`)
Energy, daylight, accessibility, and fire-safety thresholds — regulatory minima drawn from EN 12464-1 (workplace daylight), EN 17037 (daylight in buildings), ADA 2010, IBC 2021, and ASHRAE 90.1. Performance BIM Objects are the regulatory floor that the spatial and element objects must satisfy. Energy, daylight, accessibility, and fire-safety thresholds — regulatory minima drawn from EN 12464-1 (workplace daylight), EN 17037 (daylight in buildings), ADA 2010, IBC 2021, and ASHRAE 90.1. Performance BIM Objects are the regulatory floor that the spatial and element objects must satisfy.
The most architecturally consequential performance BIM Object is `bim.performance.max-workstation-to-window`, set at 6.0 metres from EN 12464-1:2021. This single value drives the Zone 1 Habitat depth in every professional office floor plate. The most architecturally consequential performance BIM Object is `bim.performance.max-workstation-to-window`, set at 6.0 metres from EN 12464-1:2021. This single value drives the Zone 1 Habitat depth in every professional office floor plate.
Source file: `performance.dtcg.json` Source file: `performance.dtcg.json`
### 7. Climate zones (`bim.climate-zones.*`) ### 7. Climate zones (`bim.climate-zones.*`)
ASHRAE 90.1 climate zones 1 through 8, encoding the heating-degree-day and cooling-degree-day thresholds that govern mechanical-system sizing across North American jurisdictions. These BIM Objects are consumed by service-codes when a building site is assigned to an ASHRAE zone and the energy model is validated. ASHRAE 90.1 climate zones 1 through 8, encoding the heating-degree-day and cooling-degree-day thresholds that govern mechanical-system sizing across North American jurisdictions. These BIM Objects are consumed by service-codes when a building site is assigned to an ASHRAE zone and the energy model is validated.
Source file: `climate-zones.dtcg.json` Source file: `climate-zones.dtcg.json`
### 8. Identity codes (`bim.identity-codes.*`) ### 8. Identity codes (`bim.identity-codes.*`)
Use-type codes (FFE series: M1, M2, B1, L1, A1, C1), tile codes (Tile A through Tile H), and key-plan index ranges. These are the opaque identifiers that planning documents use when describing floor-plate compositions. The BIM Object library is the lexicon that maps each code to its geometric and programme meaning. Use-type codes (FFE series: M1, M2, B1, L1, A1, C1), tile codes (Tile A through Tile H), and key-plan index ranges. These are the opaque identifiers that planning documents use when describing floor-plate compositions. The BIM Object library is the lexicon that maps each code to its geometric and programme meaning.
Source file: `identity-codes.dtcg.json` Source file: `identity-codes.dtcg.json`
## How BIM Objects Are Delivered ## How BIM Objects Are Delivered
The BIM Object library is distributed as a set of DTCG-format JSON files. DTCG (W3C Design Token Community Group format) is a JSON structure where each BIM Object carries a `$value`, `$type`, and `$description`, with optional `$extensions` for standards references and provenance. The BIM Object library is distributed as a set of DTCG-format JSON files. DTCG (W3C Design Token Community Group format) is a JSON structure where each BIM Object carries a `$value`, `$type`, and `$description`, with optional `$extensions` for standards references and provenance.
A BIM authoring tool or validator reads the DTCG files at startup and constructs an in-memory BIM Object index. Any dimension, threshold, or classification referenced in a design session resolves to a BIM Object value rather than a hard-coded number. When a BIM Object changes — because a code amendment raises the minimum corridor width, or a new Uniclass edition replaces a classification code — the consuming tool receives the update via a library version bump, not a manual re-entry of values across hundreds of model elements. A BIM authoring tool or validator reads the DTCG files at startup and constructs an in-memory BIM Object index. Any dimension, threshold, or classification referenced in a design session resolves to a BIM Object value rather than a hard-coded number. When a BIM Object changes — because a code amendment raises the minimum corridor width, or a new Uniclass edition replaces a classification code — the consuming tool receives the update via a library version bump, not a manual re-entry of values across hundreds of model elements.
## Relationship to the IFC File ## Relationship to the IFC File
The DTCG BIM Object library does not modify IFC files directly. It is an authoring-time reference — the source of truth for what values to write into an IFC Pset when a model element is created or modified. A BIM operator who follows the [[building-design-system-bim|Building Design System]] writes the IFC file with the BIM Object values; IDS 1.0 contracts then validate that the IFC file conforms to the published thresholds. The DTCG BIM Object library does not modify IFC files directly. It is an authoring-time reference — the source of truth for what values to write into an IFC Pset when a model element is created or modified. A BIM operator who follows the [[building-design-system-bim|Building Design System]] writes the IFC file with the BIM Object values; IDS 1.0 contracts then validate that the IFC file conforms to the published thresholds.
The BIM Object-to-IFC pipeline is therefore: The BIM Object-to-IFC pipeline is therefore:
``` ```
BIM Object value (bim.performance.max-workstation-to-window = 6.0 m) BIM Object value (bim.performance.max-workstation-to-window = 6.0 m)
↓ applied at authoring time ↓ applied at authoring time
IFC Pset_SpaceOccupancy attribute in IfcSpace IFC Pset_SpaceOccupancy attribute in IfcSpace
↓ validated at delivery time ↓ validated at delivery time
IDS 1.0 rule: IfcSpace.MaxWorkstationToWindow ≤ 6000 mm IDS 1.0 rule: IfcSpace.MaxWorkstationToWindow ≤ 6000 mm
``` ```
This separation — author with BIM Objects, validate with IDS — is the substrate that makes [[city-code-as-composable-geometry]] possible at the next layer. This separation — author with BIM Objects, validate with IDS — is the substrate that makes [[city-code-as-composable-geometry]] possible at the next layer.
## See also ## See also
- [[bim-objects-what-they-are]] — the pre-constraining thesis and how BIM Objects differ from IFC property sets - [[bim-objects-what-they-are]] — the pre-constraining thesis and how BIM Objects differ from IFC property sets
- [[bim-objects-three-layers]] — the Specification, Regulation, and Climate Zone layers and their composition rule - [[bim-objects-three-layers]] — the Specification, Regulation, and Climate Zone layers and their composition rule
- [[building-design-system-bim]] — the broader Building Design System for the built environment - [[building-design-system-bim]] — the broader Building Design System for the built environment
- [[flat-file-bim-leapfrog]] — the flat-file architecture that underpins the BIM Object vault - [[flat-file-bim-leapfrog]] — the flat-file architecture that underpins the BIM Object vault