3.1.1 Abstract Data Model

This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate that implementations adhere to this model as long as their external behavior is consistent with that described in this document.

The protocol server (or "service application") maintains multiple term stores.

Each term store has settings that control whether it is partitioned or unpartitioned. That is, the data maintained by the protocol server can either be stored for all callers or partitioned by a partition identifier (unpartitioned term stores are equivalent to a single partition).

One or more site collections will map to a single term store partition if the site collections are all subscribed to the same site subscription and their Web applications are associated with the term store. Additionally, the Web application of a site collection can be associated with multiple term stores, in which case a site collection can be mapped to zero or more term store partitions.

Each term store partition maintains settings for:

  • Language(s), including a default language.

  • Permissions.

  • The location of the content type publication hub, that is, the URL of a site collection that contains content types that are shared for usage.

  • Content type packages that contain the definitions of those content types.

  • A log for issues encountered during content type publication, and a setting controlling whether errors are logged or not.

Each term store partition maintains term sets and terms. Term sets contain a hierarchy of terms (potentially re-using individual terms in multiple term sets, for example, "office" being reused as a product name and a location); that is, the term set has root terms (terms without parents), and each term has zero or more terms that are children.

Each term set and each term has values for one or more of the languages. For example, a term has a term label for each language.

For terms that appear in multiple term sets, only one instance will be the source term, that is, the term that is used for permission checking when editing.

Each term store partition maintains groups of related term sets, such as "Cities in Washington", "Cities in Arizona", and so on. Each term set group has permission settings controlling access.

Each term store partition has a system term set group that contains two system term sets, one for keyword metadata and one for orphaned terms. Orphaned terms are terms whose previous source term was deleted, and whose new source term has not yet been designated.

Each term store partition has a log of changes made to term store objects.

Each term store partition maintains a record of which terms are used and the site collections in which they have been used.