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