Programmieren – from a logical point of view

Um nach einer längeren Unterbrechung dieses Blogthema wieder aufzunehmen, versuche ich mal, meine Interessen im Umfeld Logikprogrammierung aufzulisten. Ich mache das historisch, die ganz alten Sachen zuerst, die neueren am Ende. Das muss man nicht alles durchlesen. Die fett hervorgehobenen Worte geben eine Orientierung.

Mein erstes Prolog, das ich beruflich einsetzte, war LPA- Prolog. Es hatte zwei Features, die zumndest damals nicht typisch für Prolog waren, aber wichtig für meine Anwendungen.Es hatte eine ansprechende Benutzeroberfläche, deren Gestaltung innerhalb von Prolog erfolgte und die entsprechend intelligent war. (Im Grunde erfolgte die Gestaltung über eine Art Templates.) Ohne diese hätte sich niemand für meine Programme interessiert. Es hat sich inzwischen übrigens jemand die Mühe gemacht, und sie unter GNU-Prolog auf das aktuelle MacOS portiert, unter Benutzung der aktuellen Oberflächentools. Das Ganze heißt XGP (http://sourceforge.net/projects/xgp/)

Das zweite war eine Datenbankkopplung über ODBC, die nicht nur den Zugriff per SQL, sondern auch in komfortabler Prologschreibweise erlaubte. Der Vorteil war aber nicht einfach diese Bequemlichkeit. Auf diese Weise ließen sich Layer schreiben, die in einer Abfrage auf unterschiedliche Datenbanken zugreifen konnten. Da wir damals darauf angewiesen waren, auf verschiedene existierende große Datenbanken zuzugreifen, war das ein entscheidender Vorteil. Auch SWI-Prolog wollte diese beiden Schichten des DB-Zugriffs zur Verfügung stellen. Solange ich nachsah, gab es aber immer nur die erste Stufe (SQL)

Zwei Beispiele aus der Berliner Akademie:
Die Jahresberichte für deutsche Geschichte sind das Literaturverzeichnis der gesamten geschichtswissenschaftlichen Literatur Deutschlands. Literatureinträge sind auf den ersten Blick von einheitlicher Struktur. Wenn man genau hinsieht aber sehr vielfältig. Kollegen wollten das in imperativer Programmierung bewältigen. Nach 230 IF-THEN gaben sie auf. Ich hatte das Ganze dann in eine Grammatik umgeschrieben – und das funktionierte.
An der Akademie gab es einen der wenigen Fälle einer natürlichen Anwendung des Stammbaum-Beispiels : die Prosopographia Imperii Romani, ein (75 Jahre währendes) Projekt zu den Verwandschaftsbeziehungen der römischen Führungsschicht. Wirklich beeindruckt war das Projekt aber nicht wegen der Suchmöglichkeiten in Prolog, sondern durch die Umsetzung in eine Hypertextstruktur (Webseiten).
Die Beziehung zwischen Hypertext einerseits und Wissensrepräsentation/Logikprogrammierung beschäftigte mich damals in verschiedenen Zusammenhängen, u.a in einem Aufsatz (1991/92) „Eine grammatikbasierte Integration von Hypertext und wissensbasierten Systemen“ (gramm_xps_ht_praetor) , der heute nur noch historisch interessant ist.

Das führte dann auch zu den Anwendungen in Editionen (u.a. Jean Paul). Da entstanden dann auch weitere Vereinfachungen der DCGs, die sie auch für Editoren anwendbar machen sollten. Das stand, glaube ich, in dem Ulmer Papier.
Für die praktische Erstellung digitaler Editionen sind darüber hinaus Templates und Template-Sprachen wichtig. Dazu sollte eine Präsentation dienen, die ich auf einer PhilTag und in veränderter Form auf einer WechselwirkungsTagung in Darmstadt vorgestellt hatte (templates). Darin habe ich auch ihre Nutzbarkeit für Annotationen angedeutet.

Im Zusammenhang mit Editionen und auch speziell mit Annotationen hat mich das Thema der Zitier- und Referenzierbarkeit in digitalen Texten beschäftigt – mit der Forderung nach inhaltlicher Referenz (Sätze, Worte etc.) statt grafischer/drucktechnischer (Seiten, Zeilen).
In engem Zusammenhang damit steht die Möglichkeit, Annotationen aus dem eigentlichen Text als Stand-Off-Markup nach außen zu verlagern und Tools zu dessen Handhabung zur Verfügung zu stellen, (die gibt es nämlich kaum). Ein denkbares und naheliegendes Format für Stand-Off-Markup ist RDF als Format des Semantic Web. Alternativ finde ich auch das einfachere Format des Semantic Wiki interessant.
Es stellt sich die Frage, ob nicht all das statt mit Prolog mit Datalog (oder einer Weiterentwicklung wie Bloom) plus einer geeigneten Ergänzungs- / Einbettungssprache wie Ruby oder Swift bessere Akzeptanz gewinnen würde. Da DBs ohnedies die Domäne von Datalog sind, ist insbesondere interessant, wie Datalog Grammatiken handhabt und ob hier bequeme Notationen zur Verfügung stehen oder gestellt werden können. Interessant in diesem Zusammenhang auch das Verhältnis zum Tabling.

Demnächst mehr

Kommentar verfassen