gemeinwert
BIM CVP

gemeinwert  /  wiki  /  model  /  ifc

IFC — Industry Foundation Classes

The open data model for buildings. Describes identity, semantics, properties and relationships of objects — from geometry to property sets to material and classification links. Since 2024 in version 4.3.2.0, officially standardised as ISO 16739-1:2024.

In one sentence

IFC is not a file, it is a structured model of thousands of defined entities and relationships that describes buildings and infrastructure in a vendor-neutral way.

Current versions

VersionReleasedStatusFor
IFC 4.3.2.0 April 2024 Final, ISO 16739-1:2024 Current target. First release covering buildings and infrastructure (bridges, road, rail, tunnel, ports) in one schema.
IFC 4.0.2.1 (ADD2 TC1) October 2017 Final, ISO 16739-1:2018 Stable building stand, widely implemented. Still the minimum target for many building workflows.
IFC 2x3 TC1 July 2007 Final, Legacy Existing stock, legacy FM, older tool chains. Read only, do not author new files in this schema.
IFC 4.1 / 4.2 2018 / 2019 Withdrawn Intermediate steps on the road to infrastructure extensions.
IFC 4.4.x Planning Watch, do not specify in tenders.
IFC 5 In development Next generation, potentially breaks much. Track separately from the stable profile.

The public IFC 4.3.2.0 documentation is semantically identical to the ISO release, but includes additional examples, clarifications and typo fixes — not a different schema version, just a more precise documentation layer.

Four layers

IFC is not flat. buildingSMART organises the schema into four conceptual layers, from generic to domain-specific:

LayerWhat is in itExample entities
Resource Layer Generic building blocks: geometry, materials, dates, strings, vectors, math. No construction semantics. IfcCartesianPoint, IfcVector, IfcDate, IfcExtrudedAreaSolid
Core Layer Core semantics: identity, relationships, object typing. Everything above this has a GlobalId. IfcRoot, IfcProject, IfcObjectDefinition, IfcRelationship
Interoperability Shared constructs across multiple domains: rooms, walls, doors, distribution systems. IfcWall, IfcDoor, IfcSpace, IfcDistributionElement
Domain Layer Domain-specific entities: HVAC, electrical, structural analysis, road, rail, bridge. IfcPump, IfcAlignment, IfcBridge, IfcRail, IfcRoad

The core entities that matter

Anyone working with IFC should know roughly a dozen entities and relationships by heart — that is how model structures become readable.

Identity

IfcRoot is the abstract base of all relevant objects above the Resource Layer. Provides four mandatory attributes: GlobalId (22-char compressed UUID), OwnerHistory, Name, Description. The GlobalId is stable across the entire model life — tools must not regenerate it without reason.

Project + spatial structure

IfcProject is the root of every model. Below it:

  • IfcSite — site / location
  • IfcBuilding — building (or, since 4.3, IfcFacility / IfcFacilityPart for infrastructure)
  • IfcBuildingStorey — storey
  • IfcSpace — room

Linked via IfcRelAggregates (whole-part relationship).

Assigning components

  • IfcRelContainedInSpatialStructureprimary spatial assignment (a wall is contained in a storey). Components have exactly one primary assignment.
  • IfcRelReferencedInSpatialStructuresecondary reference (a heating system references a storey but is not primarily contained there).

Typing

IfcRelDefinesByType links types to occurrences (1-to-N). An IfcDoorType defines a door kind, then many IfcDoor instances are derived from it. Clean attribute reuse.

Properties

IfcRelDefinesByProperties links property sets to objects (N-to-N). An IfcPropertySet can be bound to many objects, an object can carry many property sets. Structured attributes go through IfcPropertySet + IfcProperty, quantities through IfcElementQuantity.

Typical property sets are Pset_WallCommon, Pset_DoorCommon, Pset_SpaceCommon. Typical quantity sets: Qto_WallBaseQuantities, Qto_DoorBaseQuantities.

Systems and groups

IfcSystem bundles components into functional systems (HVAC system, electrical system, structural system). Assignment via IfcRelAssignsToGroup.

Material and classification

  • IfcRelAssociatesMaterial links materials to objects
  • IfcRelAssociatesClassification links classification systems (Uniclass, OmniClass, eBKP-H, ETIM)

Placement

  • IfcLocalPlacement — relative placement, classical for buildings (wall sits relative to the storey plane)
  • IfcLinearPlacement — linear referencing, new in 4.3, essential for infrastructure (bridge relative to alignment)
  • IfcAlignment — lead object for linear works such as road, rail, bridge

File formats

