I will hold this out as a state-of-the-art use of XBRL definition relations to articulate a rich set of business rules for a taxonomy.
If you don't agree, please contact me and explain specifically why you might disagree. I am not saying that this is perfect, but it seems to be very useful to me. Keep in mind that this is a working prototype and still under construction, so the actual business rules might not be 100% accurate at the present time.
What this working prototype does is articulate machine-readable business rules for US GAAP financial disclosures. I will walk you through one disclosure and the big picture. From there you can look at other disclosures using the same process that I show.
To fully appreciate these machine-readable files, you need an XBRL Taxonomy viewer or some other way of reading these XBRL files.
- Disclosure: Roll up of the components of inventory, Inventory, Net, Current [Roll Up]. If you look closely at the disclosure, you notice a list of multiple examples of the disclosure. Here is another version of that list. The information is the same, there is just more metadata on the alternative list.
- Disclosure's business rules: If you look at the disclosure, you notice some patterns. You notice that many use the Level 3 Text block us-gaap:ScheduleOfInventoryCurrentTableTextBlock. You notice that each of the individual disclosures provided is a [Roll Up]. You notice that the total of the roll up is generally, if not always, the concept us-gaap:InventoryNet. That information is basically business rules related to this specific disclosure. I articulated those rules in machine-readable form using XBRL definition relations. This is the machine-readable XBRL definition linkbase which contains the rules for that disclosure.
- Arcroles for articulating disclosure's business rules: To specify the relations in the XBRL Definition Linkbase, I created arcroles. I have two different files for no particular reason really, I just created the rules at different times. This is the first. This is the second.
That is really it. There is a lot of additional information in the human readable information, you can ignore that or dig into that as well.
- Topics: First off, there are a lot of disclosures, I have about 1000. To better work with the disclosures, I wanted to organize them by topic. To do that I first defined the Topics in an XBRL taxonomy schema. I then organized the topics into a hierarchy of relations using an XBRL definition linkbase.
- Disclosures: Next, I defined a list of disclosures in the same way. First, defining the disclosures in a taxonomy schema and then just a flat list of of the disclosures.
- Organize disclosures: Because there are lots of disclosures, I wanted to organize the disclosures. Here is one example of an organization of disclosures by information model pattern.
- Disclosures organized by Topic: Combining the Topics and Disclosures provides a good organization of the disclosures. This is the XBRL definition linkbase which contains this information.
- Business rules organized by topic and by disclosure: This XBRL definition linkbase provides the business rules for every disclosure, organized by disclosure, which is then further organized by topic. See the graphic below to get the full grasp of what this set of XBRL definition linkbase relations provides.
Keep in mind that the business rules and disclosures are a working prototype. A lot works and is correct, other things are still a work-in-progress. But, this should give you a good idea of what you can do with XBRL definition relations.
If you dont have access to an XBRL Taxonomy Viewer, this is what the XBRL definition relations in the last bullet looks like:
So in summary, XBRL definition relations are a powerful tool which can be used to articulate machine-readable business rules using a global standard format. I hope this helps you get an idea of how easy and useful this approach is.