PROLOG en topologie De programmeertaal PROLOG toegepast bij relationele databases met topologisch gestructureerde ruimtelijke objecten Proloog Achtergrond van PROLOG Categorieën van programmeertalen PROLOG en de formele logica door ir. H. T. Uitermark te Deventer. SUMMARY PROLOG, relational databases and geographical information systems Some applications of the programming language PROLOG are demonstrated in the context of a topological structured relational database with spatial objects. PROLOG is een programmeertaal. De naam PROLOG is afgeleid van Programmeren In Logica. Net als andere programmeertalen is PROLOG ontworpen om problemen te beschrijven in een vorm die een oplossing door de computer mogelijk maakt. PROLOG onderscheidt zich van andere programmeertalen, omdat het gebaseerd is op ideeën uit de formele logica. Dat geeft PROLOG zo zijn eigen karakter. De bedoeling van dit artikel is om de karakteristieken en eigenschappen van PROLOG op een informele manier voor het voetlicht te brengen. De aanleiding daartoe is het recente artikel van René van der Schans in dit tijdschrift, waarin het relationele databasemodel is behandeld [1], In de praktijk blijkt dit relationele model goed aan te sluiten bij de mogelijkheden van PROLOG. PROLOG is naast LISP de programmeertaal die vaak in verband wordt gebracht met zogenoemde „kennissyste men" (veelal synoniem met „expertsystems" of „know ledge based systems"). PROLOG heeft namelijk als eigenschap, dat het uit bekende feiten op basis van expli ciete regels, waarin relaties tussen feiten zijn gedefi nieerd, nieuwe feiten kan afleiden. Met andere program meertalen kan dit ook, maar in PROLOG is een zoge naamd „inferentie-mechanisme" als het ware standaard ingebouwd. Vandaar de toepassing van PROLOG in in formatiesystemen waar op de een of andere manier moet worden geredeneerd. De toepassing van PROLOG is overigens niet alleen be perkt tot dit soort informatiesystemen. PROLOG wordt ook toegepast op het gebied van de symboolmanipulatie, zoals bij computeralgebra, compilerbouw, taalkunde en, zoals hierna zal worden aangegeven, bij relationele bestandsstructuren. De syntaxis van PROLOG is in het begin van de 70-er jaren in Frankrijk ontworpen, vervolgens door de Britten verder geoperationaliseerd en door de Japanners overge nomen voor hun „vijfde generatie" computerproject. PROLOG is beschikbaar voor alle typen computersyste men. Ik maak in dit artikel gebruik van LPA Prolog, onder MS-DOS, met de Edingburgh-syntaxis. Een programmeertaal weerspiegelt in belangrijke mate de wijze waarop de ontwerper van die taal tegen de bui tenwereld aankijkt. Deze zienswijze komt onmiddellijk naar voren als een programmeertaal op zijn betekenis aspect wordt doorgelicht. Conventionele talen als Fortran, Pascal of C bevatten constructies waarvan de betekenis vooral is gericht op een wijze van handelen of werken, kortom op een procé dé. In dit verband spreekt men van procedurele program meertalen. Daarentegen ziet PROLOG de buitenwereld als bestaande uit entiteiten en geeft te kennen (decla reert) dat hiertussen relaties bestaan (het betekenis aspect). In dit verband spreekt men van een declaratieve taal. Bij een declaratieve taal als PROLOG concentreert een programmeur zich op een nauwkeurig beschrijven (speci ficeren) van deze entiteiten en hun relaties. Dit sluit niet alleen dicht aan bij de specificaties van een informatie systeem, maar is tegelijkertijd gemakkelijker te begrijpen: de (procedurele) details van de uitvoering van een pro gramma kan de PROLOG-programmeur overlaten aan de PROLOG-programmavertaler. In PROLOG ontbreken dan ook de gebruikelijke besturingsopdrachten zoals do, while, for of goto, van de procedurele talen. Deze bestu ring krijgt men in PROLOG als het ware cadeau. Het vin den van een antwoord blijft in principe verborgen voor de gebruiker en kan worden overgelaten aan het „inferentie- mechanisme". Kort samengevat: een declaratieve taal als PROLOG richt zich op het WAT („wat voor een antwoord wordt ver langd?") en een procedurele taal richt zich op het HOE („hoe een antwoord te vinden?") [2, 3], PROLOG is gebaseerd op ideeën uit de predikatenlogica, een onderdeel van de formele logica. Evenals de formele logica houdt de predikatenlogica zich bezig met de juist heid van een conclusie uit één of meerdere premissen (vooropgeplaatste stellingen). Zo zal een conclusie juist zijn, indien de premissen juist zijn. Het trekken van een conclusie is te formaliseren en in een formuletaal uit te drukken. Bijvoorbeeld de formule: C :- PI, P2, P3, Pn valt te lezen als: „indien de premissen P1 èn P2 èn P3 tot en met Pn alle waar zijn, dan is de conclusie C waar". De notatie :- staat voor „indien" en de komma geldt als logische EN-operator. In de predikatenlogica wordt de formuletaal voor conclu- 356 NGT GEODESIA 89 - 7/8

Digitale Tijdschriftenarchief Stichting De Hollandse Cirkel en Geo Informatie Nederland

(NGT) Geodesia | 1989 | | pagina 20