In development of the version control folder listing of the definition of IFC from IfcDoc, I trialed grouping of entities into alphabetical folders. This resulted in something like this:
I’m worried about this approach though, as it requires either a predetermination of some number of entities at which to group into subfolders (and when a list is at a threshold an undesireable momental change), or a bespoke attribute decorator (at the moment the serializer has no dependency on the ifc definition data structure and vice versa). This isn’t ideal, as now on github you get the effect of listing truncation.
Note that not all concepts are globalized. Most remain structured into sections and schemas. The concepts that are globalized are constants, property constants, property enumerations, properties and quantities. This is to facilitate and encourage greater reuse, and maintain consistency for the repository when schema changes occur. Maintenance of duplicate concepts is a burden, in particular with respect to translations and the like.
In answer to my original questions, I’m implementing nesting control as the dotnet decorator [XmlArrayItem(NestingLevel = 2)] to control sub folder nesting. It’s not pure but it will function and we can swap it for a bespoke attribute if consensus prefers that.