4.2.1 Object Typing

Object occurrences can be defined by a particular object type, using the Object Typing concept. A pair of entities are defined for most semantic objects - an object occurrence entity and a corresponding object type entity.

EXAMPLE  The IfcTank is the object occurrence entity that has a corresponding IfcTankType being the object type entity.

On instance level, an object occurrence instance may have:

Characteristics defined at the object type level may include:

Many object occurrence and object type entities have an attribute named PredefinedType consisting of a specific enumeration. Such predefined type essentially provides another level of inheritance to further differentiate objects without the need for additional entities. Predefined types are not just informational; various rules apply such as applicable property sets, part composition, and distribution ports. If the object is typed by an IfcTypeObject, then the PredefinedType at the IfcObject occurrence shall only be used if the PredefinedType at IfcTypeObject is set to NOTDEFINED.

EXAMPLE  For scenarios of object types having part compositions, such parts may be reflected at object occurrences having separate state. For example, a wall type may define a particular arrangement of studs, a wall occurrence may reflect the same arrangement of studs, and studs within the wall occurrence may participate in specific relationships that do not exist at the type such as being connected to an electrical junction box.
NOTE  If the object type has aggregated elements, such objects are reflected at the object occurrence using the IfcRelDefinesByObject relationship.

Figure 9 illustrates an instance diagram.

Object TypingIfcObjectIfcRelDefinesByTypeIfcTypeObject

Figure 9 — Object Typing

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="35a2e10e-20df-40f4-ab2f-dacf0a6744f4" name="Object Typing" status="sample" applicableSchema="IFC4" applicableEntity="IfcObject">
  <Rules>
    <AttributeRule RuleID="HasType" AttributeName="IsTypedBy">
      <EntityRules>
        <EntityRule EntityName="IfcRelDefinesByType">
          <AttributeRules>
            <AttributeRule RuleID="RelatingType" AttributeName="RelatingType">
              <EntityRules>
                <EntityRule EntityName="IfcTypeObject">
                  <AttributeRules>
                    <AttributeRule RuleID="TypeName" AttributeName="Name" />
                  </AttributeRules>
                </EntityRule>
              </EntityRules>
            </AttributeRule>
          </AttributeRules>
        </EntityRule>
      </EntityRules>
    </AttributeRule>
    <AttributeRule AttributeName="PredefinedType" />
  </Rules>
</ConceptTemplate>

Examples:

Link to this page  Link to this page