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.
%3
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjectDefinition.htm'>IfcObjectDefinition</a>
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:?]
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRelAssociatesConstraint.htm'>IfcRelAssociatesConstraint</a>
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]
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjectDefinition.htm'>IfcObjectDefinition</a>:HasAssociations1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRelAssociatesConstraint.htm'>IfcRelAssociatesConstraint</a>:RelatedObjects0
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjective.htm'>IfcObjective</a>
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]
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRelAssociatesConstraint.htm'>IfcRelAssociatesConstraint</a>:RelatingConstraint1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjective.htm'>IfcObjective</a>:IfcObjective0
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>
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]
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjective.htm'>IfcObjective</a>:BenchmarkValues1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:IfcMetric0
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjectiveEnum.htm'>IfcObjectiveEnum</a>
IfcObjectiveEnum
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjective.htm'>IfcObjective</a>:ObjectiveQualifier1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjectiveEnum.htm'>IfcObjectiveEnum</a>:IfcObjectiveEnum0
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcLogicalOperatorEnum.htm'>IfcLogicalOperatorEnum</a>
IfcLogicalOperatorEnum
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjective.htm'>IfcObjective</a>:LogicalAggregator1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcLogicalOperatorEnum.htm'>IfcLogicalOperatorEnum</a>:IfcLogicalOperatorEnum0
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetricValueSelect.htm'>IfcMetricValueSelect</a>
IfcMetricValueSelect
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:DataValue1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetricValueSelect.htm'>IfcMetricValueSelect</a>: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:?]
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:DataValue1->IfcAppliedValue_0:IfcAppliedValue0
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTable.htm'>IfcTable</a>
IfcTable
1. Name
[0:1]
2. Rows
[1:?]
3. Columns
[1:?]
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:DataValue1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTable.htm'>IfcTable</a>:IfcTable0
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcBenchmarkEnum.htm'>IfcBenchmarkEnum</a>
IfcBenchmarkEnum
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:Benchmark1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcBenchmarkEnum.htm'>IfcBenchmarkEnum</a>:IfcBenchmarkEnum0
IfcReference_1
IfcReference
1. TypeIdentifier
[0:1]
Attribute1
2. AttributeIdentifier
[0:1]
3. InstanceName
[0:1]
4. ListPositions
[1:?]
5. InnerReference
[0:1]
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:ReferencePath1->IfcReference_1:IfcReference0
IfcLabel_1
IfcLabel
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:Name1->IfcLabel_1:IfcLabel0
IfcText_1
IfcText
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:Description1->IfcText_1:IfcText0
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcArithmeticOperatorEnum.htm'>IfcArithmeticOperatorEnum</a>
IfcArithmeticOperatorEnum
IfcAppliedValue_0:ArithmeticOperator1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcArithmeticOperatorEnum.htm'>IfcArithmeticOperatorEnum</a>: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
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcLengthMeasure.htm'>IfcLengthMeasure</a>
IfcLengthMeasure
IfcAppliedValue_0:AppliedValue1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcLengthMeasure.htm'>IfcLengthMeasure</a>:IfcLengthMeasure0
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcReal.htm'>IfcReal</a>
IfcReal
IfcAppliedValue_0:AppliedValue1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcReal.htm'>IfcReal</a>:IfcReal0
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableRow.htm'>IfcTableRow</a>
IfcTableRow
1. RowCells
[1:?]
2. IsHeading
[0:1]
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTable.htm'>IfcTable</a>:Rows1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableRow.htm'>IfcTableRow</a>:IfcTableRow0
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableColumn.htm'>IfcTableColumn</a>
IfcTableColumn
1. Identifier
[0:1]
2. Name
[0:1]
3. Description
[0:1]
4. Unit
[0:1]
5. ReferencePath
[0:1]
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTable.htm'>IfcTable</a>:Columns1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableColumn.htm'>IfcTableColumn</a>:IfcTableColumn0
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcIdentifier.htm'>IfcIdentifier</a>
IfcIdentifier
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableColumn.htm'>IfcTableColumn</a>:Identifier1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcIdentifier.htm'>IfcIdentifier</a>:IfcIdentifier0
IfcLabel_0
IfcLabel
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableColumn.htm'>IfcTableColumn</a>:Name1->IfcLabel_0:IfcLabel0
IfcText_0
IfcText
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableColumn.htm'>IfcTableColumn</a>: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]
<a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableColumn.htm'>IfcTableColumn</a>:ReferencePath1->IfcReference_0:IfcReference0
Figure 4.1.2.3.A
General UsageTable 4.1.2.3.B