tmql tutorial - part 5
TRANSCRIPT
Einführung in Topic Maps
topicmapslab.de
Topic Maps Query Language
Sven Krosse M. Sc.
Topic Maps Lab an der Universität Leipzig
Session 5
Einführung in Topic Maps
topicmapslab.de
Review – Session 4
Funktionen
● Zeichenketten-Funktionen
● numerische Funktionen
● Transformationsfunktionen
Einführung in Topic Maps
topicmapslab.de
Agenda
1. Sortierung
2. High-Level
● Environment
● SELECT Style
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileSortierung
Einführung in Topic Maps
topicmapslab.de5
Sortierung
● Sortierung von Tupeln in einer Sequenz
● Projektion und Tuple-Sequenzen
● Schlüsselwörter ASC und DESC
● Standard ASC
● Vorkommen von mindestens einem Schlüsselwort
Einführung in Topic Maps
topicmapslab.de6
Sortierung - Routine
● fehlendes Schlüsselwort wird durch ASC ersetzt
● Sortierung des Tupels anhand des aktuellen Indexes
● Sortierung immer von links nach rechts
● nächste Iteration
● Sortierung von Kollision durch gleiche Werte in letzter
Iteration
Einführung in Topic Maps
topicmapslab.de7
Sortierung - Routine
Query
… ( . / tm:name[0] , . / tm:name[1] )
unsortiertes Ergebnis
{ [ „A“ , „AA“ ] ; [ „A“ , „BA“ ] ; [ „C“ , „AA“ ] ; [ „D“ , „AD“ ] }
sortiertes Ergebnis?
Einführung in Topic Maps
topicmapslab.de8
Sortierung - Routine
Query
… ( . / tm:name[0] , . / tm:name[1] )
unsortiertes Ergebnis
{ [ „C“ , „AA“ ] ; [ „A“ , „BA“ ] ; [ „C“ , „AB“ ] ; [ „D“ , „AD“ ] }
keine Sortierung, da kein Schlüsselwort vorkommt!
Einführung in Topic Maps
topicmapslab.de9
Sortierung - Routine
Query
… ( . / tm:name[0] , . / tm:name[1] ASC )
unsortiertes Ergebnis
{ [ „C“ , „AA“ ] ; [ „A“ , „BA“ ] ; [ „C“ , „AB“ ] ; [ „D“ , „AD“ ] }
Ergebnis?
1: { [ „A“ , „BA“ ] ; [ „C“ , „AA“ ] ; [ „C“ , „AB“ ] ; [ „D“ , „AD“ ] }
2: { [ „C“ , „AA“ ] ; [ „A“ , „AB“ ] ; [ „D“ , „AD“ ] ; [ „A“ , „BA“ ] }
Einführung in Topic Maps
topicmapslab.de10
Sortierung - Routine
Query
… ( . / tm:name[0] , . / tm:name[1] ASC )
unsortiertes Ergebnis
{ [ „C“ , „AA“ ] ; [ „A“ , „BA“ ] ; [ „C“ , „AB“ ] ; [ „D“ , „AD“ ] }
{ [ „A“ , „BA“ ] ; [ „C“ , „AA“ ] ; [ „C“ , „AB“ ] ; [ „D“ , „AD“ ] }
Einführung in Topic Maps
topicmapslab.de11
Sortierung - Routine
Query
… ( . / tm:name[0] DESC, . / tm:name[1] )
unsortiertes Ergebnis
{ [ „C“ , „AA“ ] ; [ „A“ , „BA“ ] ; [ „C“ , „AB“ ] ; [ „D“ , „AD“ ] }
sortiertes Ergebnis?
Einführung in Topic Maps
topicmapslab.de12
Sortierung - Routine
Query
… ( . / tm:name[0] DESC, . / tm:name[1] )
unsortiertes Ergebnis
{ [ „C“ , „AA“ ] ; [ „A“ , „BA“ ] ; [ „C“ , „AB“ ] ; [ „D“ , „AD“ ] }
{ [ „D“ , „AD“ ] ; [ „C“ , „AA“ ] ; [ „C“ , „AB“ ] ; [ „A“ , „BA“ ] }
Einführung in Topic Maps
topicmapslab.de13
Sortierung - Routine
Query
… ( . / tm:name[0] DESC, . / tm:name[1] DESC )
unsortiertes Ergebnis
{ [ „C“ , „AA“ ] ; [ „A“ , „BA“ ] ; [ „C“ , „AB“ ] ; [ „D“ , „AD“ ] }
sortiertes Ergebnis?
Einführung in Topic Maps
topicmapslab.de14
Sortierung - Routine
Query
… ( . / tm:name[0] DESC, . / tm:name[1] DESC)
unsortiertes Ergebnis
{ [ „C“ , „AA“ ] ; [ „A“ , „BA“ ] ; [ „C“ , „AB“ ] ; [ „D“ , „AD“ ] }
{ [ „D“ , „AD“ ] ; [ „C“ , „AB“ ] ; [ „C“ , „AA“ ] ; [ „A“ , „BA“ ] }
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileHigh-Level
Einführung in Topic Maps
topicmapslab.de16
High-Level
● Alternativen zu Path-Expression
● zwei unterstütze Typen
● SELECT ( Ähnlichkeit zu SQL )
● FLW(O)R ( Ähnlichkeit zu OOL ( For-Loop ) )
● Umgebungsdefinitionen vor der eigentlichen Abfrage
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileEnvironment
Einführung in Topic Maps
topicmapslab.de18
Environment
● Umgebungsdefinition zu Beginn eines Query
● vor allen drei Typen unterstützt
● Definition von
● Ontologie
● Prefixen
Einführung in Topic Maps
topicmapslab.de19
Prefix-Definition
● gekennzeichnet durch Schlüsselwort %prefix
● Tripple-Darstellung
%prefix identifier QIRI
● Verwendung als relative IRI
Einführung in Topic Maps
topicmapslab.de20
Prefix-Definition
%prefix o http://psi.ontopia.net/
%prefix tml http://www.topicmapslab.de/
// o:Composer ++ // tml:person
Einführung in Topic Maps
topicmapslab.de21
Pragma-Definition
● gekennzeichnet durch Schlüsselwort %pragma
● Tripple-Darstellung
%pragma identifier QIRI
● Definition von Ontologie
● Transitivität
Einführung in Topic Maps
topicmapslab.de22
Pragma-Definition - Transitivität
● Draft definiert nur Transitivität als Pragma
● Signatur
● identifier: taxonometry
● QIRI: tm:intransitive or tm:transitive
Einführung in Topic Maps
topicmapslab.de23
Pragma-Definition - Transitivität
%prefix o http://psi.ontopia.net/
%prefix tml http://www.topicmapslab.de/
%pragma taxonometry tm:intransitive
// o:Composer ++ // tml:person
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileSelect - Style
Einführung in Topic Maps
topicmapslab.de25
Select-Style
● syntaktische Ähnlichkeit zu SQL
● besteht aus einer Menge von Sub-Expressions
● erlaubt Bindung von Variablen
● einziger Typ mit Schlüsselwort für Duplikat – Behandlung und
Selektion
Einführung in Topic Maps
topicmapslab.de26
Select-Style
select < value-expression >
[ from value-expression ]
[ where boolean-expression ]
[ order by < value-expression > ]
[ unique ]
[ offset value-expression ]
[ limit value-expression ]
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileSelect - Clause
Einführung in Topic Maps
topicmapslab.de28
Select-Klausel
● Besteht aus nicht leerer Menge von Pfad-Ausdrücken zur
Auswahl der Ergebniswerte
● Verwendung von gebundenen Variablen möglich
● einziger nicht optionaler Teil der Select-Expression
Einführung in Topic Maps
topicmapslab.de29
Select-Klausel
%prefix wiki http://en.wikipedia.org/wiki/
SELECT wiki:Puccini
%prefix wiki http://en.wikipedia.org/wiki/
SELECT wiki:Puccini / tm:name , wiki:Puccini >> indicators
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileFrom - Clause
Einführung in Topic Maps
topicmapslab.de31
From-Klausel
● Definition des Kontextes für das Variablen Binding
● optionaler Teil der Select-Expression
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileWhere – Clause und Variablen
Einführung in Topic Maps
topicmapslab.de33
Where-Klausel
● Einschränkung möglicher Bindings einer Variable
● Definition von Variablen, welche in der Select Clause verwendet
werden können
● Funktional ähnlich zu Filtern
Einführung in Topic Maps
topicmapslab.de34
Variablen
● Variablen:
● Verwendung als Platzhalter innerhalb einer Query
● Bindung an Werte erfolgt zur Laufzeit durch Bedingungen
● Muster
– '$' [\w#]+'*/
Einführung in Topic Maps
topicmapslab.de35
vordefinierte Variablen
● reservierte System-Variablen
@_ aktuelles Tuple
$# aktueller Index
%% Environment Topic Map
%_ angefragte Topic Map
$[0-9]+ indiziertes Element eines Tupels
$_ write-only Variable
Einführung in Topic Maps
topicmapslab.de36
Where-Klausel
%prefix o http://psi.ontopia.net/music/
SELECT $composer
WHERE $composer ISA o:composer
%prefix o http://psi.ontopia.net/music/
%prefix l http://psi.ontopia.net/literature/
SELECT $composer, $opera
WHERE $composer ISA o:composer AND o:composed-by ( l:work :
$opera, o:composer : $composer )
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileOrder By – Clause
Einführung in Topic Maps
topicmapslab.de38
Order By-Klausel
● Sortierung der Ergebnis Menge
● Definition über Pfadausdrücke
● Verarbeitung erfolgt abhängig vom vorherigen
Sortierungsergebnis
Einführung in Topic Maps
topicmapslab.de39
Order By-Klausel
%prefix o http://psi.ontopia.net/music/
%prefix l http://psi.ontopia.net/literature/
SELECT $composer, $opera
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
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileLimit / Offset – Clause
Einführung in Topic Maps
topicmapslab.de41
Limit- und Offset-Klausel
● Einschränkung eines Fensters zur Auswahl der Ergebnismenge
● Offset definiert erstes Element der Auswahl
● Limit definiert maximale Anzahl von Elementen
● Funktional ähnlich zu Index-Range-Filter
Einführung in Topic Maps
topicmapslab.de42
Order By-Klausel
%prefix o http://psi.ontopia.net/music/
%prefix l http://psi.ontopia.net/literature/
SELECT $composer, $opera
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
OFFSET 5
LIMIT 10
Einführung in Topic Maps
topicmapslab.de
ENDE