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 be combine multiple metrics using boolean logic such as AND, OR, XOR, or NOT.
Figure 11 illustrates an instance diagram.
Figure 11 — Constraint Association |
<?xml version="1.0"?>
<ConceptTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" uuid="c08b264c-f7c6-479f-af7f-5d645c130ea8" name="Constraint Association" applicableSchema="IFC4" applicableEntity="IfcObjectDefinition">
<Rules>
<AttributeRule AttributeName="HasAssociations">
<EntityRules>
<EntityRule EntityName="IfcRelAssociatesConstraint">
<AttributeRules>
<AttributeRule AttributeName="RelatingConstraint">
<EntityRules>
<EntityRule EntityName="IfcObjective">
<AttributeRules>
<AttributeRule AttributeName="BenchmarkValues">
<EntityRules>
<EntityRule EntityName="IfcMetric">
<AttributeRules>
<AttributeRule RuleID="DataValue" AttributeName="DataValue">
<EntityRules>
<EntityRule EntityName="IfcMetricValueSelect" />
<EntityRule EntityName="IfcAppliedValue">
<AttributeRules>
<AttributeRule AttributeName="ArithmeticOperator">
<EntityRules>
<EntityRule EntityName="IfcArithmeticOperatorEnum" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="Components">
<EntityRules>
<EntityRule EntityName="IfcAppliedValue" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="AppliedValue">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
<EntityRule EntityName="IfcReal" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
<EntityRule EntityName="IfcTable">
<AttributeRules>
<AttributeRule AttributeName="Rows">
<EntityRules>
<EntityRule EntityName="IfcTableRow" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="Columns">
<EntityRules>
<EntityRule EntityName="IfcTableColumn">
<AttributeRules>
<AttributeRule AttributeName="Identifier">
<EntityRules>
<EntityRule EntityName="IfcIdentifier" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="Name">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="Description">
<EntityRules>
<EntityRule EntityName="IfcText" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="ReferencePath">
<EntityRules>
<EntityRule EntityName="IfcReference" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="Benchmark">
<EntityRules>
<EntityRule EntityName="IfcBenchmarkEnum" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="ReferencePath">
<EntityRules>
<EntityRule EntityName="IfcReference">
<AttributeRules>
<AttributeRule AttributeName="TypeIdentifier" />
<AttributeRule RuleID="Attribute1" AttributeName="AttributeIdentifier" />
<AttributeRule AttributeName="InnerReference" />
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="Name">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="Description">
<EntityRules>
<EntityRule EntityName="IfcText" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="ObjectiveQualifier">
<EntityRules>
<EntityRule EntityName="IfcObjectiveEnum" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="LogicalAggregator">
<EntityRules>
<EntityRule EntityName="IfcLogicalOperatorEnum" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>