IFC 4.3.0.1 (IFC4X3) development

# 5.1.3.6 IfcObject

ABSTRACT This definition may not be instantiated

## 5.1.3.6.1 Semantic definition

An IfcObject is the generalization of any semantically treated thing or process. Objects are things as they appear - i.e. occurrences.

Objects can be named, using the inherited Name attribute, which should be a user recognizable label for the object occurrence. Further explanations to the object can be given using the inherited Description attribute. The ObjectType attribute is used:

• to store the user defined value for all subtypes of IfcObject, where a PredefinedType attribute is given, and its value is set to USERDEFINED.
• to provide a type information (could be seen as a very lightweight classifier) of the subtype of IfcObject, if no PredefinedType attribute is given. This is often the case, if no comprehensive list of predefined types is available.

Objects are independent pieces of information that might contain or reference other pieces of information. There are several relationships in which objects can be involved:

• Association to external/internal resource information - an association relationship that refers to external/internal sources of information. See supertype IfcObjectDefinition for more information.
• Assignment of other objects - an assignment relationship that refers to other types of objects. See supertype IfcObjectDefinition for more information.
• Aggregation of other objects - an aggregation relationship that establishes a whole/part relation. Objects can either be a whole, or a part, or both. See supertype IfcObjectDefinition for more information.
• Assignment of a type : IsTypedBy - a definition relationship IfcRelDefinesByType that uses a type definition to define the common characteristics of this occurrences, potentially including the common shape representation and common properties of all object occurrences assigned to this type. It is a specific - occurrence relationship with implied dependencies (as the occurrence properties depend on the properties of the type, but may override them).
• Assignment of a partial type : IsDeclaredBy, Declares - a definition relationship IfcRelDefinesByObject that uses a component of a type definition (a part of a type, called the "declaring part") to define a component of an occurrence (part of occurrence, called the "reflected part"). This is also referred to as a "deep copy". The common characteristics of all parts in the occurrence are defined by parts in the type. It is a specific - occurrence relationship with implied dependencies (as the occurrence properties depend on the properties of the type, but may override them).
• Assignment of property sets : IsDefinedBy - a definition relationship IfcRelDefinesByProperties that assigns property set definitions to the object occurrence.

Informal Propositions:

1. A partial type assignment, i.e. the inverse attribute IsDeclaredBy, or Declares shall only be used, if the object is part of a decomposition, i.e. if either IsDecomposedBy, or Decomposes is exerted.

## 5.1.3.6.6 Formal representation

ENTITY IfcObject
ABSTRACT SUPERTYPE OF (ONEOF
(IfcActor
,IfcControl
,IfcGroup
,IfcProcess
,IfcProduct
,IfcResource))
SUBTYPE OF (IfcObjectDefinition);
ObjectType : OPTIONAL IfcLabel;
INVERSE
IsDeclaredBy : SET [0:1] OF IfcRelDefinesByObject FOR RelatedObjects;
Declares : SET [0:?] OF IfcRelDefinesByObject FOR RelatingObject;
IsTypedBy : SET [0:1] OF IfcRelDefinesByType FOR RelatedObjects;
IsDefinedBy : SET [0:?] OF IfcRelDefinesByProperties FOR RelatedObjects;
WHERE
UniquePropertySetNames : ((SIZEOF(IsDefinedBy) = 0) OR IfcUniqueDefinitionNames(IsDefinedBy));
END_ENTITY;

## 5.1.3.6.7 References

### 5.1.3.6.8 Changelog

• inverse attribute, Declares
• inverse attribute, IsDefinedBy
• inverse attribute, IsTypedBy
• where rule, UniquePropertySetNames
• where rule, WR1
• inverse attribute IsDefinedBy name, Changed from "IsDefinedBy" to "IsDeclaredBy"
• inverse attribute IsDefinedBy type, Changed from "SET OF [0:?] IfcRelDefines FOR RelatedObjects" to "SET OF [0:1] IfcRelDefinesByObject FOR RelatedObjects"