# IfcSpatialZone and IfcExternalSpatialElement confusion about low to high levels in spatial tree

**URL:** <https://forums.buildingsmart.org/t/ifcspatialzone-and-ifcexternalspatialelement-confusion-about-low-to-high-levels-in-spatial-tree/3495>\
**Category:** Developers\
**Created:** [March 31, 2021, 6:30am UTC](https://forums.buildingsmart.org/t/ifcspatialzone-and-ifcexternalspatialelement-confusion-about-low-to-high-levels-in-spatial-tree/3495 "2021-03-31T06:30:28Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Moult](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/moult/32/196_2.png) [@Moult](https://forums.buildingsmart.org/u/Moult)\
**Post date:** [March 31, 2021, 6:30am UTC](https://forums.buildingsmart.org/t/ifcspatialzone-and-ifcexternalspatialelement-confusion-about-low-to-high-levels-in-spatial-tree/3495/1 "2021-03-31T06:30:28Z")

</div>

The documentation states:

> 4.4.1.4 Spatial Composition  
> The order of spatial structure elements being included in the concept for builing projects are from **high to low level** : [IfcProject](https://standards.buildingsmart.org/IFC/DEV/IFC4_3/RC2/HTML/schema/ifckernel/lexical/ifcproject.htm), [IfcSite](https://standards.buildingsmart.org/IFC/DEV/IFC4_3/RC2/HTML/schema/ifcproductextension/lexical/ifcsite.htm), [IfcBuilding](https://standards.buildingsmart.org/IFC/DEV/IFC4_3/RC2/HTML/schema/ifcproductextension/lexical/ifcbuilding.htm), [IfcBuildingStorey](https://standards.buildingsmart.org/IFC/DEV/IFC4_3/RC2/HTML/schema/ifcproductextension/lexical/ifcbuildingstorey.htm), and [IfcSpace](https://standards.buildingsmart.org/IFC/DEV/IFC4_3/RC2/HTML/schema/ifcproductextension/lexical/ifcspace.htm) with [IfcSite](https://standards.buildingsmart.org/IFC/DEV/IFC4_3/RC2/HTML/schema/ifcproductextension/lexical/ifcsite.htm), [IfcBuildingStorey](https://standards.buildingsmart.org/IFC/DEV/IFC4_3/RC2/HTML/schema/ifcproductextension/lexical/ifcbuildingstorey.htm) and [IfcSpace](https://standards.buildingsmart.org/IFC/DEV/IFC4_3/RC2/HTML/schema/ifcproductextension/lexical/ifcspace.htm) being optional levels. Therefore an spatial structure element can only be part of an element at the same or higher level.
> 
> In addition a more general hierarchical tree of spatial elements can be created by using [IfcSpatialZone](https://standards.buildingsmart.org/IFC/DEV/IFC4_3/RC2/HTML/schema/ifcproductextension/lexical/ifcspatialzone.htm), from **high to low** : [IfcProject](https://standards.buildingsmart.org/IFC/DEV/IFC4_3/RC2/HTML/schema/ifckernel/lexical/ifcproject.htm), [IfcSite](https://standards.buildingsmart.org/IFC/DEV/IFC4_3/RC2/HTML/schema/ifcproductextension/lexical/ifcsite.htm), and [IfcSpatialZone](https://standards.buildingsmart.org/IFC/DEV/IFC4_3/RC2/HTML/schema/ifcproductextension/lexical/ifcspatialzone.htm) with [IfcSite](https://standards.buildingsmart.org/IFC/DEV/IFC4_3/RC2/HTML/schema/ifcproductextension/lexical/ifcsite.htm) being an optional level.

Two questions:

1. Can someone clarify the intention for IfcSpatialZone? Does this mean that IfcSpatialZone must either belong to an IfcSite or an IfcProject and nothing else? What does the second paragraph mean?
2. Why is IfcExternalSpatialElement not mentioned at all? Where does it fit in the hierarchy? Is it hierarchical? I assume it is, as I haven’t read otherwise. Is it an optional level? I also assume it is. Common sense tells me it is an optional level that must either belong to an IfcSite or IfcProject, but I cannot find anything about this in the spec.

Thoughts?

---

<div class="post-metadata">

**Author:** ![stefkeB](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/stefkeb/32/1755_2.png) [@stefkeB](https://forums.buildingsmart.org/u/stefkeB)\
**Post date:** [December 1, 2025, 11:08am UTC](https://forums.buildingsmart.org/t/ifcspatialzone-and-ifcexternalspatialelement-confusion-about-low-to-high-levels-in-spatial-tree/3495/2 "2025-12-01T11:08:20Z")

</div>

I’m trying to work with **IfcSpatialZone** , in relation to modelling fire compartments. This is not widely supported in software. I was partially able to generate them from _Revit_ (but have problems with property sets and custom quantities) and trying but failing with _Archicad_ which doesn’t support this entity, so we need to parse the IFC exported afterwards.

From my understanding of the above, there doesn’t seem to be a way to relate an IfcSpatialZone directly to an **IfcBuildingStorey** , at least not using the aggregation structure foreseen from the **Spatial Composition** concept. However, since IfcSpatialZone is effectively an **IfcSpatialElement** , this relation seems valid.

**Can you aggregate an IfcSpatialZone into a building storey? Would that be valid IFC?  
Do you believe we should rather use the _Referenced in Spatial Structure_ relation?**

Aggregating objects inside an IfcSpatialZone is problematic, as that would prevent these objects from being aggregated into another spatial element, such as **IfcSpace**.

---

<div class="post-metadata">

**Author:** ![stefkeB](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/stefkeb/32/1755_2.png) [@stefkeB](https://forums.buildingsmart.org/u/stefkeB)\
**Post date:** [May 8, 2026, 1:20pm UTC](https://forums.buildingsmart.org/t/ifcspatialzone-and-ifcexternalspatialelement-confusion-about-low-to-high-levels-in-spatial-tree/3495/3 "2026-05-08T13:20:29Z")

</div>

(nobody here?)

## Where can IfcSpatialZone entities by located?

I’m using them for modelling fire compartments (IfcSpatialZone.FIRESAFETY), but cannot relate them to a storey nor to any other spatial structure element, so it seems.

> **[5.4.3.70 IfcSpatialZone - IFC 4.3.2 Documentation](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcSpatialZone.htm)**

They can be generated from _Revit_ (but not from _Archicad_), where Revit uses the _IfcRelContainedInSpatialStructure_ relation to put them on building storeys. But that seems not allowed according the IFC scheme documentation: there is a “ContainsElements” reverse attribute but not a “ContainedInStructure” attribute.

> **[5.4.3.52 IfcRelContainedInSpatialStructure - IFC 4.3.2 Documentation](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRelContainedInSpatialStructure.htm)**

It seems that _IfcRelReferencedInSpatialStructure_ is the relation that should (could?) be used, but it is stated that this is not the be used to relate spatial structures into other spatial structure elements (unless it’s a space.

> The relationship object shall not be used to include other spatial structure elements into a spatial structure element. The hierarchy of the spatial structure is defined using _[IfcRelAggregates](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRelAggregates.htm)_. Exception: an _[IfcSpace](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcSpace.htm)_ can be referenced by another spatial structure element, in particular by an _[IfcSpatialZone](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcSpatialZone.htm)_.

> **[5.4.3.57 IfcRelReferencedInSpatialStructure - IFC 4.3.2 Documentation](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRelReferencedInSpatialStructure.htm)**

## Some testing with three IFC viewers

IFC viewers don’t mind the Contained In Structure relation: Solibri, BIMcollab Zoom, BIMvision all happily show the Spatial Zones in a building storey.

 ![image](https://us1.discourse-cdn.com/flex016/uploads/buildingsmart1/original/2X/5/58e13b295eb0c56da3cd97cf45cf5627dcd47387.png)

 ![image](https://us1.discourse-cdn.com/flex016/uploads/buildingsmart1/original/2X/2/2a1d751f9f30bb6089bf74ed319d11cf7cf402a4.png)

 ![image](https://us1.discourse-cdn.com/flex016/uploads/buildingsmart1/original/2X/f/f71ff7f95d870c89b7d59b44337f767779ebd181.png)

When I manually change this relation to a _Referenced in Spatial Structure_ relation, the viewers get confused.

_Solibri_ sees them outside the hierarchy and finds no floor, but guesses a federated floor based on its elevation.

 ![image](https://us1.discourse-cdn.com/flex016/uploads/buildingsmart1/original/2X/f/f44937418faa48b6c8d34562fc9e702858b4ea65.png)

_BIMcollab Zoom_ also puts them outside of the Spatial hierarchy and doesn’t see any relation.

 ![image](https://us1.discourse-cdn.com/flex016/uploads/buildingsmart1/original/2X/b/b261e0decc0c48d6299ffeb9b95687cbd7286183.png)

And for _BIMvision_ they are simply not there anymore.

 ![image](https://us1.discourse-cdn.com/flex016/uploads/buildingsmart1/original/2X/e/e94e5648135b768ef465aa62fbed91d9a9dfa5be.png)

---

<div class="post-metadata">

**Author:** ![jwouellette](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/jwouellette/32/2140_2.png) [@jwouellette](https://forums.buildingsmart.org/u/jwouellette)\
**Post date:** [May 26, 2026, 7:38pm UTC](https://forums.buildingsmart.org/t/ifcspatialzone-and-ifcexternalspatialelement-confusion-about-low-to-high-levels-in-spatial-tree/3495/4 "2026-05-26T19:38:57Z")

</div>

@daviddelven  
@mirbek.bekboliev  
@mweise

Can any of you help @stefkeB ?

---

<div class="post-metadata">

**Author:** ![daviddelven](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/daviddelven/32/2384_2.png) [@daviddelven](https://forums.buildingsmart.org/u/daviddelven)\
**Post date:** [May 27, 2026, 8:12am UTC](https://forums.buildingsmart.org/t/ifcspatialzone-and-ifcexternalspatialelement-confusion-about-low-to-high-levels-in-spatial-tree/3495/5 "2026-05-27T08:12:47Z")

</div>

Sorry, Stefan.

We missed this one, although I think my answer won’t fit your expectation 🙂

From what I understand and it is intended **Aggregation is invalid:** Do not aggregate an **`IfcSpatialZone`** into an **`IfcBuildingStorey`** , because spatial zones are explicitly designed to be non-hierarchical, potentially overlapping elements. So, theoretically:

- **Use the Referencing relation:** To link your fire compartment to a storey or space, you should use the **`IfcRelReferencedInSpatialStructure`** relationship.

- **The software problem:** BIM authoring tools (like Archicad) often struggle with this implementation because they natively try to force all spatial elements into a rigid “Site \> Building \> Storey” hierarchy, which defeats the independent nature of an **IfcSpatialZone**.

When we where working on the _Technical Report_ (not the current Schema implementation, by the way)… the Software vendor’s involvement was very basic, just listening and acknowledging the technical proposal, but never getting into any “testing” activity, unfortunately.

---

<div class="post-metadata">

**Author:** ![stefkeB](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/stefkeb/32/1755_2.png) [@stefkeB](https://forums.buildingsmart.org/u/stefkeB)\
**Post date:** [May 27, 2026, 9:04am UTC](https://forums.buildingsmart.org/t/ifcspatialzone-and-ifcexternalspatialelement-confusion-about-low-to-high-levels-in-spatial-tree/3495/6 "2026-05-27T09:04:54Z")

</div>

> [@daviddelven](#):
>
> IfcRelReferencedInSpatialStructure

> The relationship object shall not be used to include other spatial structure elements into a spatial structure element. The hierarchy of the spatial structure is defined using _[IfcRelAggregates](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRelAggregates.htm)_. Exception: an _[IfcSpace](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcSpace.htm)_ can be referenced by another spatial structure element, in particular by an _[IfcSpatialZone](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcSpatialZone.htm)_.

Isn’t this in contradiction with your recommendation? Can I reference an IfcSpatialZone into an IfcBuilding or an IfcBuildingStorey? The language above seems to disallow it. Or is it allowed and is the phrasing unfortunate?

---

<div class="post-metadata">

**Author:** ![daviddelven](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/daviddelven/32/2384_2.png) [@daviddelven](https://forums.buildingsmart.org/u/daviddelven)\
**Post date:** [May 27, 2026, 9:51am UTC](https://forums.buildingsmart.org/t/ifcspatialzone-and-ifcexternalspatialelement-confusion-about-low-to-high-levels-in-spatial-tree/3495/7 "2026-05-27T09:51:26Z")

</div>

An **IfcSpatialZone** is NOT an **IfcSpatialStructureElement**.

Here is how the hierarchy works in the IFC schema:

`IfcSpatialZone` is not part of this branch. It inherits directly from the higher-level abstract class **IfcSpatialElement**.

The rule you quoted specifically prohibits using `IfcRelReferencedInSpatialStructure` to link one `IfcSpatialStructureElement` to another `IfcSpatialStructureElement` (for example, you cannot use it to link a storey to a building, as those must use `IfcRelAggregates` )
