I have a hypothesis that all business information can be reduced to three meta patterns. Or rather, perhaps this is not a hypothesis at all but rather an axiom or a postulate. Either way, this is what I see.
Everything can be Expressed as a Hierarchy
Let's start with this: Everything can be expressed as a hierarchy. This has to be true for two reasons. First, that is all that an XBRL presentation linkbase is, parent-child hierarchies. If it is not true that all business information cannot be expressed as a hierarchy, then something is missing from XBRL. Now, I am NOT saying that all information about business concepts can be expressed in the XBRL presentation relations. What I am saying can pretty much be summed up in the second reason this must be true. The second reason is that a hierarchy is nothing more than parent-child relations which can be used to express pretty much anything. There are no relations really. An set of XBRL presentation relations is a hierarchical list of "stuff" with no further meaning per XBRL than "parent-child" relation.
Roll Ups and Roll Forwards
OK, so everything can be expressed as a hierarchy. But if you start looking in that hierarchy, patterns appear. There are two clear patterns that I have seen in my 10 years of working with XBRL. This is from intimate involvement in constructing the IFRS and US GAAP Taxonomy. Here are the two patterns:
Roll up: A + B = C (this is what XBRL people generally call a "calculation")
Roll forward: Beginning Balance + Additions - Subtractions = Ending Balance (this is what XBRL people call a "movement" or a "roll forward", another term for this is "BASE")
These two terms are not XBRL terms. If you look at business information you see these all the time. The term "BASE" for "beginning + additions - subtractions = ending" was learned in college in my auditing class.
So, these are definitely patterns as I see it and empirical evidence would prove this out should one bother to look (I have looked).
As such, I can comfortably say that I see three meta patterns:
- Hierarchy (everything except roll ups and roll forwards)
- Roll ups
What are NOT Meta Patterns
I started working on the idea of "patterns" in about 2002. Patterns started out as on thing and evolved into something different as I learned about what patterns were in information technology circles (remember, I am a CPA, not an IT person). My first set of patterns had about 20 business reporting use cases in it. The second set, the USFRTF patterns, build on the first but increased the set to about 28. During the process of creating these it was pointed out that these were not really patterns at all, but more use cases which used patterns, or better termed meta patterns to express the business use cases.
As a result, I reduced the set of 28 USFRTF patterns and the 20 others from my first set into what I thought were 5 XBRLS meta patterns. These are: Schedule, Calculation, Movement, Record and Hierarchy.
However, several of these are not really patterns.
- Schedule is not a pattern. What I build is really a hierarchy and shows the "schedule" structure which organizes the upper level of the meta patterns. The schedule is somewhat of a container.
- Record is not a pattern. A record (or also revered to as a set) is really some other pattern or patterns which repeat, some people thing of this as a "tuple". But what is really going on is that it is some other pattern with one specific axis which people look at as repeating. For example "Director" repeats because you can have more than one director. But, like I said, this is really a hierarchy or a calculation (depending on what information you show) with an axis which is used to articulate the different directors.
That leaves: hierarchy, calculation (really a roll up), and movement (better called roll forward). This is consistent with my conclusion above.
There Has to be More than Three!
This is what most people say, "There simply has to be more than three." Well, that is what I thought also. I started with 20, built that up to 28, reduced it down to 5, and then again down to 3. For years people have been coming to me saying "I found a new pattern" on taxonomy projects I have worked on. Every time it turns out that they really have not discovered a new pattern, what they have discovered is that they don't understand the other patterns, usually because they are focused on "presentation" instead of modeling information.
Then I realized that I may be making a mistake due to a number of conversations I was having with people. To cut to the just of it, I started to realize that maybe I did not even need "meta patterns". What if I just defined the information in terms of business rules using XBRL Formulas? That would consistently express relations, or at least most of them, everything other than hierarchies where there really is no relation. I think that I realized that the way that I was creating the meta patterns within an XBRL taxonomy was just a "syntax". XBRL Formulas is also just a syntax.
What we Really Need Appears to be a Grammar
Someone said this to me about six months ago I believe which is: It is not about the meta patterns, it is about a grammar. I did not see the difference, and I still don't think I see the difference between meta patterns and grammar. But, I do see that you can, say, a roll up or a roll forward in a presentation linkbase and auto generate an XBRL Formulas to express the relations articulated in the meta pattern expressed in the presentation relations; or alternatively you could articulate the XBRL Formula and auto generate the presentation relations! So, why do you even need the presentation relations to articulate the meta patterns???
Not Sure What I Really See Here
To be honest, I really don't understand exactly what I am seeing here. I have no formal training in computer science. But, what I do see is that I can articulate every business use case I have run across in financial reporting using three meta patterns: Hierarchy, Roll up, Roll forward.
OK, so let's say I missed a few meta patterns. For argument's sake let's say that I missed 50! Some smart soul can go through what is expressed as hierarchy type relations and identify 50 new meta patterns! Excellent, I say. Now we have 53 meta patterns rather than some unknown set of inconsistent ways to create XBRL taxonomies.
What do you think about these observations?