Architecture of Preferences and Data
The GPII Personalization Framework takes a unique and powerful approach to data modelling and interoperability. Our goal is to enable developers to represent data, such as user preferences, in whatever formats and structures best suit their needs and implementation constraints. This "agree to disagree" approach emphasizes the fundamental mutability of simple data structures such as JSON, allowing the GPII Personalization Framework to easily adapt and transform data structures as needed in order to interoperate with others.
The Preferences Server
The GPII Preferences Server is designed with a RESTful approach. REST, which stands for Representational State Transfer, is not new or obscure; it's actually the Web's architectural philosophy. In the RESTful approach, Web services are modeled as series of Resources, each with its own unique URL. Resources represent the content of the Web service, and are distinct from the many Representations, or formats that those Resources can be presented in.
In the case of the GPII Preferences Server, the primary Resource in the architecture is the user and their preferences. These will be identified by a URL such as:
http://preferences.gpii.net/users/<anonymous user token>/preferences
example of flat preferences format
example of hierarchical preferences format
In each case where the the Preferences Server exposes a particular data Representation (in JSON format), there will also be an accompanying "schema" or map, describing how data structure corresponds to the underlying AccessForAll preferences registry. This will ensure that multiple formats can coexist harmoniously; each Representation will be self-describing, ensuring that implementations can easily understand the format and its meaning. Here's an example:
example of preferences schema
In this way, the GPII Preferences Server takes advantage of RESTful principles and self-describing Resources to ensure that we can widely interoperate, supporting the diverse needs and requirements of implementers.