The Property Facet

Lesson 10 of 16 • ~6 min

Try it yourself!

Practice the concepts from this lesson in the interactive playground.

Try in Playground

Overview

The Property Facet is one of the most powerful facets in IDS because IFC Properties are the primary mechanism to extend information on IFC entities beyond basic attributes.

Why Properties Matter

Properties store most meaningful model data:

  • Fire ratings, load bearing indicators
  • Insulation thickness, costs
  • Performance characteristics
  • Custom project data

IFC Property Structure

Organization

Properties are organized in Property Sets:

  • IfcPropertySet - Common properties
  • IfcElementQuantity - Quantities (areas, volumes, etc.)

Property Anatomy

Each property has three components:

  1. Property Set Name

    • Container for related properties
    • Examples: "Pset_WallCommon", "Qto_SpaceBaseQuantities"
  2. Property Name

    • Specific property within the set
    • Examples: "FireRating", "IsExternal", "NetFloorArea"
  3. Value

    • Data with specific type (text, number, boolean)
    • May include units

Property Set Types

Type Prefix Purpose Examples
Standard Pset_ buildingSMART defined Pset_WallCommon
Quantities Qto_ Measurements Qto_SpaceBaseQuantities
Custom Various Project-specific MyCompany_Concrete

Property Facet Parameters

The Property Facet uses several parameters to precisely identify properties and their expected characteristics:

propertySet (Required)

Purpose: Name of the property set containing the property

Examples:

"Pset_WallCommon"           ← Standard wall properties
"Qto_SpaceBaseQuantities"   ← Space measurements
"MyCompany_Concrete"        ← Custom property set

baseName (Required)

Purpose: Name of the specific property within the set

Examples:

"FireRating"     ← Fire resistance rating
"LoadBearing"    ← Structural load bearing flag  
"NetFloorArea"   ← Usable floor area
"ConcreteMix"    ← Custom concrete specification

dataType (Optional)

Purpose: Expected IFC data type of the property value

Common Types:

  • IFCLABEL - Text labels
  • IFCBOOLEAN - True/false values
  • IFCLENGTHMEASURE - Length measurements
  • IFCAREAMEASURE - Area measurements
  • IFCINTEGER - Whole numbers

Usage: If specified, property value must match this type

value (Optional)

Purpose: Expected value or value criteria

Options:

  • Specific value: "2HR", true, 100
  • Complex restrictions: Lists, ranges, patterns
  • Omitted: Property must exist with any non-empty value

uri (Optional)

Purpose: Reference URI for property definition (informational only)

Use: Links to standards like buildingSMART Data Dictionary
Note: Not used in model checking, documentation only

How IDS Checks Property Facets

Basic Requirements:
To use a Property facet you must specify which property (set and name) you are checking. Optionally you can specify data type and value criteria.

Checking Process:

  • Property Set Match: Element must have a property set with the specified name
  • Property Existence: Within that set, a property with the specified name must exist
  • Data Type Validation: If dataType is specified, the property's value must be of that type (or convertible)
  • Value Matching: If value is specified, the property value must match (or fall within restrictions)
  • Failure Conditions: Missing property or empty/null values when values are expected

Property vs Quantity

Coverage: The Property facet handles both "regular" properties and "quantities" (from IfcElementQuantity sets). They are treated identically in IDS.

Usage: Specify the set and property name for both types:

  • Standard properties: Pset_WallCommonFireRating
  • Quantities: Qto_SpaceBaseQuantitiesNetFloorArea
  • Custom sets: MyCompany_ConcreteMixDesign

Schema Differences:

  • IFC2X3: Only properties (no quantity sets)
  • IFC4+: Both properties and quantity sets supported
  • IDS: Allows both Pset_ and Qto_ sets, plus custom ones

Unit Considerations

SI Base Units: IDS assumes all measure values are in SI base units for consistency:

IFC Measure Type SI Unit Example
IFCLENGTHMEASURE meters 2.5 = 2.5m
IFCAREAMEASURE square meters 10 = 10m²
IFCVOLUMEMEASURE cubic meters 50 = 50m³

Implementation: Checking software handles unit conversion automatically. Authors use SI units in IDS values.

