Objects in OPM are uniquely identified by object identifiers (oids), are qualified by attributes, and are classified into classes. A subset of the attributes associated with a class is specified as the external object identifier ( ID). A class can be defined as a subclass of other (super) classes, where a subclass inherits the attributes of its superclasses.
Attributes can be simple or consist of a tuple of simple attributes. For example, the address of a person can be modeled as a tuple attribute address consisting of simple attributes street, city, and zip_code. A simple attribute can have a single value, a set of values, or a list of values, and can be primitive, if it is associated with a system-provided data type, or abstract, if it takes values from object classes. For example, citations on genes can be modeled by associating class Gene with abstract attribute citations taking values from class Citations.
The attributes of an object class can be partitioned into non-versioned and versioned attributes. Non-versioned attributes represent stable object properties (e.g., social security number of a person), while versioned attributes represent evolving object properties of an object (e.g., the address of a person).
OPM supports the specification of derived attributes using derivation rules involving arithmetic expressions, aggregate functions, and attribute composition.
OPM allows specifying subclass-superclass relationships in a class hierarchy, and supports multiple inheritance in such hierarchies. A subclass is a specialization of its superclasses, and inherits all the attributes associated with its superclasses.
Protocol classes in OPM are used to model laboratory experiments. Given an input, a protocol instance (experiment) results in an output, where both input and output consist of objects. OPM supports the recursive specification (expansion) of protocols. Protocol expansion in OPM allows specifying a protocol in terms of alternative subprotocols, sequences of subprotocols, and optional protocols. A protocol class can be associated with regular as well as input and output attributes. Input and output attributes are used for specifying input and output connections between protocols.
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 derived or non-derived object classes.