The Property Facet
Lesson 10 of 16 • ~6 min
Try it yourself!
Practice the concepts from this lesson in the interactive 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 propertiesIfcElementQuantity- Quantities (areas, volumes, etc.)
Property Anatomy
Each property has three components:
Property Set Name
- Container for related properties
- Examples: "Pset_WallCommon", "Qto_SpaceBaseQuantities"
Property Name
- Specific property within the set
- Examples: "FireRating", "IsExternal", "NetFloorArea"
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 labelsIFCBOOLEAN- True/false valuesIFCLENGTHMEASURE- Length measurementsIFCAREAMEASURE- Area measurementsIFCINTEGER- 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_WallCommon→FireRating - Quantities:
Qto_SpaceBaseQuantities→NetFloorArea - Custom sets:
MyCompany_Concrete→MixDesign
Schema Differences:
- IFC2X3: Only properties (no quantity sets)
- IFC4+: Both properties and quantity sets supported
- IDS: Allows both
Pset_andQto_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_WallCommonapplies 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.