At the core of openBIM lies the IFC Schema (Industry Foundation Classes), the standardised data model that enables the exchange of building and infrastructure information across software platforms. If openBIM is the method, IFC is the common language it relies on.
This article is the first of two parts focused on IFC. Here, we will explore the history of its development and outline the basic principles of the schema and file formats. In the next part, we will look at the internal structure of IFC files in more detail.
The origins of IFC trace back to the late 1980s with work on STEP (ISO 10303), which provided a neutral way to describe product data. It introduced EXPRESS, a modelling language that still powers IFC today.
In 1994, major software vendors, including Autodesk, Bentley, and Nemetschek, founded the International Alliance for Interoperability (IAI), now known as buildingSMART International. Their goal was to create a vendor-neutral format for exchanging building data.
Key milestones include:
Development continues with discussions about IFC5. Since IFC is still based on the STEP physical file and EXPRESS schemas, its flexibility is limited. The future will likely involve graph-based models and linked data approaches, which will enable faster queries, better integration of digital twins, and more flexible ways to manage relationships between data objects. ⏳📂
It is important to distinguish between the schema and the file 📖💾:
The schema is built on an object-oriented structure. 🧱🔗
The IFC Schema has evolved from its origins in STEP and EXPRESS to become the backbone of openBIM interoperability. Today, it is used not only for building projects but also increasingly for infrastructure.
In this first part, we discussed the development of IFC and the basic concepts of the schema and formats. In the second part, we will take a closer look at the internal structure of an IFC file, including the header, data section, and how entities, properties, and relationships are organised. ✅📌
I’d love to hear your thoughts: how do you currently work with IFC files in your projects?