Dear Simon,
This makes NAICS look much more like a dimension in a Business Intelligence context. These are strange creatures where the objective is to be able to summarize up quantitative data of one sort or another. What one cares about for this is that you have a series of one-to-many relationships to summarize up through. It is not important if they are the same type, just convenient.
That's what I said :-)
What is necessary is that the relationships be subsumed under a parent relationship, and that that parent relationship be transitive. In controlled vocabularies, these semantics are provided by "the Hierarchical Relationship" (aka Broader Term, or BT).
There are sub-relations of BT for species/genus (BTG), individual/species (BTI), and part/whole (BTP).
a BTI b ^ b BTG c -> a BTI c
a BTG b ^ a BTG c -> a BTG c
a BTP b ^ b BTP c -> a BTP c
a BT b ^ b BT c -> a BT c
a BTI b -> a BT b
a BTG b -> a BT b
a BTP b -> a BT b
Where a, b, and c are intentional concepts.
If [a] is entity to which the concept a refers,
a BTI b -> Individual([a]) ^ Collection([b]) ^ isa([a],[b])
a BTG b -> Collection([a]) ^ Collection([b]) ^ genls([a],[b])
a BTP b -> Collection([a]) ^ Collection([b]) ^ partTypes([b],[a])
where partTypes([b],[a]) means that every intact [b] has at least one part that is an [a].
Part-hood is considered transitive (see e.g. Croft & Cruse (2004). Cognitive Linguistics, where Cruse reverses his position in Cruse (1986). Lexical Semantics. Both books CUP).
[Whilst we're talking CUP, Murphy (2008). Semantic Relations and the Lexicon. makes a fairly good case for treating hypero/hypo-nymy as being non lexical in nature.]
It's not strictly necessary that the relationships be one-to-many (if scheme is poly-hierarchic, a value may be aggregated under more than one category. How values are distributed amongst the aggregates is application specific (e.g. du assigns the entire size of a multiply linked file to a single, unspecifed parent; an equally valid semantics would have been to divide the size equally amongst all the different parents within the scope of an execution; it would also be meaningful to divide by the total number of links to the file.
Simon