ExtensionFormatFor
.ifc STEP Physical File (text) Standard. Highest tool compatibility, most compact text form. buildingSMART recommends it as the default.
.ifcXML XML serialisation Readable with XML tools, but 3–5× larger than SPF. Useful for simple scripts.
.ifcZIP ZIP-packaged SPF or XML Most compact variant for transport.
.ttl / .rdf ifcOWL — RDF/Turtle Linked-data path. Interesting for semantic-web toolchains, thin in practice.
ifcJSON JSON variant Provisional / candidate — not yet established as a final exchange standard.

What changes between IFC4 and IFC 4.3?

Both have the same four layers, the same core-entity logic. The difference is not cosmetic — IFC 4.3 structurally extends the schema to linear infrastructure:

TopicIFC4 ADD2 TC1IFC 4.3.2.0
Focus Building-oriented, very widely implemented Buildings and linear infrastructure in one official ISO standard
Placement Primarily IfcLocalPlacement Adds IfcLinearPlacement, alignment geometry per ISO 19148
Spatial structure Building/Storey/Space hierarchy Generalised IfcFacility/IfcFacilityPart logic
Standard MVD Reference View 1.2 (Final) Reference View 1.2 plus Alignment Based View 1.0 (in Review)
Practice Building interoperability minimum Strategic target for mixed portfolios and infrastructure

A graph, not a tree

One of the most common misconceptions: IFC is a tree. It is not. IFC is a directed relationship graph in which components, rooms, types, properties and materials are linked via relationship entities. This has consequences for every CDE and every importer:

  • Properties must not be flattened into a single table — type properties and occurrence properties must remain distinct.
  • Spatial assignment is not duplicated — primary and secondary have different meanings.
  • Classification, material and quantities are separate relationship domains, not fields.
  • A GlobalId identifies an object uniquely across all views — tools must not change it between exports without reason. This discipline is the prerequisite for stable BCF issues across multiple model versions.

Mapping to signed events

BIM-CVP treats IFC models not as a stream of individual entities but as a signed file container with a metadata event. The reason: millions of IFC entities in millions of events would be unusable — and semantically unnecessary, because IFC is already a complete self-contained model format.

Per IFC file, two events are created:

kind:1063  NIP-94 File metadata
  tags: [
    ["url",   "https://blossom.example/<sha256>"],
    ["m",     "application/x-step"],
    ["x",     "<sha256>"],
    ["size",  "<bytes>"],
    ["schema",         "IFC4X3_ADD2"],       # IFC4_ADD2_TC1, IFC2X3_TC1
    ["mvd",            "ReferenceView"],     # AlignmentBasedView, IFC4Precast
    ["authoring-tool", "Revit"],             # ArchiCAD, Allplan, Tekla, …
    ["discipline",     "architecture"],      # mep, structural, electrical, civil, …
    ["iso19650-state", "Shared"],            # WIP / Shared / Published / Archive
    ["ifc-project",    "<IfcProject-GUID>"],
    ["a",              "<project-ref>"]
  ]
  content: { ifc_project_name, entity_count, notes }

kind:30904  File reference (parameterised replaceable)
  d: <file-guid>
  Links the NIP-94 event and adds project-specific fields
  (IfcSpatialStructureElement, replacement version, stage)

The IFC file itself lives on Blossom or another storage adapter. The hash guarantees integrity, the signature guarantees provenance.

Practical pitfalls

  • GUID churn — if authoring tools regenerate GlobalIds on re-export without reason, BCF issues and FM references lose their component bindings. Define tool-specific GUID stability rules in the BAP, run regression tests before publishing.
  • Type vs occurrence drift — properties get set on both the type and the occurrence at once, then conflict. Separate them clearly in the modelling guide.
  • Wrong spatial assignment — an element ends up in the wrong spatial structure. Filters, reports and evaluations break quietly. Automate IfcRelContainedInSpatialStructure checks.
  • Reference vs full confusion — the recipient expects editable authoring data but receives a Reference-View model with no editable intelligence (or vice versa). Name the exchange MVD explicitly in the AIA / BAP.
  • Infrastructure without alignment — bridge or trace models are only placed locally instead of linearly referenced. For infrastructure projects, make IfcAlignment + IfcLinearPlacement mandatory in the BAP.

Tool compatibility (vendor-self-reported, 2026)

ToolIFC 2x3IFC4 ADD2IFC 4.3
Archicad
ALLPLAN
Revit(plugin)
Solibri Office
BIMcollab Zoom
DESITE BIM✓ incl. alignment
Quadri✓ full
usBIM

These claims are vendor-self-reported and not verified by buildingSMART. For real tenders, always verify via a productive proof-of-concept with reference models, IDS test cases and BCF round-trip.

Read on

Sources