O++(ID:3341/o::004)


database programming language for ODE system based on C++.  Classes support data encapsulation and multiple inheritance. facilities for creating persistent and versioned objects, defining sets, and iterating over sets and clusters of persistent objects. facilities to
associate constraints and triggers with objects.


People:
Structures:
Related languages
O++ => SWORD   Subsystem

References:
  • Agrawal R. and Gehani, N. "Ode (Object Databases and Environment): The Language and the Data Model" view details Abstract: ODE is a database system and environment based on the object paradigm. It offers one integrated data model for both database and general purpose manipulation. The database is defined, queried and manipulated in the database programming language O++ which is based on C++. O++ borrows and extends the object definition facility of C++, called the class. Classes support data encapsulation and multiple inheritance. We provide facilities for creating persistent and versioned objects, defining sets, and iterating over sets and clusters of persistent objects. We also provide facilities to associate constraints and triggers with objects. This paper presents the linguistic facilities provided in O++ and the data model it supports. DOI
          in [ACM] Proceedings of the 1989 ACM SIGMOD International Conference on Management of Data, Portland, OR, May 1989 view details
  • Agrawal R. and Gehani, N. "Rationale for the Design of Persistence and Query Processing Facilities in the Database Programming Language O++" pp25-40 view details Abstract: ODE is a database system and environment based on the object paradigm. It offers one integrated data model for both database and general purpose manipulation. The database is defined, queried, and manipulated in the database programming language 0++, an extension of C++. 0++ uses the C++ object definition facility, called the class, to provide data encapsulation and multiple inheritance. 0++ extends C++ by providing facilities for creating persistent and versioned objects, defining and manipulating sets, organizing persistent objects into clusters, iterating clusters of persistent objects, and associating constraints and triggers with objects. In this paper, we present the 0++ facilities for persistence and query processing, the alternatives considered, and the rationale behind the design choices.

          in Second International Workshop on Database Programming Languages, Salishan, Oregon, Morgan Kaufmann Publishers, Inc., June 1989 view details
  • Agrawal, R.; Buroff, S.; Gehani, N. and Shasha, D. "Object Versioning in Ode", pages 446--455 view details
          in Proceeding of 7th International Conference on Data Engineering April 1991 view details
  • Mumick, Inderpal Singh; Ross, Kenneth A.; Sudarshan, S. "Design and Implementation of the SWORD Declarative Object­-Oriented Database System" view details Abstract: SWORD is a declarative object-oriented database being built at AT&T Bell Laboratories. SWORD provides both procedural and declarative data manipulation languages. SWORD is integrated with the O++ language (an extension of C++) of the ODE database system. The data definition and procedural data manipulation in SWORD are done in the O++ sublanguage. In addition, SWORD provides a declarative sublanguage to express queries. Declarativeness yields benefits in reduced programming time and automatic optimization in response to changing database characteristics. The declarative sublanguage is based on the Noodle language of [MR93], modified for integration with C++/O++ to avoid the impedance mismatch problem. The declarative sublanguage models object-identity, classes, relations, views, inheritance, complex objects, and methods, in addition to logical rules. In this paper we discuss the design and implementation of the declarative sublanguage of SWORD.

    Our work bridges the gap between deductive and object-oriented databases. SWORD will permit a wide range of object-oriented queries to be expressed in a declarative way. Extract: Outline
    The SWORD declarative language borrows from deductive and object-oriented technology. Our language has recursion and is rule based. Relations are supported as objects with object identifiers, but individual tuples of a relation do not have object identifiers. Complex objects (functional and set valued) are supported using HiLog-like constructs [CKW92]. Attributes of objects are referenced by name rather than position.

    There are several novel features in our system:
    (1) Variables can range over all classes, relations, attributes, and objects, in a manner similar to Hilog [CKW92]. This permits queries that are not possible in SQL extensions and other object-oriented proposals.
    (2) Classes, relations, methods, and objects are referenced in a uniform manner.
    (3) The declarative language is integrated into O++. For example, some of the methods of an O++ class can be defined declaratively, others can be defined procedurally using O++.
    (4) Queries can do implicit schema querying. Queries such as find all classes (or find all subclasses of vehicle class) whose objects have an attribute engine capacity can be expressed without reference to the catalog. Queries to find objects for which some attribute is equal to the string "Stanford University'' can also be expressed.

    We discuss the implementation of SWORD. We describe how SWORD addresses issues of integration with the O++ data model, and issues related to compilation into O++, especially with respect to types. The paper is organized as follows. In Section 3 we give a detailed description of the SWORD declarative language. In Section 6 we present an example application using SWORD. Section 7 describes the implementation. Finally, Section 9 describes future work, and compares our work with related proposals.
          in Proceeding of 7th International Conference on Data Engineering April 1991 view details