4.1.2.3 Constraint Association 
The concept Constraint Association  describes how object or object types may have associated constraints indicating a qualitative objective or a quantitative metric to be met.
Constraints based on metrics are measurable, such that the status of a metric being valid is computer-interpretable. Metric constraints are based on simple conditional logic such as greater than a particular value or included within a specified list or table. Constraints may combine multiple metrics using Boolean logic such as AND, OR, XOR, or NOT.
    The following diagram shows the generic classes and relationships used when applying this concept.
    
    In addition, concepts may have particular importance to common or standardised industry practices and scenarios. For these specific usage scenarios, the table below shows a recommended list of general usage patterns that users may adopt.
    
G 
 
IfcObjectDefinition  
 
 
IfcObjectDefinition  
 
 
 
 
1. GlobalId 
 
 
[1:1] 
 
 
2. OwnerHistory 
 
 
[0:1] 
 
 
3. Name 
 
 
[0:1] 
 
 
4. Description 
 
 
[0:1] 
 
 
      HasAssignments 
 
 
[0:?] 
 
 
      Nests 
 
 
[0:1] 
 
 
      IsNestedBy 
 
 
[0:?] 
 
 
      HasContext 
 
 
[0:1] 
 
 
      IsDecomposedBy 
 
 
[0:?] 
 
 
      Decomposes 
 
 
[0:1] 
 
 
      HasAssociations 
 
 
[0:?] 
 
IfcRelAssociatesConstraint  
 
 
IfcRelAssociatesConstraint  
 
 
 
 
1. GlobalId 
 
 
[1:1] 
 
 
2. OwnerHistory 
 
 
[0:1] 
 
 
3. Name 
 
 
[0:1] 
 
 
4. Description 
 
 
[0:1] 
 
 
5. RelatedObjects 
 
 
[1:?] 
 
 
6. Intent 
 
 
[0:1] 
 
 
7. RelatingConstraint 
 
 
[1:1] 
 
IfcObjectDefinition :HasAssociations1->IfcRelAssociatesConstraint :RelatedObjects0 
 
 
 
IfcObjective  
 
 
IfcObjective  
 
 
 
 
1. Name 
 
 
[1:1] 
 
 
2. Description 
 
 
[0:1] 
 
 
3. ConstraintGrade 
 
 
[1:1] 
 
 
4. ConstraintSource 
 
 
[0:1] 
 
 
5. CreatingActor 
 
 
[0:1] 
 
 
6. CreationTime 
 
 
[0:1] 
 
 
7. UserDefinedGrade 
 
 
[0:1] 
 
 
      HasExternalReferences 
 
 
[0:?] 
 
 
      PropertiesForConstraint 
 
 
[0:?] 
 
 
8. BenchmarkValues 
 
 
[1:?] 
 
 
9. LogicalAggregator 
 
 
[0:1] 
 
 
10. ObjectiveQualifier 
 
 
[1:1] 
 
 
11. UserDefinedQualifier 
 
 
[0:1] 
 
IfcRelAssociatesConstraint :RelatingConstraint1->IfcObjective :IfcObjective0 
 
 
 
IfcMetric  
 
 
IfcMetric  
 
 
 
 
1. Name 
 
 
[1:1] 
 
 
2. Description 
 
 
[0:1] 
 
 
3. ConstraintGrade 
 
 
[1:1] 
 
 
4. ConstraintSource 
 
 
[0:1] 
 
 
5. CreatingActor 
 
 
[0:1] 
 
 
6. CreationTime 
 
 
[0:1] 
 
 
7. UserDefinedGrade 
 
 
[0:1] 
 
 
      HasExternalReferences 
 
 
[0:?] 
 
 
      PropertiesForConstraint 
 
 
[0:?] 
 
 
8. Benchmark 
 
 
[1:1] 
 
 
9. ValueSource 
 
 
[0:1] 
 
 
DataValue 
 
 
 
 
10. DataValue 
 
 
[0:1] 
 
 
11. ReferencePath 
 
 
[0:1] 
 
IfcObjective :BenchmarkValues1->IfcMetric :IfcMetric0 
 
 
 
IfcObjectiveEnum  
 
 
IfcObjectiveEnum  
 
 
 
IfcObjective :ObjectiveQualifier1->IfcObjectiveEnum :IfcObjectiveEnum0 
 
 
 
IfcLogicalOperatorEnum  
 
 
IfcLogicalOperatorEnum  
 
 
 
IfcObjective :LogicalAggregator1->IfcLogicalOperatorEnum :IfcLogicalOperatorEnum0 
 
 
 
IfcMetricValueSelect  
 
 
IfcMetricValueSelect  
 
 
 
IfcMetric :DataValue1->IfcMetricValueSelect :IfcMetricValueSelect0 
 
 
 
