Objects in OPM are uniquely identified by object identifiers (oids), are qualified by attributes, and are classified into classes. Examples of OPM classes are shown in figure 1; these classes belong to the OPM schema for the Spectro-Microscopy Collaboratory at LBNL's Advanced Light Source Beamline 7 [4].
A subset of the attributes associated with a class is specified as the representative attributes used to display an object of that class. A class can be defined as a subclass of other (super) classes, where a subclass inherits the attributes of its superclasses. OPM supports multiple inheritance in class hierarchies.
An attribute can either be single valued, set valued or list valued. Each attributes is either simple (e.g., attribute DeviceName of class Devices in figure 1) or consists of a tuple (aggregation) of simple attributes (e.g., attribute Variables of class SubDevices in figure 1). A simple attribute can be either primitive, if it is associated with a system-provided data type (e.g., attribute DeviceNumber of class Devices in figure 1), or abstract, if it takes values from object classes (e.g., attribute Subdevices of class Devices in figure 1). The attributes of an object class are partitioned into non-versioned and versioned attributes. Non-versioned attributes represent stable object properties (e.g., the social security number of a person), while versioned attributes represent evolving object properties of an object (e.g., the address of a person).
Figure 1: Examples of Classes of an OPM Schema for an Electronic Notebook
Protocol classes in OPM are used to model scientific experiments. OPM supports the recursive specification (expansion) of protocols, where a protocol can be specified in terms of alternative subprotocols, sequences of subprotocols, and optional protocols. In addition to the simple and tuple attributes described above, a protocol class can also be associated with input and output attributes that are used for representing input-output protocol connections.
OPM supports the specification of derived attributes using derivation rules involving arithmetic expressions, aggregate functions, and attribute composition. OPM also supports two types of derived object classes: derived subclasses and derived superclasses. A derived subclass is defined as a subclass of another derived or non-derived object class with an optional derivation condition. A derived superclass is defined as a union of two or more object classes.