Relationship config

Before we explain the purpose of Relationship Config, you should first understand what a Spatial Breakdown Structure is. The Spatial Breakdown Structure is nothing more than an organized arrangement and categorization of objects with geometry. It is the Spatial Breakdown Structure that enables us to present objects transparently after export in various programs that support the IFC format.

In earlier versions of IFC, namely 2x3 and 4, we had the ability to arrange objects only based on the division occurring in the building domain. In the IFC 4.3 format, we can arrange our objects based on new domains, namely: Roads, Bridges, Railways.

For example, we can divide a road into several smaller subsets. In the illustration below, you can see how a road can be divided.

So, Relationship Config is nothing more than a tool that helps us organize our objects based on the Spatial Breakdown Structure. 

Relationship Config is an external XML file that we can open in the tool in the export settings. It shows how we want to organize objects that have been previously appropriately converted in "Conversion rules". 

Analyzing the structure of the file, several characteristic elements can be identified, such as the type of relationships or attributes added to individual objects.

Note that objects like ifcRoad, ifcBridge, ifcRailway, ifcRoadPart, ifcPavement, ifcElementAssembly are created using the Relationship Config. These objects do not possess geometry; they are, in a sense, sets, groups, or spatial objects.
Note: We cannot create these objects within conversion rules. The attributes listed alongside these objects serve as the space where you define this information.

On the other hand, objects like ifcCourse, ifcEarthworksFill, ifcKerb are objects that have geometry and can be converted using conversion rules. The attributes accompanying these objects are used for mapping. Based on these attributes, we can place them appropriately in the Spatial Breakdown Structure.

In addition, for objects such as ifcRoad, ifcBridge, ifcRailway, ifcPavement, ifcElementAssemnly we can add property sets and properties, allowing for the placement of various information at different levels in the file.

First and foremost, we wanted to create the initial version of Relationship Config that would encompass multiple domains simultaneously in one file. However, this approach also has its drawbacks. It's possible that an object (converted using Conversion Rules) might end up in the wrong place in the Spatial Breakdown Structure.

An example of such an object could be ifcEarthworksFill with the attribute PredefinedType set to EMBANKMENT. This object is common to all industries, which is why it is included in the Spatial Breakdown for both the road and railway domains.

Thus, there might be a situation where, when using the default Relationship Config file during the export of a railway model, this object ends up in the hierarchy under the road domain. To address this, we have implemented validation that informs the user whether a particular object is assigned to multiple hierarchies.

However, as we mentioned, this is the initial version of the file, so we recommend leaving in the XML file only the domain that interests us and simply removing others. Then everything should be in order since the object will correctly have only a single reference.