1.3.2 Properties and Property Sets

A property is a typed value associated with a numerical identifier, known as the property identifier. OLEPS also enables a property to be optionally associated with a string known as the property name. Typically, this is used to provide a human-readable description of the semantics of the property. A property set is a set of properties, along with a globally unique identifier (GUID) format identifier, or FMTID. The FMTID serves to identify the property set format, which is a specification for the properties in the property set, including the property identifier, type, semantics and, optionally, a property name for each property. Property identifiers and property names (if present) of the properties in a property set are distinct such that both property identifiers and property names (if present) uniquely identify properties.

To accommodate specialized uses of property sets, OLEPS also enables a property set to have an associated class identifier (CLSID), a GUID value typically used to identify the application or component that created the property set. For example, an application that persists an instance of a Component Object Model (COM) class in a property set might set the associated CLSID to the CLSID of this COM class.

Two kinds of property sets are defined: simple property sets and non-simple property sets. Non-simple property sets allow a set of property types that are a superset of the types allowed by simple property sets. In particular, streams and storages (1) are valid types for properties in a non-simple property set, whereas these types are not valid in a simple property set. Additionally, the specification for simple property set is a stream format, whereas the specification for non-simple property sets is a storage format.