tmql tutorial - part 5

43
Einführung in Topic Maps topicmapslab.de Topic Maps Query Language Sven Krosse M. Sc. Topic Maps Lab an der Universität Leipzig [email protected] Session 5

Upload: lutz-maicher

Post on 19-May-2015

652 views

Category:

Education


2 download

TRANSCRIPT

Page 1: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de

Topic Maps Query Language

Sven Krosse M. Sc.

Topic Maps Lab an der Universität Leipzig

[email protected]

Session 5

Page 2: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de

Review – Session 4

Funktionen

● Zeichenketten-Funktionen

● numerische Funktionen

● Transformationsfunktionen

Page 3: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de

Agenda

1. Sortierung

2. High-Level

● Environment

● SELECT Style

Page 4: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileSortierung

Page 5: TMQL tutorial - part 5

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

Page 6: TMQL tutorial - part 5

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

Page 7: TMQL tutorial - part 5

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?

Page 8: TMQL tutorial - part 5

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!

Page 9: TMQL tutorial - part 5

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“ ] }

Page 10: TMQL tutorial - part 5

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“ ] }

Page 11: TMQL tutorial - part 5

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?

Page 12: TMQL tutorial - part 5

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“ ] }

Page 13: TMQL tutorial - part 5

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?

Page 14: TMQL tutorial - part 5

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“ ] }

Page 15: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileHigh-Level

Page 16: TMQL tutorial - part 5

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

Page 17: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileEnvironment

Page 18: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de18

Environment

● Umgebungsdefinition zu Beginn eines Query

● vor allen drei Typen unterstützt

● Definition von

● Ontologie

● Prefixen

Page 19: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de19

Prefix-Definition

● gekennzeichnet durch Schlüsselwort %prefix

● Tripple-Darstellung

%prefix identifier QIRI

● Verwendung als relative IRI

Page 20: TMQL tutorial - part 5

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

Page 21: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de21

Pragma-Definition

● gekennzeichnet durch Schlüsselwort %pragma

● Tripple-Darstellung

%pragma identifier QIRI

● Definition von Ontologie

● Transitivität

Page 22: TMQL tutorial - part 5

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

Page 23: TMQL tutorial - part 5

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

Page 24: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileSelect - Style

Page 25: TMQL tutorial - part 5

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

Page 26: TMQL tutorial - part 5

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 ]

Page 27: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileSelect - Clause

Page 28: TMQL tutorial - part 5

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

Page 29: TMQL tutorial - part 5

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

Page 30: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileFrom - Clause

Page 31: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de31

From-Klausel

● Definition des Kontextes für das Variablen Binding

● optionaler Teil der Select-Expression

Page 32: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileWhere – Clause und Variablen

Page 33: TMQL tutorial - part 5

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

Page 34: TMQL tutorial - part 5

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#]+'*/

Page 35: TMQL tutorial - part 5

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

Page 36: TMQL tutorial - part 5

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 )

Page 37: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileOrder By – Clause

Page 38: TMQL tutorial - part 5

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

Page 39: TMQL tutorial - part 5

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

Page 40: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileLimit / Offset – Clause

Page 41: TMQL tutorial - part 5

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

Page 42: TMQL tutorial - part 5

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

Page 43: TMQL tutorial - part 5

Einführung in Topic Maps

topicmapslab.de

ENDE