buildingSMART / buildingSMART/IFC4.x-development

Ambiguity on whether nesting is part of the spatial decomposition

Open
#734 1 comment 0 reactions 0 assignees View on GitHub
after-NWI allocated-core iso-Ed iso-Te proposal
Dominant language
Python
Stars
234
Forks
123
Avg merge
15h 4m
Merged PRs (30d)
5

Description

The [element nesting concept](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/concepts/Object_Composition/Nesting/Element_Nesting/content.html) describes this:

> The hosted component should not be contained in the spatial hierarchy, i.e. the concept Spatial Containment shall not be used at the level of hosted components. The hosted component is contained in the spatial structure by the spatial containment of its host.

In other words:

IfcBuilding <-- IfcRelContainedInSpatialStructure --> Parent Host Element <-- IfcRelNests --> Child Element

The child element does _not_ have an IfcRelAggregates relationship or an IfcRelContainedInSpatialStructure relationship, because its parent has one.

However the [spatial containment concept](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/concepts/Object_Connectivity/Spatial_Structure/Spatial_Containment/content.html) does not mention nesting. It _only_ talks about IfcRelContainedInSpatialStructure and IfcRelAggregates.

> Any subtype of IfcElement may participate in two different containment relationships. The first (and in most implementation scenarios mandatory) relationship is the hierarchical spatial containment, the second (optional) relationship is the aggregation within an element assembly.
> - The subtypes of IfcElement are placed within the project spatial hierarchy using the objectified relationship IfcRelContainedInSpatialStructure, referring to it by its inverse attribute SELF\IfcElement.ContainedInStructure. Subtypes of IfcSpatialElement are valid spatial containers.
> - The subtypes of IfcElement may be aggregated into an element assembly using the objectified relationship IfcRelAggregates, referring to it by its inverse attribute SELF\IfcObjectDefinition.Decomposes. Any subtype of IfcElement can be an element assembly, with IfcElementAssembly as a special focus subtype. In this case it should not be additionally contained in the project spatial hierarchy, i.e. SELF\IfcElement.ContainedInStructure should be NIL.

I think this is a mistake, I think nesting should also be a possibility that causes something to be in the spatial tree (indirectly via its parent). Also nesting is mutually exclusive to aggregation.

I propose to add another bullet point to that paragraph above describing nesting.

Contributor guide

Open the contributing guide

Research direction

Read the linked Element Nesting and Spatial Containment concept pages first, then inspect how the IFC4x3 documentation source represents those paragraphs. Confirm the intended relationship between nesting, spatial containment, and aggregation with project maintainers; done means the relevant specification text clearly documents the agreed behavior.

Written by the indexing model from the issue text.

Assessment

Domain
documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.