4.5 Object Composition

Objects may be composed into parts to indicate levels of detail, such as a building having multiple storeys, a framed wall having studs, or a task having subtasks. Composition may form a hierarchy of multiple levels, where an object must have a single parent, or if a top-level object then declared within the single project or a project library.

mvdXML Specification
<?xml version="1.0"?>
<ConceptTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" uuid="5098cd13-bf4b-473a-a846-a60f69e9b738" name="Object Composition" status="sample" applicableSchema="IFC4" applicableEntity="IfcObjectDefinition">
  <SubTemplates>
    <ConceptTemplate uuid="02eefcc6-b26c-4f20-9c7c-c30ae74eb9a9" name="Aggregation" status="sample" applicableSchema="IFC4" applicableEntity="IfcObjectDefinition">
      <SubTemplates>
        <ConceptTemplate uuid="ca0f65e2-3913-4fdb-8a09-0c5c7a0d5421" name="Element Composition" status="sample" applicableSchema="IFC4" applicableEntity="IfcElement">
          <Rules>
            <AttributeRule RuleID="Decomposes" AttributeName="Decomposes">
              <EntityRules>
                <EntityRule EntityName="IfcRelAggregates">
                  <AttributeRules>
                    <AttributeRule RuleID="RelatingObject" AttributeName="RelatingObject">
                      <EntityRules>
                        <EntityRule EntityName="IfcElement">
                          <AttributeRules>
                            <AttributeRule RuleID="ElementName" AttributeName="Name">
                              <EntityRules>
                                <EntityRule EntityName="IfcLabel" />
                              </EntityRules>
                            </AttributeRule>
                          </AttributeRules>
                        </EntityRule>
                      </EntityRules>
                    </AttributeRule>
                  </AttributeRules>
                </EntityRule>
              </EntityRules>
            </AttributeRule>
          </Rules>
        </ConceptTemplate>
        <ConceptTemplate uuid="8a27c15a-c4ea-4ca9-8cce-7fbba1c9bce0" name="Element Decomposition" status="sample" applicableSchema="IFC4" applicableEntity="IfcElement">
          <Rules>
            <AttributeRule RuleID="IsDecomposedBy" AttributeName="IsDecomposedBy">
              <EntityRules>
                <EntityRule EntityName="IfcRelAggregates">
                  <AttributeRules>
                    <AttributeRule RuleID="RelatedObjects" AttributeName="RelatedObjects">
                      <EntityRules>
                        <EntityRule EntityName="IfcElement">
                          <AttributeRules>
                            <AttributeRule RuleID="PartName" AttributeName="Name">
                              <EntityRules>
                                <EntityRule EntityName="IfcLabel" />
                              </EntityRules>
                            </AttributeRule>
                          </AttributeRules>
                        </EntityRule>
                      </EntityRules>
                    </AttributeRule>
                  </AttributeRules>
                </EntityRule>
              </EntityRules>
            </AttributeRule>
          </Rules>
        </ConceptTemplate>
        <ConceptTemplate uuid="8c0fd2f7-71bb-4e6e-8fdb-0c02b352f14a" name="Spatial Composition" status="sample" applicableSchema="IFC4" applicableEntity="IfcSpatialElement">
          <Rules>
            <AttributeRule AttributeName="Decomposes">
              <EntityRules>
                <EntityRule EntityName="IfcRelAggregates">
                  <AttributeRules>
                    <AttributeRule RuleID="RelatingObject" AttributeName="RelatingObject">
                      <EntityRules>
                        <EntityRule EntityName="IfcProject">
                          <AttributeRules>
                            <AttributeRule RuleID="ProjectName" AttributeName="Name" />
                          </AttributeRules>
                        </EntityRule>
                        <EntityRule EntityName="IfcSpatialElement">
                          <AttributeRules>
                            <AttributeRule RuleID="SpatialElementName" AttributeName="Name" />
                          </AttributeRules>
                        </EntityRule>
                      </EntityRules>
                    </AttributeRule>
                  </AttributeRules>
                </EntityRule>
              </EntityRules>
            </AttributeRule>
          </Rules>
        </ConceptTemplate>
        <ConceptTemplate uuid="667f8443-ecce-4a8d-a63f-931fab0453e0" name="Spatial Decomposition" status="sample" applicableSchema="IFC4" applicableEntity="IfcObjectDefinition">
          <Rules>
            <AttributeRule AttributeName="IsDecomposedBy">
              <EntityRules>
                <EntityRule EntityName="IfcRelAggregates">
                  <AttributeRules>
                    <AttributeRule RuleID="RelatedObjects" AttributeName="RelatedObjects">
                      <EntityRules>
                        <EntityRule EntityName="IfcSpatialElement">
                          <AttributeRules>
                            <AttributeRule RuleID="SpatialElementName" AttributeName="Name">
                              <EntityRules>
                                <EntityRule EntityName="IfcLabel" />
                              </EntityRules>
                            </AttributeRule>
                          </AttributeRules>
                        </EntityRule>
                      </EntityRules>
                    </AttributeRule>
                  </AttributeRules>
                </EntityRule>
              </EntityRules>
            </AttributeRule>
          </Rules>
        </ConceptTemplate>
      </SubTemplates>
    </ConceptTemplate>
    <ConceptTemplate uuid="d1e6b86e-7658-443c-b708-86b7dd8b12f4" name="Nesting" status="sample" applicableSchema="IFC4" applicableEntity="IfcObjectDefinition">
      <Rules>
        <AttributeRule AttributeName="IsNestedBy">
          <EntityRules>
            <EntityRule EntityName="IfcRelNests" />
          </EntityRules>
        </AttributeRule>
      </Rules>
      <SubTemplates>
        <ConceptTemplate uuid="38ca8788-5e47-411c-8294-d56f9e9a5691" name="Object Nesting" status="sample" applicableSchema="IFC4" applicableEntity="IfcObjectDefinition">
          <Rules>
            <AttributeRule AttributeName="IsNestedBy">
              <EntityRules>
                <EntityRule EntityName="IfcRelNests">
                  <AttributeRules>
                    <AttributeRule RuleID="Type" AttributeName="RelatedObjects">
                      <EntityRules>
                        <EntityRule EntityName="IfcObject" />
                      </EntityRules>
                    </AttributeRule>
                  </AttributeRules>
                </EntityRule>
              </EntityRules>
            </AttributeRule>
          </Rules>
        </ConceptTemplate>
        <ConceptTemplate uuid="fbf23658-a429-4480-9b41-5e805944781b" name="Element Nesting" status="sample" applicableSchema="IFC4" applicableEntity="IfcElement">
          <Rules>
            <AttributeRule AttributeName="IsNestedBy">
              <EntityRules>
                <EntityRule EntityName="IfcRelNests">
                  <AttributeRules>
                    <AttributeRule RuleID="Type" AttributeName="RelatedObjects">
                      <EntityRules>
                        <EntityRule EntityName="IfcElement">
                          <AttributeRules>
                            <AttributeRule AttributeName="ObjectPlacement">
                              <EntityRules>
                                <EntityRule EntityName="IfcLocalPlacement" />
                              </EntityRules>
                            </AttributeRule>
                            <AttributeRule RuleID="PredefinedType" AttributeName="PredefinedType" />
                          </AttributeRules>
                        </EntityRule>
                      </EntityRules>
                    </AttributeRule>
                  </AttributeRules>
                </EntityRule>
              </EntityRules>
            </AttributeRule>
          </Rules>
        </ConceptTemplate>
        <ConceptTemplate uuid="bafc93b7-d0e2-42d8-84cf-5da20ee1480a" name="Port Nesting" status="sample" applicableSchema="IFC4" applicableEntity="IfcDistributionElement">
          <Rules>
            <AttributeRule RuleID="PredefinedType" AttributeName="PredefinedType" />
            <AttributeRule AttributeName="IsNestedBy">
              <EntityRules>
                <EntityRule EntityName="IfcRelNests">
                  <AttributeRules>
                    <AttributeRule AttributeName="RelatedObjects">
                      <EntityRules>
                        <EntityRule EntityName="IfcDistributionPort">
                          <AttributeRules>
                            <AttributeRule RuleID="PortName" AttributeName="Name">
                              <EntityRules>
                                <EntityRule EntityName="IfcLabel" />
                              </EntityRules>
                            </AttributeRule>
                            <AttributeRule RuleID="Flow" AttributeName="FlowDirection">
                              <EntityRules>
                                <EntityRule EntityName="IfcFlowDirectionEnum" />
                              </EntityRules>
                            </AttributeRule>
                            <AttributeRule RuleID="SystemType" AttributeName="SystemType">
                              <EntityRules>
                                <EntityRule EntityName="IfcDistributionSystemEnum" />
                              </EntityRules>
                            </AttributeRule>
                            <AttributeRule AttributeName="ObjectPlacement">
                              <EntityRules>
                                <EntityRule EntityName="IfcLocalPlacement">
                                  <AttributeRules>
                                    <AttributeRule AttributeName="RelativePlacement">
                                      <EntityRules>
                                        <EntityRule EntityName="IfcAxis2Placement3D">
                                          <AttributeRules>
                                            <AttributeRule AttributeName="Location">
                                              <EntityRules>
                                                <EntityRule EntityName="IfcCartesianPoint" />
                                              </EntityRules>
                                            </AttributeRule>
                                            <AttributeRule AttributeName="Axis">
                                              <EntityRules>
                                                <EntityRule EntityName="IfcDirection" />
                                              </EntityRules>
                                            </AttributeRule>
                                            <AttributeRule AttributeName="RefDirection">
                                              <EntityRules>
                                                <EntityRule EntityName="IfcDirection" />
                                              </EntityRules>
                                            </AttributeRule>
                                          </AttributeRules>
                                        </EntityRule>
                                      </EntityRules>
                                    </AttributeRule>
                                  </AttributeRules>
                                </EntityRule>
                              </EntityRules>
                            </AttributeRule>
                            <AttributeRule AttributeName="IsDeclaredBy" />
                            <AttributeRule AttributeName="PredefinedType">
                              <EntityRules>
                                <EntityRule EntityName="IfcDistributionPortTypeEnum" />
                              </EntityRules>
                            </AttributeRule>
                          </AttributeRules>
                        </EntityRule>
                      </EntityRules>
                    </AttributeRule>
                  </AttributeRules>
                </EntityRule>
              </EntityRules>
            </AttributeRule>
          </Rules>
        </ConceptTemplate>
      </SubTemplates>
    </ConceptTemplate>
    <ConceptTemplate uuid="b9005e79-b5c5-4c0b-9d86-046c21ad420d" name="Element Voiding" status="sample" applicableSchema="IFC4" applicableEntity="IfcElement">
      <Rules>
        <AttributeRule RuleID="HasOpenings" AttributeName="HasOpenings">
          <EntityRules>
            <EntityRule EntityName="IfcRelVoidsElement">
              <AttributeRules>
                <AttributeRule AttributeName="RelatedOpeningElement">
                  <EntityRules>
                    <EntityRule EntityName="IfcOpeningElement">
                      <AttributeRules>
                        <AttributeRule AttributeName="PredefinedType">
                          <EntityRules>
                            <EntityRule EntityName="IfcOpeningElementTypeEnum" />
                          </EntityRules>
                        </AttributeRule>
                        <AttributeRule RuleID="HasFillings" AttributeName="HasFillings">
                          <EntityRules>
                            <EntityRule EntityName="IfcRelFillsElement">
                              <AttributeRules>
                                <AttributeRule RuleID="RelatedFillings" AttributeName="RelatedBuildingElement">
                                  <EntityRules>
                                    <EntityRule RuleID="ElementName" EntityName="IfcDoor" />
                                    <EntityRule RuleID="ElementName" EntityName="IfcWindow" />
                                  </EntityRules>
                                </AttributeRule>
                              </AttributeRules>
                            </EntityRule>
                          </EntityRules>
                        </AttributeRule>
                      </AttributeRules>
                    </EntityRule>
                  </EntityRules>
                </AttributeRule>
              </AttributeRules>
            </EntityRule>
          </EntityRules>
        </AttributeRule>
      </Rules>
    </ConceptTemplate>
    <ConceptTemplate uuid="14891e19-2eaa-4641-8913-629bb9a60801" name="Element Projecting" status="sample" applicableSchema="IFC4" applicableEntity="IfcElement">
      <Rules>
        <AttributeRule AttributeName="HasProjections">
          <EntityRules>
            <EntityRule EntityName="IfcRelProjectsElement">
              <AttributeRules>
                <AttributeRule AttributeName="RelatedFeatureElement">
                  <EntityRules>
                    <EntityRule EntityName="IfcProjectionElement">
                      <AttributeRules>
                        <AttributeRule AttributeName="PredefinedType">
                          <EntityRules>
                            <EntityRule EntityName="IfcProjectionElementTypeEnum" />
                          </EntityRules>
                        </AttributeRule>
                      </AttributeRules>
                    </EntityRule>
                  </EntityRules>
                </AttributeRule>
              </AttributeRules>
            </EntityRule>
          </EntityRules>
        </AttributeRule>
      </Rules>
    </ConceptTemplate>
  </SubTemplates>
</ConceptTemplate>

Link to this page  Link to this page