The author sketches the application of logic programming as a database language. His paper can be divided into three parts. The first part (Sections 2-10) reviews main features of logic programming. Emphasis is laid on the procedural interpretation of logical clauses in PROLOG and related languages. The central part (Sections 11-15) presents extensions needed to express database queries and updates, if a database is regarded as a collection of assertions given as logical clauses. A set constructor is used to handle set-oriented queries and to define aggregations. Database updating is reduced to only adding event records with a time parameter. Then the database information also being time-tagged is derived according to rules and constraints. The semantics of these extensions is explained by using a combination of object language and metalanguage. In the final part (Sections 16-17) theoretical differences between relational and logical databases are discussed. As far as query evaluation is concerned, relational databases correspond to restricted logical databases which are subject to certain assumptions (e.g., the closed world assumption). The general logical approach, however, becomes especially advantageous when dealing with incomplete information.
This paper provides a very readable survey giving many examples and some (simplified) formal explanations of the most critical points. A broader, but not so introductory, survey including an extensive bibliographic analysis can be found in [1].