The functional data model as the basis for an enriched database query language
Conventional database languages rely on the user specifying what relations are to be used when evaluating a query. Consequently they preclude queries which involve searching for unspecified connections or associations in the database. In this paper we present Hydra, a functional language with all the facilities to define, update and query a database, which also enables users to carry out "associational" queries. Hydra uses a graph-based data model in which nodes represent values or entities and arcs the relationships between them. Associational facilities are made possible by the provision of built-in functions which find paths through the database graph. The mappings between sets of nodes in the database graph are represented as functions at the Hydra language level and it is as lists of such functions that associational results are returned. The use of a functional language is important since such languages allow functions to be returned as results; such an approach could not be adopted in a logic-based language which would not permit predicates to be returned as answers. Hydra also allows users to define general computational functions which are not considered to form part of the database. This use of two sets of functions achieves a computationally complete system which extends the query power of previous database systems without compromising their expressive or query power.
functional data model functional programming graph databases semantic networks