next up previous contents
Next: Object Classes and Up: THE OBJECT-PROTOCOL MODEL Previous: Introduction

Object-Protocol Model Schema

In OPM, a database is specified in terms of objects and protocols. Objects and protocols are qualified by attributes, and are classified into object classes and protocol classes respectively. Attributes can take values from value classes that can be primitive (system) value classes, named primitive value classes, controlled value classes, or (local or foreign) object classes.

An OPM schema consists of definitions for (local or foreign) object classes, protocol classes, named primitive value classes, controlled value classes, and information on foreign databases.

An OPM schema can be assigned a schema name, a version, a database name, and can have a schema description. Permission model can also be specified in the schema definition.

<OPM schema> ::= <OPM schema description> 
                 <foreign database information>
                 <OPM classes>
               ;
<OPM schema description> ::= <null>
                           | SCHEMA <schema name> 
                                    <schema version>
                                    <database name>
                                    <schema description>
                                    <schema properties>
                                    <permissions>
                           ;
<schema name> ::= <null>
                | <string>
                ;
<schema version> ::= <null>
                   | VERSION ':' <string>
                   ;
<database name> ::= <null>
                  | DATABASE ':' <string>
                  ;
<schema description> ::= <null>
                       | DESCRIPTION ':' <text>
                       ;
<schema properties> ::= PROPERTIES : <prop list>
                      | <null>
                      ; 
<prop list> ::=  " <text> " " <text> "
              | <prop list> ,  " <text> " " <text> "
              ;
<permissions> ::= <null>
                | PERMISSIONS <owner attribute> <status attribute>
                ;
<owner attribute> ::= OWNER <simple attribute name> ':'
                      <abstract class list>
                      <attribute description>
                      <attribute example>
                      <domain-specific properties>
                    ;
<status attribute> ::= STATUS <simple attribute name> ':'
                      <status value class>
                      <simple default>
                      <attribute description>
                      <attribute example>
                      <domain-specific properties>
                    ;
<status value class> ::= <controlled value class name>
                       | <primitive value class>
                       | <named primitive value class>
                       ;
<OPM classes> ::= <OPM class>
                | <OPM classes> <OPM class>
                ;
<OPM class> ::= <controlled value class>
              | <named primitive value class>
              | <object class> <object attributes>
              | <protocol class> <protocol attributes>
              ;

If permission modeling is envisioned for an OPM database, then both OWNER and STATUS attributes must be specified in the schema definition. Each class will be then associated with an owner attribute and a status attribute unless the class is specified with PERMISSION OFF (see section 3 for more details). The OWNER attribute is a single-valued, abstract, non-null attribute that can have an optional attribute description, an optional attribute example specification, and optional domain-specific properties (see section 3 for more details on attribute specifications). The STATUS attribute is a single-valued, controlled or primitive, non-null attribute that can have an optional attribute default value, description, example specification and domain-specific properties. The STATUS attribute must be associated with integer data type; an object is considered as released if its status value is greater than 0, otherwise it is non-released. OWNER attribute and STATUS attributes must have globally unique names: they must be different from all other attribute names specified in the schema. Also note that all object classes belonging to the same class hierarchy must be specified with permissions on or off.

An example schema definition is given below:

   SCHEMA test
     DESCRIPTION: "An Example Schema for OPM 4.1"
     PERMISSIONS
        OWNER owner: Owner
        STATUS isReleased: TINYINT
               DEFAULT: 0

All classes in an OPM schema must have unique names. Attributes associated with each object class or protocol class must also have unique names.

The foreign database information in an OPM schema consists of foreign database names and optional database descriptions. If the foreign database name is not known at the time of schema definition, then the foreign database name can be left unspecified.

<foreign database information> ::= <foreign databases> 
                                  | <null>
                                  ;
<foreign databases> ::= FOREIGN_DATABASES: { }
                      | FOREIGN_DATABASES: { <foreign dbs> }
                      ;
<foreign dbs> ::= ( <foreign database name> , <foreign description> )
                | <foreign dbs> , ( <foreign database name> , <foreign description> )
                ;
<foreign description> ::= <text>
                        | <null>
                        ;
<foreign database name> ::= <text>
                          ;

Object and protocol class names are classified in OPM into a system maintained system metaclass called CLASSES. CLASSES contains the names of the local and foreign object classes and protocol classes of the current OPM schema. Additionally, a metaclass called SCLASSES contains subclass-superclass information, a metaclass called SPROTOCOLS contains protocol-subprotocol information, and a metaclass called DATABASES contains database information.

The content of the system metaclasses reflects the status of an OPM schema, and cannot be changed directly by users.



next up previous contents
Next: Object Classes and Up: THE OBJECT-PROTOCOL MODEL Previous: Introduction



& Markowitz
Thu Jun 13 10:46:15 PDT 1996