Over the past two years, industry body buildingSMART has developed a new standard for defining model requirements in a machine-readable format. Currently the project is at version 0.9 and close to its first (1.0) release, so I decided to write a blog post about it.

The idea of IDS is to create a simple enough standard that can be implemented widely. This means that requirements can be tested early, maybe even in your authoring tool. Furthermore, because IDS is very precise, as soon as you have validated your model with a specific IDS, you can be assured that all the downstream processes have the required information.

Model checking

IDS is good for ensuring that information is in the correct location and format, but it is not a generic model checking specification. However, any model checking will definitely benefit from IDS since you can determine in advance whether certain information is present and valid.

Use cases

Some of the use cases that we see for IDS:

Country/municipality level IDS

There are many different requirements documents from governments that, although useful, are often ambiguous in how you should deliver the information. We see that governments are creating IDS specifications so applicants of building permit checks can validate their models in their authoring tools or CDE.

Contractor/sub constractor

Similar to the above situation, contractors could require subcontractors or suppliers to deliver IFC models according to specific IDS specifications.

Quantity takeoff

Do you already know what information will be required for quantity takeoff? Specify an IDS and you can always be sure that at least the information is going to be there.

How does it work?

An IDS can be serialized as an XML file and can consist of multiple specifications. Each Specification is checked in 2 stages:

Applicability

A selection is made from all the entities in the IFC file. Usually, entities are selected based on their type, but you can also select on properties or classifications, for example.

Requirements

All the entities established in the applicability phase are checked against the requirements of the Specification.

Facets that can be checked

The requirements can be composed of the following facets:

  • IFC Attributes (For example "Name", "Description")
  • Properties and Quantities (for example "Pset_WallCommon - IsExternal")
  • Classifications
  • Composition (is an object part of another object?)
  • Materials
  • IFC Type

What can facets be checked against

  • Existance (does the property exist?)
  • Equality (does a specific attribute have a given exact value?)
  • Bounds (is the value between two bounding values?)
  • Enumerations (does the value exist in a defined list of items?)
  • Measure (has the value of a given attribute or property been defined as an IfcLengthMeasure)

Example IDS Specification

Using this example we’ll test a simple requirement; All IfcOpeningElement entities must have the "Name" attribute set.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <ids:ids xmlns:ids="http://standards.buildingsmart.org/IDS" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://standards.buildingsmart.org/IDS  ids_09.xsd">   
      <ids:info>
          <ids:title>Example on use of attributes (for student research)</ids:title>
          <ids:copyright>buildingSMART International Ltd</ids:copyright>
          <ids:date>2022-01-12</ids:date>
      </ids:info>
      <ids:specifications>
          <ids:specification ifcVersion="IFC2X3" name="Aachen test" minOccurs="1">
              <ids:applicability>
                  <ids:entity>
                      <ids:name>
                          <ids:simpleValue>IFCOPENINGELEMENT</ids:simpleValue>
                      </ids:name>
                  </ids:entity>
              </ids:applicability>
              <ids:requirements>
                  <ids:attribute minOccurs="1">
                      <ids:name>
                          <ids:simpleValue>Name</ids:simpleValue>
                      </ids:name>
                  </ids:attribute>
              </ids:requirements>
          </ids:specification>
      </ids:specifications>
  </ids:ids>

IDS in BIM.works

I have been actively involved as a member of the IDS development group from the beginning. In BIM.works, IDS is implemented as an alternative way of doing model checks. You can copy-and-paste IDS specifications or write your own and store them in BIM.works, and they will automatically be validated for you.

Executing checks

Checks can be executed using the API, and the results can be retrieved as JSON or BCF. You can also use the BIM.works UI to run checks. Below is a screenshot of a partial result of an IDS check for wooden door frames.buildingSMART IDS Logo