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 message protocol described in section 2.2 assumes an abstract data model in which a repository is a container of records and record definitions. A record is a container of fields, which hold the individual data values. Each record refers to a record definition, which describes the schema of a record type known to the system. Each record definition includes a list of permissible fields, the data types of those fields, and optionally a default value for each field. If no default value is specified for a field in a record definition, the default value for that field is inherited from the system default value for the field type. The system default values are as follows:

Field Type

System Default Value

String

Empty string

Boolean

False

Four Byte Signed Integer

0

Double

-1.0

Binary

Empty binary stream

Date/Time

-1.0

XML element

<urn:groove.net:Empty>

Record ID: Each record within a repository is identified by a numeric value, its Record ID, which is specified in the _RecordID field. The identifier MUST be unique among all records in the repository. All messages in the protocol use this identifier when referring to an instance of a record.

Record Definition ID: Each record definition within a repository is identified by a numeric value, its record definition identifier. The identifier MUST be unique among all record definitions contained in the repository.

Each record in a repository is associated with a record definition that defines the schema of that record. This is the value that is set in the RecDefID field of the record, as described in section 2.2.

When a field value is transmitted in a message using this protocol, and the field value is identical to the default value specified in the Record Definition for that field, the field SHOULD<3> be omitted from the message.