TMQL tutorial - part 3

Post on 19-May-2015

751 views 0 download

description

In this third part of TMQL tutorials you learn anything about the postfix operators for filters and projection. Furthermore the operators in TMQL are introduced. All slides are in German.

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 3

Einführung in Topic Maps

topicmapslab.de

Review – Session 1 and 2

1. Meta-Modell von TMQL

2. Grammatik

3. Navigationskonzept

4. Path-Language – Draft 2010 ( kurzer Einblick )

Einführung in Topic Maps

topicmapslab.de

Agenda

1. Postfix

● Filter

– Boolean-Expression

– Filtertypen

● Projektion

2. Operatoren

Einführung in Topic Maps

topicmapslab.de

SprachbestandteilePostfix

Einführung in Topic Maps

topicmapslab.de

Postfix

● als Ergänzung für Path-Expression ( Simple-Content )

● erlauben exakte Definition der Ergebnismenge in Path-

Expressions

● Typen

● Filter

● Projektion

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileFilter

Einführung in Topic Maps

topicmapslab.de7

Filter

● Filter nur nach kompletter Navigation

● Filter nach jedem Schritt als Erweiterung einiger TMQL

Engines

● CL-Filter

● immer Boolean-Expression

● Syntax: [ boolean-expression ]

● NCL-Filter

● zur vereinfachten Verwendung

● Syntax ist variabel

Einführung in Topic Maps

topicmapslab.de8

Boolean-Expression

● quantitativ oder nicht-quantitativ

● Unterstützung von boolean'schen Operatoren

● Konjunktion mit AND

● Disjunktion mit OR

● Negation mit NOT

Einführung in Topic Maps

topicmapslab.de9

Quantitative Boolean-Expression

● numerisch strikte Bedingung

● Anzahl der erfüllenden Tuple

● untere Grenze spezifiziert

AT LEAST number binding-set SATISFIES boolean-expression

● obere Grenze spezifiziert

AT MOST number binding-set SATISFIES boolean-expression

● Abhängigkeit von Variablen durch Binding-Set definiert

Einführung in Topic Maps

topicmapslab.de10

Quantitative Boolean-Expression

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

// o:composer

[

AT MOST 3

$opera IN // o:opera

SATISFIES $opera >> traverse o:composed-by == .

]

Einführung in Topic Maps

topicmapslab.de11

Quantitative Boolean-Expression

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

// o:composer

[

AT MOST 3

$opera IN // o:opera

SATISFIES $opera >> traverse o:composed-by == .

]

Filterdefinition

Einführung in Topic Maps

topicmapslab.de12

Quantitative Boolean-Expression

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

// o:composer

[

AT MOST 3

$opera IN // o:opera

SATISFIES $opera >> traverse o:composed-by == .

]

Numerische Quantifizierung

Einführung in Topic Maps

topicmapslab.de13

Quantitative Boolean-Expression

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

// o:composer

[

AT MOST 3

$opera IN // o:opera

SATISFIES $opera >> traverse o:composed-by == .

]

Variable-Binding

Einführung in Topic Maps

topicmapslab.de14

Quantitative Boolean-Expression

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

// o:composer

[

AT MOST 3

$opera IN // o:opera

SATISFIES $opera >> traverse o:composed-by == .

]

Bedingung

Einführung in Topic Maps

topicmapslab.de15

Quantitative Boolean-Expression

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

// o:composer

[

AT MOST 3

$opera IN // o:opera

SATISFIES $opera >> traverse o:composed-by == .

]

→ alle Komponisten, welche maximal 3 Opern komponiert

haben

Einführung in Topic Maps

topicmapslab.de16

Quantitative Boolean-Expression

● numerisch freie Bedingung

● exakte Anzahl der erfüllenden Tuple irrelevant

● unteres Minimum

SOME binding-set SATISFIES boolean-expression

● oberes Maximum

EVERY binding-set SATISFIES boolean-expression

Einführung in Topic Maps

topicmapslab.de17

Quantitative Boolean-Expression

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

// o:composer

[

SOME

$opera IN // o:opera

SATISFIES $opera >> traverse o:composed-by == .

]

Einführung in Topic Maps

