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.

Protocol server abstract data model

Figure 2: Protocol server abstract data model

In the previous figure, each table specifies a type of entity in the model. Each arrow specifies that one type of entity contains one or more references to another.

UserProfile Entity: An entity that corresponds to a user profile available on the protocol server. A UserProfile entity contains references to properties, quick links, pinned links, colleagues, and memberships. This entity can also contain various other pieces of data associated with the user.

Properties Field: References a collection of Property data model entities.

MyQuickLinks Field: References a collection of QuickLink data model entities.

MyPinnedLinks Field: References a collection of PinnedLink data model entities.

MyColleagues Field: References a collection of contact (2) data model entities.

MyMemberships Field: References a collection of Membership data model entities.

AccountName Field: A string value that serves as the login name for the account associated with this UserProfile entity.

UserProfileUID Field: A GUID value that uniquely identifies the user profile.

ID Field: A unique identifier that identifies the UserProfile entity.

Property Entity: An entity that corresponds to a property. A Property entity belongs to a UserProfile entity and represents a property of a user profile. A Property entity implements the concept of associating one or more values with a given property name.

Values Field: References a collection of Value data model entities. These entities serve as the values for this Property entity.

Name Field: A string value that serves as the name for this Property entity.

Privacy Field: An enumerated value corresponding to the privacy level for this Property entity. Conceptually, this Privacy value determines who has the rights to view this property.

IsPrivacyChanged Field: A Boolean value indicating whether or not the Privacy for this Property entity has changed. This can be used for caching to prevent excess data queries.

IsValueChanged Field: A Boolean value indicating whether or not the Values for this Property entity have changed. This can be used for caching to prevent excess data queries.

Value Entity: An entity that contains a value of a Property data model entity.

Value Field: An object that serves as the value for this Value entity.

QuickLink Entity: An entity that corresponds to a quick link, which is associated with a UserProfile data model entity.

Name Field: A string value that serves as the name for this QuickLink entity.

Group Field: A string value corresponding to the group (2) for this QuickLink entity.

Url Field: A string value corresponding to the URL for this QuickLink entity.

Privacy Field: An enumerated value corresponding to the privacy level for this QuickLink entity. Conceptually, this Privacy value determines who has the rights to view this quick link.

ID Field: A unique identifier that identifies the QuickLink entity.

PinnedLink Entity: An entity that corresponds to a pinned link, which is associated with a UserProfile data model entity.

Name Field: A string value that serves as the name for this PinnedLink entity.

Url Field: A string value corresponding to the URL for this PinnedLink entity.

ID Field: A unique identifier that identifies the PinnedLink entity.

Contact Entity: An entity that contains the necessary data to store contact (2) information for another user who is a colleague of the associated UserProfile data model entity. Conceptually, each contact (1)  entity serves as a one-way link from the specified UserProfile entity to contact (1) .

AccountName Field: A string value corresponding to the AccountName of the colleague's UserProfile entity.

Name Field: A string value that serves as the name for this contact (1) entity.

Group Field: A string value corresponding to the group (1) for this contact (1)  entity.

Email Field: A string value corresponding to the e-mail address for this contact (1)  entity.

Title Field: A string value corresponding to the title for this contact (1)  entity.

Url Field: A string value corresponding to the URL for this contact (1)  entity.

IsInWorkGroup Field: A Boolean value indicating whether or not the colleague for this contact (1)  entity is in the associated user profile's workgroup. If associated user profile is in the same workgroup as the colleague for this contact (1)  entity the server MUST return true.

UserProfileUID Field: A GUID value that uniquely identifies the user profile of the colleague.

Privacy Field: An enumerated value corresponding to the privacy level for this contact (1)  entity. Conceptually, this Privacy value determines who has the rights to view this colleague relationship.

ID Field: A unique identifier that identifies the contact (1)  entity.

Membership Entity: An entity that contains the necessary data to store membership information. Conceptually, a Membership entity serves as a one-way link from a UserProfile entity to a MemberGroup entity.

MemberGroup Field: A reference to this Membership entity's MemberGroup data model entity.

Source Field: An enumerated value corresponding to the source of members for this Membership entity. Conceptually, this Source value indicates whether this membership is to a distribution list, site, or "other".

Group Field: A string value corresponding to the group (2) for this Membership entity.

DisplayName Field: A string value corresponding to the display name for this Membership entity.

MailNickName Field: A string value corresponding to the e-mail alias for this Membership entity.

Url Field: A string value corresponding to the URL for this Membership entity.

Privacy Field: An enumerated value corresponding to the privacy level for this contact (1)  entity. Conceptually, this Privacy value determines who has the rights to view this membership relationship.

ID Field: A unique identifier that identifies the Membership entity.

MemberGroup Entity: An entity that represents a member group. Conceptually, this entity is a node for Membership entities to reference.

SourceInternal Field: A GUID value indicating the original source of members for the member group as specified in MemberGroupData (section 2.2.4.12).

SourceReference Field: A string that uniquely identifies the member group.