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