buildingSMART / buildingSMART/IFC4.x-development
Ambiguity on whether nesting is part of the spatial decomposition
- 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
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