ODA IFC SDK Developer's Guide > Introduction into IFC Format > IFC File Formats
IFC File Formats

IFC File Formats

IFC data can be encoded in the following formats.

Format Description Supported by ODA IFC SDK
IFC-SPF An IFC file that contains data in the STEP physical file structure format and has an .ifc extension. This format is described in the ISO10303-21 standard. The IFC specification considers this file format as the default for exchange operations. +
IFC-XML* An IFC file that contains data represented as an XML document and has an .ifcXML extension. This format is described in the ISO10303-28 standard. An IFC XML document file is better known among modern programmers due to XML-style formatting but is less common in practice because it is bigger in size and sometimes can be significantly (several times) larger than a STEP physical file. +
IFC-ZIP An IFC file that contains a compressed STEP physical or XML document data and has an .ifczip extension. The resulting compressed IFCZIP file size differs insignificantly for IFC-SPF and IFC-XML formats. The compressed file has around 75-90% decrease in file size compared to the original. +
HDF A binary IFC file that has an .hdf extension and can store data within a hierarchical database, which provides high-performance access to the exchanged data. This format is described in the ISO10303-26 standard. +**
JSON An open text format that has a .json extension and provides easy-to-read text for the exchanged data. This format is described in the ISO/IEC 21778:2017 standard. +***
TTL Terse RDF Triple Language (Turtle) is based on the IFC Ontology Web Language (ifcOWL****) and has a .ttl extension. This format expresses IFC data in the Resource Description Framework (RDF) data model. This format does not rely on XML and is usually recognized as more readable and easier to edit manually than its XML-based version. -
RDF/XML This format is based on the IFC Ontology Web Language (ifcOWL****) and has an .rdf extension. This format expresses IFC data in the Resource Description Framework (RDF) data model and uses XML-based syntax for serializing RDF. -

* — ifcXML2X3 and ifcXML4 XML formats are not related to IFC schemas, i.e, models of any schema can be saved as ifcXML2X3 and ifcXML4. ODA supports read and write operations for ifcXML2X3.

** — IFC SDK supports read and write operations for the HDF5 file format only.

*** — IFC SDK provides experimental support of the read operations performed for the ifcJSON format.

**** — IFC Ontology Web Language provides a Web Ontology Language (OWL) representation of an IFC schema. Using the ifcOWL ontology, you can express building data via semantic web and linked data technologies. This provides easy linkage of building data to other types of data, for example product manufacturer data, material data, social data, etc.

Overview of an IFC STEP Physical File

As described earlier, an IFC-SPF file is the common format for working with IFC data. It consists of an IFC model as described below.

Any object in an IFC model is defined with the EXPRESS SCHEMA specification and stored in a STEP physical file.

The typical structure of a STEP physical file is illustrated below.

The header section contains the IFC file description, name, and schema. The data section contains entity data that is encoded according to the express schema definition.

Entity instance data records are stored in text format (one line for each entity instance record) and consists of the following fields:

  • #HANDLE — An entity's handle represented with a positive integer value in the range 0 to 263. The handle is unique within the IFC file and identifies the entity instance. It also can be used for a reference to an entity instance.
  • ENTITY_NAME — The name of an entity data type.
  • attrValue1, ..., attrValueN — A set of an entity instance's attribute values. The set of entity attributes and their order are defined by the EXPRESS SCHEMA. Attribute values follow after ENTITY_NAME within parentheses.

Because an IFC-SPF file is an open text file format, if you open any IFC-SPF file in a text editor, you see which records compose a file. The next picture shows an opened IFC file with annotations related to the structure of a STEP physical file that is demonstrated above.

In a STEP file, every handle (which is also called a STEP ID) of an entity data record can be referenced by another entity data record, which in turn can be referenced by another entity data record, and so on. For example:

It is important to note that IFC has a network-like structure: by following references you eventually find the original object where you started. The entry point to the graph of an IFC model is a single instance of the IfcProject type. It is important to know the schema with which you are currently working to get familiar with data represented in IFC STEP files. For more information, see IFC Schemas.

See Also

IFC Schemas
IFC SDK Overview
Copyright © 2002 – 2021. Open Design Alliance. All rights reserved.