Creating object data history


I’m working on process mapping in IFC. A recurring problem is the necessity to represent object data that varies throughout time. In some cases, only the current value of the data is relevant, but commonly is more interesting to have available all the different occurences to represent the object’s data history.

For example, during a process execution, I want to represent updates on the process, such as comments, status changes, decision justifications, or any relevant information that should be registered and shared with the stakeholders.

The two main approaches that occurred to me were:

  • Using IfcEvent to represent any documentable update: IfcEvent instances of documentable updates would be nested by the object in which those updates occur. The “update type”, such as comments, justifies, and status changes, would be specified in the IfcEvent.ObjectType attribute;
  • Creating property sets: the object would have a property set for each update, with a unique name and properties to represent the data.

It seems to me that the approach using IfcEvent is far more interesting unless it contradicts the entity’s definition. The created IfcEvent instances do not necessarily “triggers an action or response”, most cases being just the documentation of relevant information.
I would appreciate receiving opinions and suggestions on this matter. Has anyone ever worked with something like this? What approach was used?

Correcting myself: in the hypothesis of using IfcEvent instances to represent documentable update information, nesting cannot be used. The grouping and relationship of these instances to the object is not a “whole-parts” decomposition. The IfcEvent instances compose additional information.

This way, either the IfcEvent instances are referenced as processes using IfcRelAssignsToProcess, which seems odd given its purpose in the applied context, or the IfcEvent instances can be grouped under an IfcGroup that represent the history information as a whole. This IfcGroup could be related to the object using the appropriated IfcRelAssigns relationship.

This unexpected realization added another layer of complexity to the “history” representation. The relationships between the IfcEvent instances and the objects do not seem perfectly appropriate in either pointed approach. Would using property sets be a more adequate and straightforward option? What are your opinions on the subject?