Here is an example of expressing semantics using XBRL definition relations. Consider the graphic below which shows two things. First, there is a matrix of the categories of the items that make up the structure of a financial report: Network, Table, Axis, Member, LineItems, Abstract, and Concept. In the columns is the parentstructural items. In the rows are the child structural items. In the TOP part of the graphic, the cell with the intersection of the parent and the child shows the number of times that relation exists in an SEC XBRL financial filing. The BOTTOM part of the graphic, the cell with the intersection of the parent and the child show whether that relation is OK or if it is DISALLOWED and I also included NOT ADVISED: (Click on the image for a larger view)
So here is the same graphic again with some things that help you read the information. If you look at the "Axis", from the parent you can see that there were 386,912 Axis used as a parent in a relation to some other concept. There were 0 occasions where an Axis was the child of a parent Axis. Basically, an Axis should never the child of an Axis; an Axis is the child of a Table. Note that there were 386,888 such occasions in SEC XBRL financial filings.
Same deal for the LineItems. There were 232,690 LineItems parents, and those parents had a Concept as a Child 1,222,427 times. The bottom part shows OK relations and DISALLOWED relations.
Now, that information is pretty easy to understand if you are a human. How would you put this into computer readable terms using XBRL? Well, here you go. That is an XBRL definition linkbase. Hard for a human to read, but if you load the information into an XBRL tool, it would look like the following:
I don't have this represented perfectly yet, but it is close. The information in that hierarchy of relations is the exact same information that exists in the colored graphic above. I defined arcroles, using XBRL, to articulate the relations in the XBRL definition linkbase.
Imagine software being able to verify that you are not creating inappropriate or inadvisable relations. Imagine doing the same sorts of things for other relations. Pretty useful! What do you think?