# Technical Details

##### AQL – A New Way to Relate to your Data

Algebraic Query Language (AQL) is an implementation of E. F. Codd’s relational algebra with the intention of extending modern turing complete languages (c, c++, c#, java, python, R) with a relational algebraic sublanguage.

##### Automatic Type Database (ATD):

AQL’s built-in Automatic Typing Database (ATD) solves the problems associated with typing relations. This information is packaged in records written to the ATD, which is itself a relational database. The properties we used to define relational data types maintain data independence, since that information comes from the relation itself. Only information needed to access the data and perform query operations is part of the datatype. Furthermore, as queries are processed, new types are computed concurrently with query results and stored in the ATD.

##### Light and Fast Interpreter:

The ATD gives the user of AQL a free computational workflow. With few exceptions, the user need not supply complete typing information currently with the query commands. Algebraic statements in AQL are a way to propose entity relationships, which are then tested or validated by execution. The AQL user need not define the form of their result before making a query. In this sense, AQL can be thought of functionally as a database calculator, allowing direct computation without predicting outcomes, declaring tables, or using functions that are not directly related to a simple query. This notion of “AQL as calculator” is further supported by the inherent recursion supported in AQL expressions, and by their arbitrary length and complexity.

##### Extensible and Flexible:

Permits rapid inclusion of new algebraic operators, grammatical rules, data types, language tokens, and expressions.

##### Declarative and Computational:

Seamless integration of declarative search and mathematical computation. Represents a functional completion of E. F. Codd’s Relational Algebra and is compatible with, and is inspired by matrix algebra as well as relational algebra, and includes matrix operators.

##### Open Database Model:

In our model, referential connections between relations may not initially be known in an AQL database. Instead, they can be tested for by means of the AQL operators. AQL’s algebraic operators use the datatypes of the relations to determine potential referential connections between them. In other words, the suite of AQL operators is used to mine the database to verify and quantify the interrelationships between or within relations. In addition, the AQL assignment operators can be used to save intermediate and final results of a query at almost any point in the search expression. These intermediate results can be used to locate and diagnose errors. This constitutes what we call the open architecture and open workflow of the AQL DBMS (ADBMS).

##### Developed at NASA’s JPL:

Developed at the NASA’s Jet Propulsion Laboratory for the GPS Earth Observatory (GEO).