Most application scatter the details about domain around the application. Not only most of the modules know which entities and attributes exist, they also encapsulate some additional details such as what attributes are computed, what attributes are private, etc.
The idea is to represent the data/domain model as data in the program. That is, a data describing other data, meta model.
The meta model can then be programmatically queried and “machine” aspects can be derived from it. It also concentrates the knowledge in one place, so it makes the system more introspectable.