Personally, I think Product should be product, it’s odd to me: " IfcProduct represents occurrences in space such as physical building elements and spatial locations."
Products are processed, finished items that are offered for sale
So, what about subdivide IfcObjectDefinition into “seven” fundamental concepts:
- actors (“who”),
- context (“where”),
- controls (“why”),
- groups (“what”),
- products (“which”),
- processes (“when”),
- resources (“how”).
I mean IfcContext represents “where”: represents occurrences in space
Then I think we can move IfcSite, IfcBuilding, IfcBuildingStorey, IfcSpace, and even the whole IfcSpatialElement into IfcContext
Then IfcContext will contain:
IfcProject
IfcProjectLibrary
IfcSite
IfcBuilding
IfcBuildingStorey
IfcSpace
And IfcProduct will represent anything related to products
Alternative: Or have that six fundamental concepts, but change products (“where”) to products (“which”) and move IfcSite, IfcBuilding, IfcBuildingStorey, IfcSpace, and even the whole IfcSpatialElement into IfcContext