Every non-derived attribute of an object or protocol class,
,
is associated with an update rule
consisting of the following components:
must
preserve the uniqueness of the identifier for x.
only if it remains the single A value for x.
, where
is an object class, protocol class, or controlled value class,
then every updated A value for an instance x of
must already belong to
.
,
and A is defined as inverse of attribute B of
,
then if the A value of an instance x of
is updated from
y to z then x is removed from the B value for y
and is included in the B value for z.
is updated so that it includes y then
the GenProt value for x must be equal to
the GenProt value for y.
is updated to y, where y belongs to
the generic protocol class of
,
,
then for each input or output attribute of
, B, that is
specified using an input isa
.C or
output isa
.C specification,
the B value for x must be a subset of the C value for y.
is updated
so that it includes y, where y belongs to a protocol class that
precedes
,
, then for every input attribute of
, B, that is related using a from ... via specification
involving an output attribute of
, C,
the values of B and C for x and y,
respectively, must be related according to the
from ... via specification.
Since only delete rules associated with attributes can have one of several options, in an OPM schema only such rules need to be specified. If an attribute is not explicitly associated with a delete rule, then the default rule is considered to apply.
The BNF for object class, protocol class, and attribute update rules is given below:
<object class delete rules> ::= <input_for delete rule>
<output_of delete rule>
;
<input_for delete rule> ::= INPUT_FOR DELETE NULLIFIES
| <null>
;
<output_of delete rule> ::= OUTPUT_OF DELETE
<cascades or nullifies>
| <null>
;
<protocol class delete rules> ::= <generic_protocol delete rule>
<subprotocols delete rule>
<predecessor_protocols delete rule>
<successor_protocols delete rule>
;
<generic_protocol delete rule> ::= GENERIC_PROTOCOL DELETE
<cascades or nullifies or restricted>
| <null>
;
<subprotocols delete rule> ::= SUBPROTOCOLS DELETE
<cascades or nullifies or restricted>
| <null>
;
<predecessor_protocols delete rule> ::= PREDECESSOR_PROTOCOLS DELETE
<cascades or nullifies or restricted>
| <null>
;
<successor_protocols delete rule> ::= SUCCESSOR_PROTOCOLS DELETE
<cascades or nullifies or restricted>
| <null>
;
<attribute delete rule> ::= DELETE <cascades or nullifies or restricted>
| <null>
;
<cascades or nullifies or restricted> ::= RESTRICTED
| <cascades or nullifies>
;
<cascades or nullifies> ::= CASCADES
| NULLIFIES
;
An object class definition example:
OBJECT CLASS CLONE
DESCRIPTION: "clone"
ID: clone_id
INPUT_FOR DELETE NULLIFIES
OUTPUT_OF DELETE CASCADES
ATTRIBUTE clone_id: [1,1] INTEGER
ATTRIBUTE status: [0,1] CHAR(80)
ATTRIBUTE name: [0,1] CHAR(80)
ATTRIBUTE project: [0,1] PROJECT
inverse of PROJECT.clones
DELETE RESTRICTED
ATTRIBUTE clone_type: [0,1] CHAR(80)
ATTRIBUTE (parent, pos_in_parent): [0,1] (CLONE, INTEGER)
ATTRIBUTE genome_source: [0,1] CHAR(80)
ATTRIBUTE restriction_map: set-of [0,] RESTRICTION_MAP
ATTRIBUTE owner: set-of [0,] PERSON
ATTRIBUTE stock_location: [0,1] CHAR(80)
ATTRIBUTE date: [0,1] DATETIME
ATTRIBUTE clone_site: [0,1] CHAR(80)
ATTRIBUTE vector: [0,1] VECTOR
inverse of VECTOR.clones
ATTRIBUTE library: set-of [0,] CHAR(80)
A protocol class definition example:
PROTOCOL CLASS RANDOM
DESCRIPTION: "random sequencing"
ID: protocol_id
EXPANSION: SHEARING , GEL_LOAD , PURIFICATION , LIGATION ,
TRANSFECTION , ISOLATION , SEQUENCING
GENERIC_PROTOCOL DELETE CASCADES
SUBPROTOCOLS DELETE CASCADES
SUCCESSOR_PROTOCOLS DELETE CASCADES
ATTRIBUTE protocol_id: [1,1] INTEGER
ATTRIBUTE clones: set-of [1,] CLONE
input isa SHOTGUN_PROTOCOL.clones
DELETE RESTRICTED
ATTRIBUTE sample_dna: [1,1] SAMPLE_DNA
output
DELETE RESTRICTED