Limitation: Cannot enforce specific unit systems - only values in standardized baseline units.

Supported Property Types

Supported:

  • Single values
  • Bounded (range) values
  • Lists and enumerations
  • Tables

Not Supported:

  • Complex properties (IfcComplexProperty)
  • Reference properties (IfcReferenceValue)

Practical Impact: IDS handles typical properties found in normal IFC models. Complex/reference properties are rare in practice.

Property Facet Parameters Summary

Parameter Required Purpose Details
propertySet Property set name Must match IfcPropertySet or IfcElementQuantity name exactly. Standard sets use "Pset_" or "Qto_" prefixes. Custom sets use other naming.
baseName Property name Specific property within the set (e.g., "FireRating", "IsExternal"). Must exist with non-empty value.
dataType Expected data type IFC data type name (IFCLABEL, IFCBOOLEAN, IFCLENGTHMEASURE, etc.). Property value must match this type.
value Value criteria Required value, list, range, or pattern. If omitted, any non-empty value acceptable.
uri Reference URI Documentation link to property definition. Not used in checking.

Practical Examples

1. Property Existence Check

Requirement: "Wall must have an AcousticRating property"

propertySet: "Pset_WallCommon"
baseName: "AcousticRating"
(no value specified)

Result: Checks that AcousticRating property exists with any non-empty value

2. Specific Property Value

Requirement: "Column must have FireRating = 2HR"

propertySet: "Pset_ColumnCommon"
baseName: "FireRating"
value: "2HR"

Result: FireRating property must equal exactly "2HR"

3. Numeric Range

Requirement: "Slab net volume must be between 20 and 100 m³"

propertySet: "Qto_SlabBaseQuantities"
baseName: "NetVolume"
value: "20 ≤ value ≤ 100"
dataType: "IFCVOLUMEMEASURE"

Result: NetVolume must be within range (values in SI units - cubic meters)

4. Multiple Allowed Values

Requirement: "Concrete element must have CastingMethod either INSITU or PRECAST"

propertySet: "Pset_ConcreteElementGeneral"
baseName: "CastingMethod"
value: ["INSITU", "PRECAST"]

Result: CastingMethod must be one of the listed values

5. Custom Property Set

Requirement: "Element must have ConcreteMix property with value A, B, or C"

propertySet: "MyCompany_Concrete"
baseName: "ConcreteMix"
value: ["A", "B", "C"]

Result: Checks custom property set for specific property values

These examples cover typical uses: existence checks, specific values, ranges, and lists.

Important Considerations

Applicability Usage:

  • Property facets work in both Applicability and Requirements
  • Applicability Example: Filter load-bearing elements using LoadBearing = TRUE
  • Requirements Example: Enforce that selected elements have specific properties

Entity Compatibility:

  • Standard properties have defined "Applicable Entities" per buildingSMART
  • Example: Pset_WallCommon applies to walls, not columns
  • Best Practice: Only require standard properties on intended entity types
  • Custom Properties: Can apply to any entity type

Numeric Handling:

  • Remember SI unit requirements for numeric values
  • Bounded values: Entire range must fall within restrictions
  • Unit conversion handled by checking software

Usage Patterns:

  • Requirements: Usually enforce property presence and values
  • Combined Facets: Often used with Entity facets for precision

Property Facet Examples Summary

Use Case Configuration Result
Property existence propertySet="Pset_WallCommon"
baseName="AcousticRating"
Wall must have acoustic rating property
Specific value propertySet="Pset_ColumnCommon"
baseName="FireRating"
value="2HR"
Column must have FireRating = "2HR"
Numeric range propertySet="Qto_SlabBaseQuantities"
baseName="NetVolume"
value="20 ≤ value ≤ 100"
Slab volume between 20-100 m³
Multiple values propertySet="Pset_ConcreteElementGeneral"
baseName="CastingMethod"
value=["INSITU","PRECAST"]
Casting method must be listed option
Custom property propertySet="MyCompany_Concrete"
baseName="ConcreteMix"
value=["A","B","C"]
Custom property with specific values

With the Property facet explained, we’ll move to the Material facet, which checks materials assigned to elements.