TMQL tutorial - part 6
-
Upload
lutz-maicher -
Category
Documents
-
view
625 -
download
0
Transcript of TMQL tutorial - part 6
![Page 1: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/1.jpg)
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
![Page 2: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/2.jpg)
Einführung in Topic Maps
topicmapslab.de
Review – Session 5
Sortierung
High-Level
● Environment
● SELECT Style
![Page 3: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/3.jpg)
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
![Page 4: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/4.jpg)
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileFLW(O)R-Style
![Page 5: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/5.jpg)
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
![Page 6: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/6.jpg)
Einführung in Topic Maps
topicmapslab.de6
FLW(O)R-Style
[ <for < binding-set >> ]
[ where boolean-expression ]
[ order by < value-expression > ]
return content
![Page 7: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/7.jpg)
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileReturn - Clause
![Page 8: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/8.jpg)
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
![Page 9: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/9.jpg)
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 )
![Page 10: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/10.jpg)
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileWhere – Clause und Variablen
![Page 11: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/11.jpg)
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
![Page 12: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/12.jpg)
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
![Page 13: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/13.jpg)
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
![Page 14: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/14.jpg)
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileOrder By – Clause
![Page 15: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/15.jpg)
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
![Page 16: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/16.jpg)
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
![Page 17: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/17.jpg)
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileFor – Clause
![Page 18: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/18.jpg)
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
...
![Page 19: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/19.jpg)
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
![Page 20: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/20.jpg)
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
![Page 21: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/21.jpg)
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileVerschachtelung
![Page 22: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/22.jpg)
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
![Page 23: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/23.jpg)
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 )
![Page 24: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/24.jpg)
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileContent Types
![Page 25: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/25.jpg)
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
![Page 26: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/26.jpg)
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileCTM Result
![Page 27: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/27.jpg)
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
![Page 28: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/28.jpg)
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 } """
}
"""
![Page 29: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/29.jpg)
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileXML Result
![Page 30: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/30.jpg)
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 )
![Page 31: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/31.jpg)
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>
![Page 32: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/32.jpg)
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
![Page 33: TMQL tutorial - part 6](https://reader036.fdocuments.net/reader036/viewer/2022081515/558c5bc2d8b42aa26e8b456f/html5/thumbnails/33.jpg)
Einführung in Topic Maps
topicmapslab.de
ENDE