Addendum: This excerpt from Desiderata for Controlled Medical Vocabularies (Cimino, 1998) highlights the need for non-semantic concept identifiers. I think it ties nicely into this discussion.
Non-Semantic Concept Identifiers
Because many vocabularies are organized into strict hierarchies, there has been an irresistible temptation to make the unique identifier a hierarchical code which reflects the concept’s position in the hierarchy. For example, a concept with the code 1000 might be the parent of the concept with the code 1200 which, in turn might be the parent of the concept 1280, and so on. One advantage to this approach is that, with some familiarity, the codes become some-what readable to a human and their hierarchical relationships can be understood. With today’s computer inter-faces, however, there is little reason why humans need to have readable codes or, for that matter, why they even need to see the codes at all. Another advantage of hierarchical codes is that querying a database for members of a class becomes easier (e.g., searching for “all codes beginning with 1” will retrieve codes 1000, 1200, 1280, and so on). However, this advantage is lost if the concepts can appear in multiple places in the hierarchy (see “Polyhierarchy”, below); fortunately, there are other ways to perform “class-based” queries to a database which will work even when concepts can be in multiple classes [32].
There are several problems with using the concept identifier to convey hierarchical information. First, it is possible for the coding system to run out of room. A decimal code, such as the one described above, will only allow ten concepts at any level in the hierarchy and only allow a depth of four [34]. Coding systems can be designed to avoid this problem, but other problems remain. For example, once assigned a code, a concept can never be reclassified without breaking the hierarchical coding scheme. Even more problematic, if a concept belongs in more than one location in the hierarchy (see “Polyhierarchy”, below), a convenient single hierarchical identifier is no longer possible. It is desirable, therefore, to have the unique identifiers for the concepts which are free of hierarchical or other implicit meaning (i.e., nonsemantic concept identifiers); such information should instead be included as attributes of the concepts [14].
Conclusion
Johnny Decimal strikes a balance between semantic encoding (areas, categories) and non-semantic identifiers at the item level. It takes the best of both worlds.
The system establishes immutable, mutually exclusive classes with a maximum depth of two levels. Everything beneath that is flat. Concepts at this level may have semantic relationships with each other, but JD codes don’t attempt to represent them. Instead, move the meaning of the ID into the concept’s definition (JD note).
This is intentional: below the category level, meaning becomes fluid and subject to change. That’s where the system stops encoding semantics — to preserve stability.