Something occurred to me the other day which provides an interesting way to look at the notion of "patterns" in taxonomies.
There seems to be only two possibilities as to whether you use the notion of patterns to create a taxonomy:
- Random (i.e. you don't use patterns)
- Patterns (i.e. patterns exist in your taxonomy, it is not random)
So whether the creators of taxonomies use patterns or not is really not important. I would contend that all creators of taxonomies use some sort of patterns to construct the concepts and relationships within the taxonomy. It is simply not the case that taxonomies are random.
As such, one could say that "patterns" exist within a taxonomy.
Now, taxonomy creators can choose to do one of two things when they create taxonomies. They can document those patterns or they don't document those patterns. If the creators of taxonomies are not even conscious of following patterns, they are unlikely to document those patterns.
There is another choice taxonomy creators can make. If they document those patterns, then they can make the documentation available to the users of the taxonomy or they don't make that documentation available.
So, the full spectrum of possibilities when creating a taxonomy appears to be something like this:
- Random (theoretically possible, but unlikely)
- Use patterns, patterns undocumented (no possibility of making documentation of patterns available because there is no documentation)
- Use patterns, patterns documented, documentation not made available to taxonomy users
- Use patterns, patterns documented, documentation made available to taxonomy users
Why is this important you might ask? Well, consider the following questions.
- What is more likely to be understood by a user of a taxonomy, one that is totally random or one which has some patterns within it to help a user understand the taxonomy? (Clearly randomness is harder to understand)
- If the creators of a taxonomy did not document their patterns, how are they following the patterns which they are trying to follow?
- If the creators of a taxonomy did follow patterns, do they expect those extending the taxonomy to also follow those patterns and if so, why would they not make that documentation available to the users of the taxonomy?
- How do creators of taxonomies prove to themselves that they have followed the patterns (whatever they may be) within their taxonomy? (Meaning, how do they prove to themselves as they build the taxonomy that the taxonomy is internally consistent with respect to itself.)
None of these questions have anything to do with any specific set of patterns used to model a taxonomy. These are all general statements which apply to any taxonomy really.
Something worth mentioning is the notion of a "generated approach" to creating a taxonomy. What this means is generating the actual taxonomy using software. Many times taxonomies are created by having people adding concepts and relations into a taxonomy via the use of a taxonomy creation tool. But another approach is to collect information in some other form and then generate the taxonomy itself from that information. That is done, you guessed it, to follow patterns consistently.
Finally, suppose that you want to leverage someone Else's patterns when creating your taxonomy. For example, what if you like the XBRL Simplified Application Profile or the XBRL Application Profile for OLAP and rather than invent your own approach to creating consistency within your taxonomy, you just wanted to borrow someone Else's approach. It would help if there were documentation for how to construct these patterns, tests which could be run against a taxonomy to see if it complied to those rules, a way that those extending the taxonomy could test to be sure they are also following the patterns of the base taxonomy.
If you are building a taxonomy yourself or managing a taxonomy project you may want to ask yourself:
- Am I following some sort of patterns when creating my taxonomy to make sure the taxonomy is internally consistent?
- How am I proving to myself that the taxonomy is, in fact, internally consistent (i.e. doing the same things in the same way throughout the taxonomy)
- Am I having to rely on humans to check for this consistency, or do I have automated tests I can run against the taxonomy to be sure it is consistent?
- What am I doing to ensure that those extending the taxonomy will also follow the patterns which I am using within their extensions.
- Is there an existing set of patterns, documentation, and tests which I can simply leverage rather than reinvent and how appropriate is that set for my system?