TMQL tutorial - part 7

Post on 29-Nov-2014

1,049 views 0 download

description

 

transcript

Einführung in Topic Maps

topicmapslab.de

Topic Maps Query Language

Sven Krosse M. Sc.

Topic Maps Lab an der Universität Leipzig

krosse@informatik.uni-leipzig.de

Session 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

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

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileUseful Expression

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 ]

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

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]

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

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]

Einführung in Topic Maps

topicmapslab.de

TMQL – Part II

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

Einführung in Topic Maps

topicmapslab.de12

TMQL Part II

● definiert Veränderungsoperationen für Topic Maps

● Einfügeoperation

● Löschoperation

● Änderungsoperation

● Merge-Regeln

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileInsert Expression

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

Einführung in Topic Maps

topicmapslab.de15

Insert Expression

● Grammatik

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

{ WHERE query-expression }

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

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileDelete Expression

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)

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

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)

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

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileMerge Expression

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

Einführung in Topic Maps

topicmapslab.de24

Merge Expression

MERGE // http://psi.example.org/type [ . / email == „person@gmail.com“ ]

→ 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 person@gmail.com

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

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

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)

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

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

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

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

Einführung in Topic Maps

topicmapslab.de

ENDE