Public companies provide information about subsidiaries to the SEC as an exhibit to their 10-K filing. Using Microsoft as an example, if you go to their SEC filing page, look for EXHIBIT 21 and you will see their list of subsidiaries.
But there is a bit of a problem. That list is not machine-readable. But what if the information were provided in a machine-readable format, such as XBRL.
I created a prototype of that machine readable list of subsidiaries.
- Define arcroles: The first thing I did was define the arcroles that I need to represent the relationships. There are TWO types of relationships. The first is the relation between a parent company and a subsidiary. The second is the state of incorporation and the company that is incorporated in that state. Here are those two arcroles defined in an XBRL taxonomy schema. (This is a prototype set of arcroles; these really belong in the XBRL International Link Role Registry.)
- List of entities: Next, I created a list of entities. I did that using an XBRL taxonomy schema. That also includes labels for each entity and documentation that explains the PURPOSE of each subsidiary which XCEL included in their EXHIBIT 21. (Now, this taxonomy schema is not properly modularized; I would have to think about exactly how to do this; but that is just an organization and maintenance issue.)
- List of states: I am going to need a list of states to indicate the state of incorporation. Here is that XBRL taxonomy schema.
- Represent the relations: Next, I represented the relations. I did that using an XBRL definition linkbase. It is in that XBRL definition linkbase that the list of subsidiaries is represented and the state of incorporation is represented by creating those relations. Basically, the XBRL definition arcroles are used to express the relations between the subsidiaries and states of incorporations expressed in the XBRL taxonomy schema and those relations are stored in an XBRL definition linkbase.
Here is what the relations look like in an off-the-shelf XBRL Taxonomy creation tool: (this does not show the arcrole that expresses the relation, that is shown as a popup.
That can be a bit hard to read. Here is exactly the same information imported into an Excel spreadsheet:
So there you go; information that is both human-readable by simply rendering the information in HTML on the SEC web site, or machine-readable.
Pretty much any type of relation can be represented using this approach. Here are some other types of relations between entities or related to entities that could be represented in a similar manner.
You could do this exact same thing using RDF/OWL but those tools are harder to understand than XBRL tools. Frankly, which technical syntax is used matters less. Having the information in some machine-readable form (that is also human-readable) rather than only in human-readable HTML documents that require significantly more work to make use of the information the documents contain.