Upload
lutz-maicher
View
624
Download
0
Tags:
Embed Size (px)
Citation preview
Einführung in Topic Maps
topicmapslab.de
Topic Maps Query Language
Sven Krosse M. Sc.
Topic Maps Lab an der Universität Leipzig
Session 6
Einführung in Topic Maps
topicmapslab.de
Review – Session 5
Sortierung
High-Level
● Environment
● SELECT Style
Einführung in Topic Maps
topicmapslab.de
Agenda
1. FLW(O)R Style
● RETURN-Clause
● WHERE-Clause
● ORDER-BY Clause
● FOR-Clause
2. Verschachtelung
3. Content Types
● XML
● CTM
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileFLW(O)R-Style
Einführung in Topic Maps
topicmapslab.de5
FLW(O)R-Style
● syntaktische Ähnlichkeit zu XML FLW(O)R oder
Programmiersprachen ( FOR-Loops)
● besteht aus einer Menge von Sub-Expressions
● eingeschränkte syntaktische Mächtigkeit ( im. Vgl. zu SELCT )
● erlaubt Bindung von Variablen
● Unterstützung verschiedener Ergebnistypen
Einführung in Topic Maps
topicmapslab.de6
FLW(O)R-Style
[ <for < binding-set >> ]
[ where boolean-expression ]
[ order by < value-expression > ]
return content
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileReturn - Clause
Einführung in Topic Maps
topicmapslab.de8
Return-Klausel
● besteht aus dem Schlüsselwort RETURN und einer Content-
Definition als Ergebnis
→ Content definiert Art und Inhalt der Rückgabe
● Verwendung von gebundenen Variablen möglich
● einziger nicht optionaler Teil der FLW(O)R-Expression
Einführung in Topic Maps
topicmapslab.de9
FLW(O)R-Klausel
%prefix wiki http://en.wikipedia.org/wiki/
RETURN wiki:Puccini
→ Topic für Puccini
%prefix wiki http://en.wikipedia.org/wiki/
RETURN wiki:Puccini / tm:name , wiki:Puccini >> indicators
→ zweispaltiges Ergebnis ( Namen und Subject-Identifier von
Puccini )
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileWhere – Clause und Variablen
Einführung in Topic Maps
topicmapslab.de11
Where-Klausel (Wdh)
● Einschränkung möglicher Bindings einer Variable
● Definition von Variablen, welche in der Return-Klausel verwendet
werden können
● funktional ähnlich zu Filtern
Einführung in Topic Maps
topicmapslab.de12
Where-Klausel (Wdh.)
%prefix o http://psi.ontopia.net/music/
WHERE $composer ISA o:composer
RETURN $composer
→ Variable $composer nur an Komponisten gebunden
Einführung in Topic Maps
topicmapslab.de13
Where-Klausel (Wdh.)
%prefix o http://psi.ontopia.net/music/
%prefix l http://psi.ontopia.net/literature/
WHERE $composer ISA o:composer AND o:composed-by ( l:work :
$opera, o:composer : $composer )
RETURN $composer, $opera
→ Variable $composer nur an Komponisten gebunden
→ Variable $opera nur an Gegenspieler (von $composer) vom Typ
„Werk“ in der Assoziation „komponiert“ gebunden
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileOrder By – Clause
Einführung in Topic Maps
topicmapslab.de15
Order By-Klausel (Wdh.)
● Sortierung der Ergebnismenge
● Definition über Pfadausdrücke
● Verarbeitung erfolgt abhängig vom vorherigen
Sortierungsergebnis
Einführung in Topic Maps
topicmapslab.de16
Order By-Klausel (Wdh.)
%prefix o http://psi.ontopia.net/music/
%prefix l http://psi.ontopia.net/literature/
WHERE $composer ISA o:composer AND o:composed-by ( l:work :
$opera, o:composer : $composer )
ORDER BY $composer / tm:name [0] , $opera / tm:name [0] DESC
RETURN $composer, $opera
→ Sortierung nach Name des Komponisten
→ bei gleichen Komponisten, sortieren nach Name der Oper
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileFor – Clause
Einführung in Topic Maps
topicmapslab.de18
For-Klausel
● definiert Wertebereich der zu bindenden Variablen
● kann mehrere Binding Definitionen enthalten
● Muster
FOR variable IN context
FOR other IN other-context
...
Einführung in Topic Maps
topicmapslab.de19
For-Klausel
%prefix o http://psi.ontopia.net/music/
%prefix l http://psi.ontopia.net/literature/
FOR $composer IN // o:composer
WHERE o:composed-by ( l:work : $opera, o:composer : $composer )
ORDER BY $composer / tm:name [0] , $opera / tm:name [0] DESC
RETURN $composer, $opera
→ Bereich der Variable $composer auf alle Komponisten beschränkt
Einführung in Topic Maps
topicmapslab.de20
For-Klausel
%prefix o http://psi.ontopia.net/music/
%prefix l http://psi.ontopia.net/literature/
FOR $composer IN http://en.wikipedia.org/wiki/Puccini
WHERE o:composed-by ( l:work : $opera, o:composer : $composer )
ORDER BY $composer / tm:name [0] , $opera / tm:name [0] DESC
RETURN $composer, $opera
→ Bereich der Variable $composer auf Puccini beschränkt
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileVerschachtelung
Einführung in Topic Maps
topicmapslab.de22
Verschachtelung
● Return Klauseln können als Verschachtelung einen TMQL Query
enthalten
● Variablen besitzen nur innerhalb ihres Queries Gültigkeit
(Vererbung an „Kind“-Query )
● z.B. Verwendung um Variablen Bindung abhängig von Variablen
zu machen
Einführung in Topic Maps
topicmapslab.de23
Verschachtelung
%prefix o http://psi.ontopia.net/music/
FOR $composer IN // o:composer
RETURN {
FOR $type IN $composer >> characteristics >> types
RETURN $composer, $type, $composer / $type
}
→ dreispaltiges Ergebnis
( Komponist, Eigenschaftstyp, Eigenschaftswert )
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileContent Types
Einführung in Topic Maps
topicmapslab.de25
Content Types
● FLW(O)R ist der einzige Query Typ, welcher verschiedene
Formate liefern kann
● kann als Transformation, ähnlich XSLT, für Topic Maps verwendet
werden
● Ergebnis kann ein CTM Fragment oder ein XML Fragment sein
( neben Topic Items )
● Fragmente können beliebig definiert werden
● nicht zwingend valide Fragmente der jeweiligen Sprache
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileCTM Result
Einführung in Topic Maps
topicmapslab.de27
CTM - Content
● CTM Fragmente werden durch dreifache Anführungszeichen
symbolisiert
RETURN “““ ... “““
● CTM Stream kann eine Menge von Queries enthalten
● Variablen werden wie bei Verschachtelungen behandelt
● Verwendung um Informationen als Topic Maps Fragment zu
exportieren oder eine Topic Map zu modifizieren
Einführung in Topic Maps
topicmapslab.de28
CTM - Content
%prefix o http://psi.ontopia.net/music/
%prefix l http://psi.ontopia.net/literature/
RETURN """
{
FOR $composer IN // o:composer
RETURN """ { $composer } """
}
"""
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileXML Result
Einführung in Topic Maps
topicmapslab.de30
XML - Content
● XML Fragmente werden durch XML Tags definiert
RETURN <yml> ... </yml>
● XML Fragmente können eine Menge von Queries enthalten
● Variablen werden wie bei Verschachtelungen behandelt
● Verwendung um Informationen als XML Fragmente zu
exportieren ( Web-Services )
Einführung in Topic Maps
topicmapslab.de31
XML - Content
%prefix o http://psi.ontopia.net/music/
%prefix l http://psi.ontopia.net/literature/
RETURN <yml>
{
FOR $composer IN // o:composer
RETURN <composer> { $composer } </composer>
}
</yml>
Einführung in Topic Maps
topicmapslab.de32
XML - Content
● Topic Maps Elemente werden in XTM Fragment überführt
● simple Datentypen werden in Zeichenketten übersetzt
● Zeichenketten werden unverarbeitet in den Strom geschrieben
Einführung in Topic Maps
topicmapslab.de
ENDE