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
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