Upload
lutz-maicher
View
759
Download
0
Embed Size (px)
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.
Citation preview
Einführung in Topic Maps
topicmapslab.de
Topic Maps Query Language
Sven Krosse M. Sc.
Topic Maps Lab an der Universität Leipzig
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