3.1.1.1.2 State Modeling Primitives and Notational Conventions

Attribute names are underlined in this document, as specified in section 1. If a variable o refers to an object, and a is an attribute name, then o!a denotes the value or values of attribute a on object o. If attribute a is not present on o, the value of o!a is null.

The specification uses the LDAP display names of attributes and object classes when referring to specific attributes and object classes. So if o refers to an object,

o!name

denotes the name attribute of object o.

Some attributes in this specification are abstract in the sense of [MS-DRSR] section 3.3.3. Abstract attribute names are also underlined, for example, repsFrom. rootDSE attribute names are also underlined, for example, dumpDatabase, even though rootDSE attributes are not declared as attributes in the schema.

This specification models state in category 2 from the previous section using the standard mathematical concepts of set, sequence, directed graph, and tuple.

The notation [first .. last] stands for the subrange first, first+1, ... , last. The type byte is the subrange [0.. 255].

A sequence is an indexed collection of variables, which are called the elements of the sequence. The elements all have the same type. The index type of a sequence is a zero-based subrange. S[i] denotes the element of the sequence S corresponding to the value i of the index type. The number of elements in a sequence S is denoted S.length. Therefore the index type of a sequence S is [0 .. S.length-1].

A fixed-length sequence can be constructed using the notation:

[first element, second element, ... , last element]

A tuple is a set of name-value pairs: [name1: value1, name2: value2, ... , namen: valuen] where namek is an identifier and valuek is the value bound to that identifier. Tuple types are defined as in this example:

  • type DSName = [dn: DN, guid: GUID, sid: SID]

This defines DSName as a type of tuple with a DN–valued field dn, a GUID–valued field guid, and a SID–valued field sid.