The goals of the data infrastructure are basically the same as the ones of the processing infrastructure: to minimize programmer's effort by providing a set of built-in services and to enforce good coding practices and a homogeneous interface. In the case of data though, two particular goals are also important: to enforce data encapsulation (i.e. no data attribute in a class should be allowed to be public) and to guarantee a homogeneous interface for data access (we want all accessors to have a common interface).
Just as in the processing infrastructure, here we promote white-box behavior by providing an abstract base class that must be derived and made concrete. But in this case the base class makes use of a complex and powerful mechanism: Dynamic Types. Dynamic Types are a key issue in the data infrastructure so we need to understand its purpose and uses in order to understand this part of the framework.