topicmapslab.de18

Quantitative Boolean-Expression

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

// o:composer

[

SOME

$opera IN // o:opera

SATISFIES $opera >> traverse o:composed-by == .

]

→ alle Komponisten, welche mindestens eine Oper

komponiert haben

Einführung in Topic Maps

topicmapslab.de19

Nicht-Quantitative Boolean-Expression

● Bedingung nicht an numerische Grenzen gebunden

● reine Existenz entscheidend

● Syntax: EXISTS boolean-expression

● Schlüsselwort EXISTS optional

● NCL-Vertreter

● Typ-Instanz-Beziehung ( ISA-Expression )

● Supertyp-Subtyp-Beziehung ( AKO-Expression )

Einführung in Topic Maps

topicmapslab.de20

Nicht-Quantitative Boolean-Expression

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

// o:composer

[

. ISA o:musician

]

Einführung in Topic Maps

topicmapslab.de21

Nicht-Quantitative Boolean-Expression

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

// o:composer

[

. ISA o:musician

]

→ alle Komponisten, welche auch Instanz von Musiker sind

Einführung in Topic Maps

topicmapslab.de22

NCL-Filter

● spezielle Filter auf dem NCL

● Index-Filter

● Range-Filter

● Scope-Filter

● Typ-Filter

● besitzen eine Entsprechung auf CL

Einführung in Topic Maps

topicmapslab.de23

NCL-Filter – Index-Filter

● spezielles Tuple aus der Ergebnissequenz

● Null-basierter Index

● leere Menge wenn Index außerhalb des möglichen Bereichs

● Syntax:

