Upload
lutz-maicher
View
661
Download
3
Tags:
Embed Size (px)
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 4
Einführung in Topic Maps
topicmapslab.de
Review – Session 3
Postfix
● Filter
– Boolean-Expression
– Filtertypen
● Projektion
Operatoren
Einführung in Topic Maps
topicmapslab.de
Agenda
1. Funktionen
● Draft 2007 Funktionen
● TMQL4J Erweiterungen
● Draft 2010 Funktionen
Einführung in Topic Maps
topicmapslab.de
SprachbestandteileFunktionen
Einführung in Topic Maps
topicmapslab.de5
Funktionen
● erlaubt als sogenannte Value-Expression oder Content
● Bestandteil einer Boolean-Expression
● Bestandteil von Select-Expressions
● jeder Operator existiert als Funktion
● alle im Namespace fn
(http://psi.topicmaps.org/tmql/1.0/functions/)
Einführung in Topic Maps
topicmapslab.de6
Funktion - has-datatype
● Identifier: has-datatype
● Argumente: eine Menge von Konstrukten
● Beschreibung:
● liefert für jede Occurrence den Datentyp als Locator
● liefert für andere Konstrukte das Systemtopic undef
Einführung in Topic Maps
topicmapslab.de7
Funktion - has-datatype
● Beispiel
%prefix o http://psi.ontopia.net/music/
// o:composer >> characteristics tm:occurrence
[ fn:has-datatype(.) == xsd:string ]
→ alle Occurrence vom Typ XSD String
Einführung in Topic Maps
topicmapslab.de8
Funktion - has-variant
● Identifier: has-variant
● Argumente: eine Menge von Konstrukten
● Beschreibung:
● liefert die Varianten von Namen
● sonst Systemtopic undef
Einführung in Topic Maps
topicmapslab.de9
Funktion - has-variant
● Beispiel
%prefix o http://psi.ontopia.net/music/
http://en.wikipedia.org/wiki/Puccini >> characteristics tm:name
( fn:has-variant(.) )
→ die Namensvarianten aller Namen von Puccini
Einführung in Topic Maps
topicmapslab.de10
Funktion - length
● Identifier: length
● Argumente: eine Menge von Literalen
● Beschreibung:
● liefert die Länge der String-Literale
● andere Konstrukte werden zu Literal konvertiert
Hinweis Draft 2010: umbenannt in 'string-length'
Einführung in Topic Maps
topicmapslab.de11
Funktion - length
● Beispiel
%prefix o http://psi.ontopia.net/music/
http://en.wikipedia.org/wiki/Puccini >> characteristics tm:name
[ fn:length( . >> atomify ) == 10 ]
→ alle Namen von Puccini mit Länge 10
Einführung in Topic Maps
topicmapslab.de12
Konstrukt-Literal-Transformation
● Topic → Name, Subject-Identifier, Subject-Locator, Item-Identifier
● Name → Stringliteral
● Occurrence → Stringliteral
● Variant → Stringliteral
● Role → Item-Identifier
● Association → Item-Identifier
Einführung in Topic Maps
topicmapslab.de13
Funktion - slice
● Identifier: slice
● Argumente: eine Menge von Literalen und zwei numerische
Werte
● Beschreibung:
● liefert die Submenge definiert durch die numerischen
Grenzen
Einführung in Topic Maps
topicmapslab.de14
Funktion - count
● Identifier: count
● Argumente: eine Menge von Literalen
● Beschreibung:
● liefert die Anzahl der Elemente der Menge
Einführung in Topic Maps
topicmapslab.de15
Funktion - count
● Beispiel
%prefix o http://psi.ontopia.net/music/
// o:composer [ fn:count( . / tm:name ) == 2 ]
→ alle Komponisten, welche genau zwei Namen haben
Einführung in Topic Maps
topicmapslab.de16
Funktion - uniq
● Identifier: uniq
● Argumente: eine Menge von Literalen
● Beschreibung:
● entfernt aller Duplikate
Einführung in Topic Maps
topicmapslab.de17
Funktion - zigzag
● Identifier: zigzag
● Argumente: eine Menge von Literalen
● Beschreibung:
● erzeugt neues Tupel bestehend aus allen Tupeln der
gegebenen Menge
● Beispiel: zigzag( { [A, B] , [C, D] } )
= { [A, B, C, D] }
Einführung in Topic Maps
topicmapslab.de18
Funktion - zagzig
● Identifier: zagzig
● Argumente: eine Menge von Literalen
● Beschreibung:
● erzeugt neue Menge mit Singleton Tupeln
● Beispiel: zagzig( { [A, B] , [C, D] } )
= { [A], [B], [C], [D] }
Einführung in Topic Maps
topicmapslab.de19
Funktionen -TMQL4J
● Identifier: substring
● Argumente: eine Menge und zwei numerische Werte
● Beschreibung:
● Menge von Sub-Strings definiert durch numerische Werte
● numerische Werte definieren maximalen Bereich
● Beispiel: substring( „abc“ , 0 , 9 )
= { „abc“ }
Hinweis Draft 2010: 3. Argument definiert die Menge an Zeichen
Einführung in Topic Maps
topicmapslab.de20
Funktionen – Draft 2010
● Identifier: starts-with
● Argumente: eine Menge von Literalen und Vergleichsliteral
● Beschreibung:
● Prüfung ob Literal mit Vergleichsliteral beginnt
● Beispiel: starts-with( { „ab“,“bc“ } , „a“ )
= { true, false }
Einführung in Topic Maps
topicmapslab.de21
Funktionen – Draft 2010
● Identifier: ends-with
● Argumente: eine Menge von Literalen und Vergleichsliteral
● Beschreibung:
● Prüfung ob Literal mit Vergleichsliteral endet
● Beispiel: ends-with( { „ab“,“bc“ } , „b“ )
= { true, false }
Einführung in Topic Maps
topicmapslab.de22
Funktionen – Draft 2010
● Identifier: contains
● Argumente: eine Menge von Literalen und Vergleichsliteral
● Beschreibung:
● Prüfung ob Literal das Vergleichsliteral enthält
● Beispiel: contains( { „ab“,“bc“ } , „a“ )
= { true, false }
Einführung in Topic Maps
topicmapslab.de23
Funktionen – Draft 2010
● Identifier: substring-before
● Argumente: eine Menge von Literalen und Vergleichsliteral
● Beschreibung:
● liefert Zeichenkette vor dem gegebenen Literal, falls
vorhanden, ansonsten leere Zeichenkette
● Beispiel: substring-before( { „ab“,“bc“ } , „b“ )
= { „a“, „“ }
Einführung in Topic Maps
topicmapslab.de24
Funktionen – Draft 2010
● Identifier: substring-after
● Argumente: eine Menge von Literalen und Vergleichsliteral
● Beschreibung:
● liefert Zeichenkette nach dem gegebenen Literal, falls
vorhanden, ansonsten leere Zeichenkette
● Beispiel: substring-after( { „ab“,“bc“ } , „b“ )
= { „“, „c“ }
Einführung in Topic Maps
topicmapslab.de25
Funktionen – Draft 2010
● Identifier: normalize-space
● Argumente: eine Menge von Literalen
● Beschreibung:
● entfernt multiple Vorkommen von Leerzeichen
● Beispiel: normalize-space( { „a b“,“b c“ } )
= { „a b“, „b c“ }
Einführung in Topic Maps
topicmapslab.de26
Funktionen – Draft 2010
● Identifier: translate
● Argumente: eine Menge von Literalen und zwei weitere Literale
● Beschreibung:
● ersetzt jedes Zeichen des 2. Literals durch Zeichen des 3.
Literals (index-basiert)
● Beispiel: translate( „Puccini“,“Pci“,“xyz“ )
= { „xuyyznz“ }
Einführung in Topic Maps
topicmapslab.de27
Funktionen – Draft 2010
● Identifier: find
● Argumente: eine Menge von Literalen und weiteres Literal
● Beschreibung:
● lierfert Index des ersten Vorkommens des 2. Literals
● Beispiel: find( „Puccini“,“cc“ )
= { 2 }
Einführung in Topic Maps
topicmapslab.de28
Funktionen – Draft 2010
● Identifier: extract-regexp
● Argumente: eine Menge von Literalen und weiteres Literal
● Beschreibung:
● liefert den 1. Substring welcher den regulären Ausdruck
erfüllt
● Beispiel: extract-regexp( „Puccini“,“.*cc.*“ )
= { „Pucc“ }
Einführung in Topic Maps
topicmapslab.de29
Funktionen – Draft 2010
● Identifier: ceiling
● Argumente: eine Menge von numerischen Literalen
● Beschreibung:
● liefert kleinste natürliche Zahl die nicht kleiner als die
gegeben ist
● Beispiel: ceiling( { 1.5, - 1.5, 5 } )
= { 2, -1, 5 }
Einführung in Topic Maps
topicmapslab.de30
Funktionen – Draft 2010
● Identifier: floor
● Argumente: eine Menge von numerischen Literalen
● Beschreibung:
● liefert größte natürliche Zahl die nicht größer als die gegeben
ist
● Beispiel: floor( { 1.5, - 1.5, 5 } )
= { 1, -2, 5 }
Einführung in Topic Maps
topicmapslab.de31
Funktionen – Draft 2010
● Identifier: round
● Argumente: eine Menge von numerischen Literalen
● Beschreibung:
● liefert gerundete Werte
● Beispiel: round( { 1.5, - 1.5, 5.1 } )
= { 2, -1, 5 }
Einführung in Topic Maps
topicmapslab.de32
Funktionen – Draft 2010
● Identifier: topicmap
● Argumente: keine
● Beschreibung:
● liefert die Instanz der Topic Map
Einführung in Topic Maps
topicmapslab.de33
Funktionen – Draft 2010
● Literalfunktionen
● Transformation von Konstrukt zu Literalen des entsprechenden
Typs
● Funktionen
● string
● boolean
● number
Einführung in Topic Maps
topicmapslab.de
ENDE