The documentation states, for construction resources:
A root-level resource (specifically IfcCrewResource or IfcSubContractResource) is declared within the project by IfcRelDeclares where RelatingContext refers to the single IfcProject and RelatedObjects refers to one or more IfcConstructionResource, and other root-level objects within the project.
This creates some ambiguities.
Is the intention that a root level resource must only be of the class IfcCrewResource or IfcSubContractResource? Does this mean that IfcConstructionEquipmentResource (or any other IfcResource subtype) is not allowed to be a root level resource? That is, an IfcConstructionEquipmentResource may only exist as a nested sub-resource?
If ambiguity 1 is true, that is, only those two classes may be root level resources, does this mean that they are only root level resources, or can they exist again as a nested sub-resource? E.g. IfcCrewResource → IfcConstructionEquipmentResource → IfcSubContractResource
To my reading and understanding the semantics of root-level and non-root-level instances of IfcConstructionResource are not related to the resource having nested sub resources or not. Instead, it is governed by the resource being assigned to the context (e.g. project) root or some other non-root entity, like a particular product for example. These two uses are termed Declaration use and Assignment use respectively. The assignment is about the scope of control over the resource hence its declaration. Crew and subcontract are the two prominet resources subtypes that require context root level assignment, while others are likely to be assigned to some other entity. Again, that’s just my reading.
@tauscher thanks for your interpretation. Yes, that is indeed a possible interpretation. In theory, context assignment and nesting are two separate concepts as you’ve identified, but in practice, I would assume the two to correlate … but this is just my imagination, we need more mature implementations of project libraries especially to see what actually happens in practice.