Abstract
OQL (Object Query Language) is a language that is to be used to query data from objectoriented databases (OODBs). It has been designed as part of the standards from ODMG (Object Data Management Group), and the one implemented in this assignment follows the ODMG 3.0 standard.
One of the major advantages of OQL is that it is almost like SQL (Structured Query Language), but at the same time it is simpler and better planned.
Most of the operators and functionality in OQL is implemented, and the parts that are not implemented are discussed in the document. It contains a complete scanner and parser for the OQL-language, and it can calculate correct results of queries that uses the implemented functions and operators.
The implementation is written in Java, following the guidelines in the Java Binding in the ODMG 3.0 standard.
ODMG 3.0 defines more than OQL. It also defines an object modell and ODL (Object Definition Language). ODL is to be used to define the schema in OODBs, but it is not implemented in this assignment. This results in the schema being defined in other ways (described in the document).
The implementation works against ObjectStore databases. ObjectStore is a commercial objectoriented database management system (OODBMS) owned by Progress (www.progress.com). ObjectStore supports storing objects from both Java and C++. The implementation only supports Java objects.
TDD (Test Driven Development) has been used in this assignment. All implemented operators and functions are tested at each build using JUnit. There are 175 tests all together.
It is possible to implement the rest of the ODMG 3.0 standard in this implementation. This includes implementing ODL and the rest of the functionality in OQL (which isn't all that much).
It is also possible to modify this implementation to support other OODBMS, i.e. db4o (database for objects).