+ All Categories
Home > Education > TMQL tutorial - part 7

TMQL tutorial - part 7

Date post: 29-Nov-2014
Category:
Upload: lutz-maicher
View: 1,049 times
Download: 0 times
Share this document with a friend
Description:
 
32
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 7
Transcript
Page 1: TMQL tutorial - part 7

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 7

Page 2: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de

Review – Session 6

1. FLW(O)R Style

● RETURN-Clause

● WHERE-Clause

● ORDER-BY Clause

● FOR-Clause

2. Verschachtelung

3. Content Types

● XML

● CTM

Page 3: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de

Agenda

Useful TMQL Expression

1. If-Then-Else

TMQL Part II

1. Delete Expression

2. Insert Expression

3. Merge Expression

Page 4: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileUseful Expression

Page 5: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de5

Bedingte Anweisung

● bedingte Auswertung von Ergebnissen

● erlaubt bedingte Verzweigung zur Verarbeitungszeit

● Grammatik

content ::= if path-expression then content

[ else content ]

Page 6: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de6

Bedingte Anweisung

● Pfadausdruck nach Schlüsselwort IF bestimmt Verzweigung

● leere Menge → ELSE-Zweig

● ELSE-Zweig ist optional → leere Menge bei fehlender Definition

Page 7: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de7

Bedingte Anweisung

%prefix o http://psi.ontopia.net/music/

FOR $topic IN // tm:subject

RETURN

IF $topic ISA o:composer

THEN $topic >> indicators

ELSE $topic / tm:name [0]

Page 8: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de8

Bedingte Anweisung NCL

● Kurzform für bedingte Anweisung

● Bedingung repräsentiert „Then“-Zweig

● Grammatik

content ::= path-expression || path-expression

Page 9: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de9

Bedingte Anweisung NCL

%prefix o http://psi.ontopia.net/music/

FOR $topic IN // tm:subject

RETURN

$topic >> indicators >> atomify [0] || $topic >> locators >> atomify [0]

Page 10: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de

TMQL – Part II

Page 11: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de11

TMQL Part II

● kein ISO-Standard oder Draft

● basiert auf TMQL Part I ( TMQL – Query Language )

● basiert syntaktisch auf dem Draft 2007

Page 12: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de12

TMQL Part II

● definiert Veränderungsoperationen für Topic Maps

● Einfügeoperation

● Löschoperation

● Änderungsoperation

● Merge-Regeln

Page 13: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileInsert Expression

Page 14: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de14

Insert Expression

● Erzeugen neuer Topic Maps Konstrukte

● Verwendung von CTM als Definitionssprache

● CTM-Content äquivalent zu FLW(O)R Style

● Verwendung von Variablen (gebunden durch Where-Klausel)

● erlaubt auch Änderung bestehender Elemente

Page 15: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de15

Insert Expression

● Grammatik

insert-expression ::= INSERT “““ctm-stream “““

{ WHERE query-expression }

Page 16: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de16

Insert Expression

INSERT “““ <http://psi.example.org/topic>. “““

→ Fügt ein neues Topic mit dem Subject-Identifier hinzu

INSERT “““ { $topic >> indicators >> atomify [0] ISA

<http://psi.example.org/topic> . } “““

WHERE $topic ISA tm:subject

→ Fügt jedem Topic den Typ http://psi.example.org/topic hinzu

Page 17: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileDelete Expression

Page 18: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de18

Delete Expression

● Entfernen bestehender Topic Maps Konstrukte

● Adressierung von Konstrukten über Pfadausdruck

● Abhängigkeit werden nicht automatisch entfernt (z.B. Topic als Reifier,

Topic als Typ)

Page 19: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de19

Delete Expression

● direkte Adressierung über Pfadausdruck und Filter

● Grammatik

delete-expression ::= DELETE { CASCADE } simple-content {filter-postfix}

WHERE boolean-expression

● Schlüsselwort CASCADE definiert Löschen aller Abhängigkeiten

● nicht kaskadiert ( Löschen wird abgebrochen )

● Where-Klausel definiert Wertebereich der Variablen

Page 20: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de20

Delete Expression

DELETE CASCADE http://en.wikipedia.org/wiki/Puccini

→ entfernt das Topic Puccini und alle seine Abhängigkeiten

– gespielte Rollen und Assoziation

– alle Namen und Occurrences

– Verwendung als Theme (Konstrukte werden gelöscht)

– Verwendung als Reifier (Reifikation wird aufgehoben)

Page 21: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de21

Delete Expression

DELETE CASCADE http://psi.ontopia.net/music/composer >> instances

→ entfernt alle Komponisten aus der Topic Map

DELETE CASCADE ALL

→ entfernt jegliche Konstrukte aus der Topic Map

Page 22: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileMerge Expression

Page 23: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de23

Merge Expression

● Mergen von Topics gemäß TMDM

● Definition einer Menge von Topics, welche gemergt werden sollen

● Verwendung von Variablen

● Where-Klausel schränkt Wertebereich der Variablen ein

● Grammatik

merge-expression ::= MERGE <value-expression>

WHERE boolean-expression

Page 24: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de24

Merge Expression

MERGE // http://psi.example.org/type [ . / email == „[email protected]“ ]

→ alle Topics, welche die folgenden Bedingung erfüllen, werden gemergt

● Instanz vom Typ http://psi.example.org/type

● besitzen mindestens eine Occurrence vom Typ email

● Wert mindestens einer dieser Occurrence ist [email protected]

Page 25: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de25

Merge Expression

MERGE $person, $other

WHERE $person ISA person AND $other ISA person

AND $person / email == $other / email

→ Personen mit der selben E-Mail Adresse werden gemergt

Page 26: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de26

Merge Expression

● Mergen von Assoziation

● Definition einer Menge von Assoziation, welche verschmelzen sollen

● Grammatik

merge-expression ::= MERGE association-definition

WHERE boolean-expression

Page 27: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de27

Association-Definition

● äquivalent zu Predicate-Invocation (eingeschränkte Syntax)

● liefern Menge von Assoziation passend zum definierten Muster

● Ellipse hebt strikte Verarbeitung auf

association-definition ::= < part [ , … ] >

part ::= (ident | variable) ':' (ident | variable)

Page 28: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de28

Association-Definition

%prefix m http://psi.ontopia.net/music/

m:composed-by (

m:composer : http://en.wikipedia.net/wiki/Puccini )

→ liefert alle Assoziationen, welche

● vom Typ „komponiert“ ist

● exakt eine Rolle vom Typ „Komponist“ gespielt von

Puccini besitzt

Page 29: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de29

Association-Definition

%prefix m http://psi.ontopia.net/music/

m:composed-by (

tm:subject : http://en.wikipedia.net/wiki/Puccini , … )

→ liefert alle Assoziationen, welche

● vom Typ „komponiert“ ist

● mindestens eine Rolle gespielt von Puccini besitzt

→ der Rollentyp ist nicht eingeschränkt

Page 30: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de30

Merge Expression

%prefix m http://psi.ontopia.net/music/

MERGE m:composed-by (

tm:subject : http://en.wikipedia.net/wiki/Puccini , … )

→ verschmelzen aller Assoziationen vom Typ „komponiert“,

welche von Puccini gespielt werden

Page 31: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de31

Merge Expression

● Bedingungen

● selber Typ

● selber Scope

● Funktionsweise:

● Alle nicht vorhandenen Rollen werden kopiert

● Quell-Assoziation wird gelöscht

● Reifier werden verschmolzen

Page 32: TMQL tutorial - part 7

Einführung in Topic Maps

topicmapslab.de

ENDE


Recommended