Institute for Informatics
Georg-August-Universität Göttingen

Databases and Information Systems

dbis
Uni Göttingen

DFG-Rundgespräch "Theorie und Anwendung semistrukturierter Daten im Schnittpunkt von Informatik und Computerlinguistik",
Herrsching/Ammersee, Germany, Feb. 21/22, 2002.

Datenmanipulation und -integration in XML

Wolfgang May

Abstract:

XPathLog ist eine Datalog-artige Erweiterung von XPath als Anfrage-, Datenmanipulations- und -integrationssprache für XML-Daten. Dabei wird XPath um Variablenbindungen erweitert, bei denen die im Zuge der Auswertung eines XPath-Ausdrucks durchquerten XML-Knoten etc. an Variablen gebunden werden können. Dabei können Variablen sowohl an Literale und Knoten, als auch an Namen gebunden werden, um Anfragen auf Daten- sowie Schemaebene stellen zu können. Variablenbindungen können entweder als Antworten ausgegeben werden, oder an den Regelkopf weitergegeben werden um Änderungen an der Datenbasis auszuführen. Im Gegensatz zu anderen Ansätzen wird dabei XPath-Syntax und Semantik auch zur deklarativen Spezifikation von Änderungen verwendet: XPath-Ausdrücke im Regelkopf erhalten eine konstruktive Semantik, indem sie als Beschreibung der Elemente und Attribute, die der Datenbank hinzugefügt werden sollen, interpretiert werden.

Die Einschränkung, dass XML auf einem baumartigen Datenmodell basiert hat dabei direkte Auswirkungen auf die Semantik von Änderungsoperationen: Wenn eine Änderung spezifiziert, dass ein (durch eine Anfrage) erhaltener Teilbaum einer XML-Instanz an einer bestimmten Stelle eingefügt werden soll, mu"s dieser Teilbaum kopiert werden. Damit ergibt sich die Frage, ob Referenzen, die in den originalen Teilbaum zeigen, angepasst werden sollen; es ist nicht möglich, denselben Teilbaum ein zweites Mal einzubinden (wie in graphbasierten Modellen wie z.B. OEM oder F-Logic). Wenn man Datenintegrationsprobleme, wie etwa die Restrukturierung von XML-Instanzen, das Verschmelzen von Knoten aus verschiedenen Bäumen, oder Synonyme betrachtet, wird dieses Problem noch deutlicher.

Aus diesem Grund verwendet XPathLog - und die Implementierung in LoPiX - intern ein graphbasiertes, an den Kanten markiertes Datenmodell, das als XTreeGraph bezeichnet wird. Der XTreeGraph erweitert das bekannte XML-Datenmodell indem mehrere überlappende Bäume modelliert werden können, und somit die skizzierten Änderungs- und Integrationsoperationen unterstützt werden. Zur Integration verschiedener XML-Bäume wird aus den Eingabebäumen ein interner XTreeGraph erzeugt, auf dem die Ergebnisbäume durch Projektion als XML-Sichten definiert werden.

Die "reine" XPathLog-Sprache bietet damit eine intuitive Datalog-artige Erweiterung von XPath zu einer Anfrage-, Datenmanipulations- und -integrationssprache, deren Syntax und Semantik eng an den bekannten XPath-Standard anknüpft. Spracherweiterungen bieten zusätzlich eine Klassenhierarchie (mit nichtmonotoner Wertvererbung), ein einfaches Konzept zur Beschreibung des Datenbankschemas (der zur Definition von XML-Views über dem XTreeGraph verwendet wird), sowie den Zugriff auf weitere Datenquellen im Web während der Auswertung eines Programms. Die Flexibilität und Ausdruckskraft der vollen XPathLog-Sprache erlaubt eine kombinierte Behandlung von Daten, Schemadaten, sowie semantischen Metadaten, wie z.B. Annotierungen und Ontologien.

Folien: [postscript] [pdf]

A detailed description of the XPathLog language can be found in the Habilitation thesis and in Theory and Practice of Logic Programming, 2003.
Further documentation can be found on the LoPiX project homepage.