How do I include and instance IFC files in other IFC files?

Most text based standards have the ability to include / reference other files and create instances of them. This would be essential if I wanted to be able to create reusable OpenBIM assets in the IFC format. This allows me to have a building-a.ifc that includes and creates 3 instances at different coordinates of a chair.ifc, and then reuse chair.ifc in building-b.ifc.

However, from my understanding IFC uses STEP and STEP’s idea of an “include / reference” is essentially a glorified GOTO statement.

Can anybody point me in the right direction to how to create reusable IFC OpenBIM assets, and where in the IFC4 spec I can read more about splitting up IFC files?

Unfortunately the current serialization, based on STEP physical file (ISO 10303-21) does not allow for such external references. There is currently a proposed new version of the STEP physical file - the third edition, ISO 10303-21:2016 - that adds this capability to the file structure, however only very few implementations exists (note: this is independent of the include/reference statement in EXPRESS).

Alternatively the XML structure of IFC could be used with the href attribute - but again, only very few implementations exists. If this use case is more pressing, such implementation methods should be proposed also for standard IFC implementations.

I see. If that’s the case, what is the current approach to creating a reusable asset that isn’t an entire IfcBuilding? For instance, if I wanted to create a chair.ifc, are there specific Ifc attributes / entities in the IFC4 spec that I need to include to communicate to others that this .ifc file is a reusable object / asset that is a single building element?

Apologies for the beginner question. I am still slowly reading the spec.

@TLiebich, is the feature you are referring to in the newer version of STEP the ability to refer to URIs? Is there any reason why an implementer can’t “make this happen”?

This issue has two votes. I’d like to propose this to be on the agenda for the upcoming ISG meeting @jwouellette