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.
1. Einführung in Topic Maps
Topic Maps Query Language
Session 3
Sven Krosse M. Sc.
Topic Maps Lab an der Universität Leipzig
krosse@informatik.uni-leipzig.de
topicmapslab.de
2. Einführung in Topic Maps
Review – Session 1 and 2
1. Meta-Modell von TMQL
2. Grammatik
3. Navigationskonzept
4. Path-Language – Draft 2010 ( kurzer Einblick )
topicmapslab.de
7. Einführung in Topic Maps
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
topicmapslab.de
7
8. Einführung in Topic Maps
Boolean-Expression
● quantitativ oder nicht-quantitativ
● Unterstützung von boolean'schen Operatoren
● Konjunktion mit AND
● Disjunktion mit OR
● Negation mit NOT
topicmapslab.de
8
9. Einführung in Topic Maps
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
topicmapslab.de
9
10. Einführung in Topic Maps
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 == .
]
topicmapslab.de
10
11. Einführung in Topic Maps
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
topicmapslab.de
11
12. Einführung in Topic Maps
Quantitative Boolean-Expression
%prefix o http://psi.ontopia.net/music/
// o:composer
Numerische Quantifizierung
[
AT MOST 3
$opera IN // o:opera
SATISFIES $opera >> traverse o:composed-by == .
]
topicmapslab.de
12
13. Einführung in Topic Maps
Quantitative Boolean-Expression
%prefix o http://psi.ontopia.net/music/
// o:composer
Variable-Binding
[
AT MOST 3
$opera IN // o:opera
SATISFIES $opera >> traverse o:composed-by == .
]
topicmapslab.de
13
14. Einführung in Topic Maps
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
topicmapslab.de
14
15. Einführung in Topic Maps
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
topicmapslab.de
15
16. Einführung in Topic Maps
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
topicmapslab.de
16
17. Einführung in Topic Maps
Quantitative Boolean-Expression
%prefix o http://psi.ontopia.net/music/
// o:composer
[
SOME
$opera IN // o:opera
SATISFIES $opera >> traverse o:composed-by == .
]
topicmapslab.de
17
18. Einführung in Topic Maps
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
topicmapslab.de
18
20. Einführung in Topic Maps
Nicht-Quantitative Boolean-Expression
%prefix o http://psi.ontopia.net/music/
// o:composer
[
. ISA o:musician
]
topicmapslab.de
20
21. Einführung in Topic Maps
Nicht-Quantitative Boolean-Expression
%prefix o http://psi.ontopia.net/music/
// o:composer
[
. ISA o:musician
]
→ alle Komponisten, welche auch Instanz von Musiker sind
topicmapslab.de
21
22. Einführung in Topic Maps
NCL-Filter
● spezielle Filter auf dem NCL
● Index-Filter
● Range-Filter
● Scope-Filter
● Typ-Filter
● besitzen eine Entsprechung auf CL
topicmapslab.de
22
23. Einführung in Topic Maps
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 ]
topicmapslab.de
23
24. Einführung in Topic Maps
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 ]
topicmapslab.de
24
48. Einführung in Topic Maps
Vergleichsoperatoren
● Gleichheit '=='
● unterstützte Datentypen:
– Number
– String
– Date
– Time
– DateTime
Hinweis: im Draft 2010 ersetzt durch '='
topicmapslab.de
48
49. Einführung in Topic Maps
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'
topicmapslab.de
49
50. Einführung in Topic Maps
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'
topicmapslab.de
50
51. Einführung in Topic Maps
Mengenoperatoren
● Schnittmenge '=='
● liefert die Schnittmenge beider Mengen
● Beispiel:
{[A, C], [C, D]} == { [C, D]} → {[C, D]}
Hinweis: im Draft 2010 ersetzt durch 'intersect'
topicmapslab.de
51