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.