IfcAppliedValue_0 
 
 
IfcAppliedValue  
 
 
 
 
1. Name 
 
 
[0:1] 
 
 
2. Description 
 
 
[0:1] 
 
 
3. AppliedValue 
 
 
[0:1] 
 
 
4. UnitBasis 
 
 
[0:1] 
 
 
5. ApplicableDate 
 
 
[0:1] 
 
 
6. FixedUntilDate 
 
 
[0:1] 
 
 
7. Category 
 
 
[0:1] 
 
 
8. Condition 
 
 
[0:1] 
 
 
9. ArithmeticOperator 
 
 
[0:1] 
 
 
10. Components 
 
 
[1:?] 
 
 
      HasExternalReference 
 
 
[0:?] 
 
IfcMetric :DataValue1->IfcAppliedValue_0:IfcAppliedValue0 
 
 
 
IfcTable  
 
 
IfcTable  
 
 
 
 
1. Name 
 
 
[0:1] 
 
 
2. Rows 
 
 
[1:?] 
 
 
3. Columns 
 
 
[1:?] 
 
IfcMetric :DataValue1->IfcTable :IfcTable0 
 
 
 
IfcBenchmarkEnum  
 
 
IfcBenchmarkEnum  
 
 
 
IfcMetric :Benchmark1->IfcBenchmarkEnum :IfcBenchmarkEnum0 
 
 
 
IfcReference_1 
 
 
IfcReference  
 
 
 
 
1. TypeIdentifier 
 
 
[0:1] 
 
 
Attribute1 
 
 
 
 
2. AttributeIdentifier 
 
 
[0:1] 
 
 
3. InstanceName 
 
 
[0:1] 
 
 
4. ListPositions 
 
 
[1:?] 
 
 
5. InnerReference 
 
 
[0:1] 
 
IfcMetric :ReferencePath1->IfcReference_1:IfcReference0 
 
 
 
IfcLabel_1 
 
 
IfcLabel  
 
 
 
IfcMetric :Name1->IfcLabel_1:IfcLabel0 
 
 
 
IfcText_1 
 
 
IfcText  
 
 
 
IfcMetric :Description1->IfcText_1:IfcText0 
 
 
 
IfcArithmeticOperatorEnum  
 
 
IfcArithmeticOperatorEnum  
 
 
 
IfcAppliedValue_0:ArithmeticOperator1->IfcArithmeticOperatorEnum :IfcArithmeticOperatorEnum0 
 
 
 
IfcAppliedValue_1 
 
 
IfcAppliedValue  
 
 
 
 
1. Name 
 
 
[0:1] 
 
 
2. Description 
 
 
[0:1] 
 
 
3. AppliedValue 
 
 
[0:1] 
 
 
4. UnitBasis 
 
 
[0:1] 
 
 
5. ApplicableDate 
 
 
[0:1] 
 
 
6. FixedUntilDate 
 
 
[0:1] 
 
 
7. Category 
 
 
[0:1] 
 
 
8. Condition 
 
 
[0:1] 
 
 
9. ArithmeticOperator 
 
 
[0:1] 
 
 
10. Components 
 
 
[1:?] 
 
 
      HasExternalReference 
 
 
[0:?] 
 
IfcAppliedValue_0:Components1->IfcAppliedValue_1:IfcAppliedValue0 
 
 
 
IfcLengthMeasure  
 
 
IfcLengthMeasure  
 
 
 
IfcAppliedValue_0:AppliedValue1->IfcLengthMeasure :IfcLengthMeasure0 
 
 
 
IfcReal  
 
 
IfcReal  
 
 
 
IfcAppliedValue_0:AppliedValue1->IfcReal :IfcReal0 
 
 
 
IfcTableRow  
 
 
IfcTableRow  
 
 
 
 
1. RowCells 
 
 
[1:?] 
 
 
2. IsHeading 
 
 
[0:1] 
 
IfcTable :Rows1->IfcTableRow :IfcTableRow0 
 
 
 
IfcTableColumn  
 
 
IfcTableColumn  
 
 
 
 
1. Identifier 
 
 
[0:1] 
 
 
2. Name 
 
 
[0:1] 
 
 
3. Description 
 
 
[0:1] 
 
 
4. Unit 
 
 
[0:1] 
 
 
5. ReferencePath 
 
 
[0:1] 
 
IfcTable :Columns1->IfcTableColumn :IfcTableColumn0 
 
 
 
IfcIdentifier  
 
 
IfcIdentifier  
 
 
 
IfcTableColumn :Identifier1->IfcIdentifier :IfcIdentifier0 
 
 
 
IfcLabel_0 
 
 
IfcLabel  
 
 
 
IfcTableColumn :Name1->IfcLabel_0:IfcLabel0 
 
 
 
IfcText_0 
 
 
IfcText  
 
 
 
IfcTableColumn :Description1->IfcText_0:IfcText0 
 
 
 
IfcReference_0 
 
 
IfcReference  
 
 
 
 
1. TypeIdentifier 
 
 
[0:1] 
 
 
2. AttributeIdentifier 
 
 
[0:1] 
 
 
3. InstanceName 
 
 
[0:1] 
 
 
4. ListPositions 
 
 
[1:?] 
 
 
5. InnerReference 
 
 
[0:1] 
 
IfcTableColumn :ReferencePath1->IfcReference_0:IfcReference0 
 
 
 
 
 Figure 4.1.2.3.A  
 General UsageTable 4.1.2.3.B