[ number ] → [ $# == number ]

● Bsp:

// http://psi.ontopia.net/music/composer / tm:name [ 0 ]

Einführung in Topic Maps

topicmapslab.de24

NCL-Filter – Range-Filter

● spezieller Bereich aus der Ergebnissequenz

● Null-basierte Indizes

● alle Elemente die vom Index-Bereich abgedeckt werden

● Syntax

[ a .. b ] → [ a <= $# AND $# < b ]

● Bsp:

// http://psi.ontopia.net/music/composer / tm:name [ 0 .. 1 ]

Einführung in Topic Maps

topicmapslab.de25

NCL-Filter – Scope-Filter

● Filterung nach Themes

@ theme → [ . >> scope == theme ]

[ @ theme ] → [ . >> scope == theme ]

● Bsp:

// http://psi.ontopia.net/music/composer / tm:name

@http://psi.ontopia.net/basename/short-name

oder

// http://psi.ontopia.net/music/composer / tm:name

[ @http://psi.ontopia.net/basename/short-name ]

Einführung in Topic Maps

topicmapslab.de26

NCL-Filter – Type-Filter

● Filterung nach Typ

[ ^ type ] → [ . >> types == type ]

// type → [ . >> types == type ]

● Bsp:

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

// o:composer >> traverse [ ^ o:opera ]

oder

// o:composer >> traverse // o:opera

Einführung in Topic Maps

topicmapslab.de27

Vergleich Draft 2010

● Draft 2010

● Filterung nach jedem Navigationsschritt möglich

● Kombination von Filtern

● keine Projektion

Einführung in Topic Maps

topicmapslab.de28

Vergleich Draft 2010

● Beispiel: Filter Draft 2010

/ composer [ . / firstname / value:: =~ „.*Puccini.*“ ] / role::

/ composer / webpage @web @italian / value::

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileProjektion

Einführung in Topic Maps

topicmapslab.de30

Projektion

● Alternative zu Filtern

● Erzeugung von Tupeln mit mehren Elementen

● Ausgangspunkt ist aktueller Knoten im Graph als Ergebnis der

Navigation

● Beschreibung als Tuple-Expression

● optionale Sortierung definierbar

● Syntax: tuple-expression ::= ( <value-expression> )

value-expression ::= content { ASC | DESC }

Einführung in Topic Maps

topicmapslab.de31

Projektion

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

// o:composer

(

. ,

. / tm:name ,

. / tm:occurrence,

. >> indicators

)

Einführung in Topic Maps

topicmapslab.de32

Projektion

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

// o:composer

(

. ,

. / tm:name ,

. / tm:occurrence,

. >> indicators

)

Projektionsdefinition

Einführung in Topic Maps

topicmapslab.de33

Projektion

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

// o:composer

(

. ,

. / tm:name ,

. / tm:occurrence,

. >> indicators

)

aktueller Knoten

Einführung in Topic Maps

topicmapslab.de34

Projektion

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

// o:composer

(

. ,

. / tm:name ,

. / tm:occurrence,

. >> indicators

)

Projektionstupel

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileOperatoren

Einführung in Topic Maps

topicmapslab.de36

Operatoren

● erlaubt in so genannte Value-Expression oder Content

● z.B.: Bestandteil einer Boolean-Expression

● verschiedene Typen

● mathematische Operatoren

● Vergleichsoperatoren

● Mengenoperatoren

Einführung in Topic Maps

topicmapslab.de37

mathematische Operatoren

● Vorzeichen '-'

● unterstützte Datentypen:

– Number

Einführung in Topic Maps

topicmapslab.de38

mathematische Operatoren

● Addition '+'

● unterstützte Datentypen:

– Number

– String

– Date

– Time

– DateTime

Einführung in Topic Maps

topicmapslab.de39

mathematische Operatoren

● Subtraktion '-'

● unterstützte Datentypen:

– Number

– Date

– Time

– DateTime

Einführung in Topic Maps

topicmapslab.de40

mathematische Operatoren

● Multiplikation '*'

● unterstützte Datentypen:

– Number

Einführung in Topic Maps

topicmapslab.de41

mathematische Operatoren

● Division '%'

● unterstützte Datentypen:

– Number

Hinweis: im Draft 2010 ersetzt durch 'div'

Einführung in Topic Maps

topicmapslab.de42

mathematische Operatoren

● Modulo 'mod'

● unterstützte Datentypen:

– Number

Einführung in Topic Maps

topicmapslab.de43

Vergleichsoperatoren

● kleiner-als '<'

● unterstützte Datentypen:

– Number

– String

– Date

– Time

– DateTime

Einführung in Topic Maps

topicmapslab.de44

Vergleichsoperatoren

● kleiner-oder-gleich '<='

● unterstützte Datentypen:

– Number

– String

– Date

– Time

– DateTime

Einführung in Topic Maps

topicmapslab.de45

Vergleichsoperatoren

● größer-als '>'

● unterstützte Datentypen:

– Number

– String

– Date

– Time

– DateTime

Einführung in Topic Maps

topicmapslab.de46

Vergleichsoperatoren

● größer-oder-gleich '>='

● unterstützte Datentypen:

– Number

– String

– Date

– Time

– DateTime

Einführung in Topic Maps

topicmapslab.de47

Vergleichsoperatoren

● reguläre Ausdrücke '=~'

● unterstützte Datentypen:

– String

Einführung in Topic Maps

topicmapslab.de48

Vergleichsoperatoren

● Gleichheit '=='

● unterstützte Datentypen:

– Number

– String

– Date

– Time

– DateTime

Hinweis: im Draft 2010 ersetzt durch '='

Einführung in Topic Maps

topicmapslab.de49

Mengenoperatoren

● Vereinigung '++'

● Kombination beider Mengen als neue Sequenz

● Beispiel:

{[A, C], [E, F]} ++ { [C, D]} → {[A, C], [E, F], [C, D]}

Hinweis: im Draft 2010 ersetzt durch 'union'

Einführung in Topic Maps

topicmapslab.de50

Mengenoperatoren

● Differenz '--'

● entfernt die Elemente der ersten Menge, welche auch in der

zweiten enthalten sind

● Beispiel:

{[A, C], [C, D]} -- { [C, D]} → {[A, C]}

Hinweis: im Draft 2010 ersetzt durch 'minus'

Einführung in Topic Maps

topicmapslab.de51

Mengenoperatoren

● Schnittmenge '=='

● liefert die Schnittmenge beider Mengen

● Beispiel:

{[A, C], [C, D]} == { [C, D]} → {[C, D]}

Hinweis: im Draft 2010 ersetzt durch 'intersect'

Einführung in Topic Maps

topicmapslab.de

ENDE