IDS Structure and Specifications

Lesson 4 of 16 • ~5 min

Try it yourself!

Practice the concepts from this lesson in the interactive playground.

Try in Playground

File Architecture

An IDS file has a clear hierarchical structure designed for both human readability and machine processing.

High-Level Components

An IDS file contains:

1. IDS Metadata

  • General information describing the entire IDS
  • Title, author, purpose, version, etc.
  • Applies to all Specifications in the file
  • Covered in detail in the metadata section

2. Specifications (one or more)

  • Each addresses a specific information requirement
  • Core functional components of the IDS
  • Define rules about IFC model content

Examples of Specifications

  • "Walls must have a fire rating property"
  • "Doors cannot use specific classification codes"
  • "Spaces must meet minimum area requirements"

Specification Structure

Each Specification follows a consistent three-part structure:

1. Description

Purpose: Human-readable explanation of the requirement

Contains:

  • Why this requirement exists
  • Instructions for compliance
  • Context for stakeholders

Example: "Wall fire ratings are critical for building code compliance and safety analysis."

2. Applicability

Purpose: Defines which IFC elements the specification applies to

Function:

  • Filters the model to relevant elements
  • Defines the scope of checking

Examples:

  • "All wall elements"
  • "All door types"
  • "Load-bearing structural elements"

3. Requirements

Purpose: States what information must (or must not) be present

Function:

  • Defines the actual check to perform
  • Specifies expected data

Examples:

  • "Must have a FireRating property"
  • "Cannot use classification X"
  • "Area must be ≥ 10 m²"

Complete Example

Requirement: "All walls must have a fire rating property"

Description: "Wall fire ratings are critical for building code compliance"
Applicability: "This applies to all wall objects"
Requirements: "The wall objects must have a FireRating property"

Key Point:

  • Applicability = WHERE to check
  • Requirements = WHAT to check for
  • Description = WHY it matters

In an IDS, the Applicability and Requirements parts are expressed using Facets – we will discuss Facets shortly. Importantly, a Specification’s Description can also document the rationale behind the chosen applicability criteria and requirements, giving guidance on how to comply . It’s good practice to fill in the Description so that anyone reading the IDS (or the report from an IDS check) understands the intent behind each requirement.

Using Facets to Define Requirements

What are Facets?

Facets are the building blocks used to precisely describe what to filter or check in an IFC model. Each facet represents one type of information that an IFC entity might have.

The Six Facet Types

Facet Purpose Example
Entity Identifies IFC elements by type/class IfcWall, IfcDoor
Attribute Checks built-in IFC attributes Name, Description
Classification Verifies external classification codes OmniClass, Uniclass
Property Checks custom properties and values FireRating, LoadBearing
Material Validates material assignments Concrete, Steel
PartOf Verifies relationships/containment Part of system, In space

How Facets Work

In Applicability (Filtering):

  • Facets describe criteria elements must meet to be included
  • Example: Entity=IfcWall + Property LoadBearing=True
  • Result: Only load-bearing walls are selected

In Requirements (Checking):

  • Facets state what information is required or prohibited
  • Example: Property FireRating must exist
  • Result: Each selected element must have this property

Combining Facets

You can combine multiple facets for precise criteria:

Applicability: 
  - Entity = IfcWall
  - Property LoadBearing = True

Requirements:
  - Property FireRating must exist

Result: Load-bearing walls must have fire rating properties

Design Principles

  • Precise: Fixed parameters for unambiguous interpretation
  • Flexible: Complex restrictions allow ranges, lists, patterns
  • Combinable: Multiple facets work together for specific rules

Complex Restrictions Preview

Many requirements need flexibility beyond single values. IDS supports Complex Restrictions on facet parameters:

Types of Restrictions:

  • Lists: Multiple acceptable values ("IFC4X3" OR "IFC4")
  • Ranges: Numeric bounds (20 to 100)
  • Patterns: Text matching (naming convention "WT##")

Example Uses:

Property Value: ["INSITU", "PRECAST"]  ← Either value acceptable
Area: 20 ≤ value ≤ 100              ← Range restriction  
Name: "WT[0-9]{2}"                    ← Pattern like WT01, WT02

Detailed coverage of Complex Restrictions comes later in this course.

Example Specifications: Let’s look at a few example specifications to cement these concepts :

  • External load-bearing walls must have a fire rating property. – Applicability: Entity Facet (IFC Class is IfcWall), plus Property Facet (LoadBearing = TRUE in Pset_WallCommon) to single out load-bearing walls. Requirement: Property Facet (Pset_WallCommon – FireRating property must exist) . In effect, this Specification says: find all walls that are load-bearing, and ensure each has a FireRating property.
  • Bedrooms should have a minimum area of 10 m². – Applicability: Entity Facet (IFC Class is IfcSpace for spaces) and Attribute Facet (the space’s Description contains “BEDROOM” to identify bedroom spaces) . Requirement: Property Facet (Qto_SpaceBaseQuantities – NetFloorArea property value ≥ 10) . This means: for any space labeled as a bedroom, its NetFloorArea must be at least 10.
  • All brick wall types must be classified and follow a naming convention. – Applicability: Entity Facet (IFC Class is IfcWallType) and Material Facet (material is “brick”) . Requirements: Classification Facet (must have a classification in Uniclass 2015 with code starting “EF_25_10”) and Attribute Facet (Name must match pattern “WT##” like WT01, WT02, etc.) . In plain terms: any wall type made of brick must have a valid classification code and be named according to the WT01/WT02 scheme.

Each example above shows how multiple facets work together. By combining facets, IDS can express quite specific information requirements. If a single facet isn’t enough to capture a criterion, you simply add another facet.