We've covered a lot in this chapter. We started from a historical angle, explaining how the description of data in an application has been expressed differently from the data it describes. We've described how even technologies as modern as XML started with metadata that was distinct from the data it was describing (DTDs versus XML) and then morphed to a language where the metadata (schema) is expressed in the same language as the data (XSD is expressed as XML). We've begun to discuss how we might use a "metameta-language" to describe the meaning of the schema.
Most of the rest of the chapter is devoted to a case study of the powerful advantages that are available when you model metadata as data. Applications become both more flexible and more powerful. Although we used a narrow domain for the example, my contention is that virtually every aspect of every design is subject to these same improvements.
The resulting design may have looked obvious in retrospect. Prospectively, though, this type of design is anything but obvious. Getting from the "before" to the "after" is primarily a matter of understanding the semantics of the concepts and information being modeled. It is that semantic understanding of the details of the domain that leads to superior designs. The next several chapters outline an approach for systematically finding and exploiting the semantics in any application.