This section of the website concerns applications that use the RAQUEL Database Management System (= DBMS). They are known as Driver Applications in RAQUEL terminology.
The RAQUEL Database Management System (= DBMS) is designed to accept statements written in RAQUEL, execute them, and return the relevant responses. The DBMS acts like a function that receives statements as input and returns responses as output, where a response consists of an Error/OK response and an optional relational value response. When the DBMS alters a value in a database as a consequence of executing an input statement, this is treated as a side effect - so the DBMS is not a true mathematical function.
The DBMS deliberately omits all functionality to create input and process output. This means that the DBMS always needs a Driver Application to provide it with input and receive its output. The separation of DBMS and Driver Application is intended to prevent either one constraining the other. There is a standard Driver Interface which both must conform to in order to communicate with each successfully. For further details, see the 'Driver Interface of the DBMS' section of the "RAQUEL the Architecture / Architecture" main menu option.
Since a Driver Application is essential to use the RAQUEL DBMS, a simple RAQUEL GUI application has been created that provides a Graphical User Interface with which to form RAQUEL statements and display the execution response from the DBMS. See "The RAQUEL GUI" menu option for further details. The RAQUEL GUI is also known as the RAQUEL Teaching Tool as it is designed to make it easy to learn the RAQUEL notation.
The source code of the RAQUEL GUI and RAQUEL DBMS are freely available for download from SourceForge.
The scalar types used by an application must be consistent with those plugged into the RAQUEL DBMS installation used by the application.
The scalar types used by RAQUEL fall into two classes :
- Primitive Types
- These are types with an 'innate' representation. The RAQUEL DBMS must be specifically designed to recognise values of these types. The Number type and the Text type are examples of primitive types.
- Specified Types
- These are types whose specification is derived from primitive types or pre-existing specified types. The representation of values of such a type, which must follow a standard that is part of the RAQUEL notation, is specified as part of the design of the type. The RAQUEL DBMS uses the type specification to recognise values of all specified types. The Date type is an example of a specified type. It is defined in terms of the Number primitive type. Thus Date[ 3; 6; 2012 ] is recognised as the date value '3rd June 2012'.
See the "RAQUEL the Language / Scalar Data Types main menu option for further details.
To illustrate the ramifications of this, consider the RAQUEL GUI application. The only primitive types it currently handles are the Number and Text types. They are also the only ones currently plugged into the RAQUEL DBMS prototype, so consistency is achieved. The RAQUEL GUI can also handle input statements that include values of any specified types that only incorporate values of the Number and Text types; the RAQUEL DBMS can also accept such statements. However the RAQUEL DBMS can only process such values if the corresponding scalar type handler has been plugged into the DBMS; unless statement execution does not require the processing of any such values, in which case the input statement can still be executed by the DBMS. If response relational values include scalar values of such specified types, then the RAQUEL GUI should be able to display them using the standard method of representation (except that this functionality is not yet included in the RAQUEL GUI).
Structures of Driver Applications
It has so far been assumed that a single driver application must be capable of generating input statements and receiving both components of the response. This will typically be the case. However the RAQUEL DBMS does not impose any such constraint; to the DBMS there is just an input for statements, an output for the Error/OK response, and another output for the optional relvalue response. The three are completely unconnected as far as the DBMS is concerned, and so could involve three independent pieces of software.