next up previous contents
Next: Versions Up: Update Rules Previous: Delete Rules

Update Rules

Every non-derived attribute of an object or protocol class, , is associated with an update rule consisting of the following components:

  1. If A is an identifier attribute, then an updated value of A for an instance x of must preserve the uniqueness of the identifier for x.

  2. If A is single-valued then A can be updated for an instance x of only if it remains the single A value for x.

  3. If A is associated with a minimum cardinality that is greater than 0 then A cannot be updated to a null value.

  4. If A is associated with value class , 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 .

  5. If A is associated with a value class involving object class or protocol class , 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.

  6. If A is a PreProt attribute and the A value for a protocol instance x of is updated so that it includes y then the GenProt value for x must be equal to the GenProt value for y.

  7. If A is a GenProt attribute and the A value for a protocol instance x of 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.

  8. If A is a PreProt attribute and the A value for a protocol instance x of 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



next up previous contents
Next: Versions Up: Update Rules Previous: Delete Rules