1. Einführung in Topic Maps
Topic Maps Query Language
Session 6
Sven Krosse M. Sc.
Topic Maps Lab an der Universität Leipzig
krosse@informatik.uni-leipzig.de
topicmapslab.de
5. Einführung in Topic Maps
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
topicmapslab.de
5
6. Einführung in Topic Maps
FLW(O)R-Style
[ <for < binding-set >> ]
[ where boolean-expression ]
[ order by < value-expression > ]
return content
topicmapslab.de
6
8. Einführung in Topic Maps
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
topicmapslab.de
8
9. Einführung in Topic Maps
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 )
topicmapslab.de
9
10. Einführung in Topic Maps
Sprachbestandteile
Where – Clause und Variablen
topicmapslab.de
11. Einführung in Topic Maps
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
topicmapslab.de
11
12. Einführung in Topic Maps
Where-Klausel (Wdh.)
%prefix o http://psi.ontopia.net/music/
WHERE $composer ISA o:composer
RETURN $composer
→ Variable $composer nur an Komponisten gebunden
topicmapslab.de
12
13. Einführung in Topic Maps
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
topicmapslab.de
13
14. Einführung in Topic Maps
Sprachbestandteile
Order By – Clause
topicmapslab.de
15. Einführung in Topic Maps
Order By-Klausel (Wdh.)
● Sortierung der Ergebnismenge
● Definition über Pfadausdrücke
● Verarbeitung erfolgt abhängig vom vorherigen
Sortierungsergebnis
topicmapslab.de
15
16. Einführung in Topic Maps
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
topicmapslab.de
16
18. Einführung in Topic Maps
For-Klausel
● definiert Wertebereich der zu bindenden Variablen
● kann mehrere Binding Definitionen enthalten
● Muster
FOR variable IN context
FOR other IN other-context
...
topicmapslab.de
18
19. Einführung in Topic Maps
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
topicmapslab.de
19
20. Einführung in Topic Maps
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
topicmapslab.de
20
22. Einführung in Topic Maps
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
topicmapslab.de
22
23. Einführung in Topic Maps
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 )
topicmapslab.de
23
25. Einführung in Topic Maps
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
topicmapslab.de
25
27. Einführung in Topic Maps
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
topicmapslab.de
27
28. Einführung in Topic Maps
CTM - Content
%prefix o http://psi.ontopia.net/music/
%prefix l http://psi.ontopia.net/literature/
RETURN """
{
FOR $composer IN // o:composer
RETURN """ { $composer } """
}
"""
topicmapslab.de
28
30. Einführung in Topic Maps
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 )
topicmapslab.de
30
31. Einführung in Topic Maps
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>
topicmapslab.de
31
32. Einführung in Topic Maps
XML - Content
● Topic Maps Elemente werden in XTM Fragment überführt
● simple Datentypen werden in Zeichenketten übersetzt
● Zeichenketten werden unverarbeitet in den Strom geschrieben
topicmapslab.de
32