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

TMQL tutorial - part 6

Embed Size (px)

Citation preview

Page 1: TMQL tutorial - part 6

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 6

Page 2: TMQL tutorial - part 6

Einführung in Topic Maps

topicmapslab.de

Review – Session 5

Sortierung

High-Level

● Environment

● SELECT Style

Page 3: TMQL tutorial - part 6

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

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileFLW(O)R-Style

Page 5: TMQL tutorial - part 6

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

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

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileReturn - Clause

Page 8: TMQL tutorial - part 6

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

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

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileWhere – Clause und Variablen

Page 11: TMQL tutorial - part 6

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

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

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

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileOrder By – Clause

Page 15: TMQL tutorial - part 6

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

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

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileFor – Clause

Page 18: TMQL tutorial - part 6

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

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

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

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileVerschachtelung

Page 22: TMQL tutorial - part 6

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

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

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileContent Types

Page 25: TMQL tutorial - part 6

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

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileCTM Result

Page 27: TMQL tutorial - part 6

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

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

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileXML Result

Page 30: TMQL tutorial - part 6

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

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

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

Einführung in Topic Maps

topicmapslab.de

ENDE