34
Einführung in Topic Maps topicmapslab.de Topic Maps Query Language Sven Krosse M. Sc. Topic Maps Lab an der Universität Leipzig [email protected] Session 4

TMQL tutorial - part 4

Embed Size (px)

Citation preview

Page 1: TMQL tutorial - part 4

Einführung in Topic Maps

topicmapslab.de

Topic Maps Query Language

Sven Krosse M. Sc.

Topic Maps Lab an der Universität Leipzig

[email protected]

Session 4

Page 2: TMQL tutorial - part 4

Einführung in Topic Maps

topicmapslab.de

Review – Session 3

Postfix

● Filter

– Boolean-Expression

– Filtertypen

● Projektion

Operatoren

Page 3: TMQL tutorial - part 4

Einführung in Topic Maps

topicmapslab.de

Agenda

1. Funktionen

● Draft 2007 Funktionen

● TMQL4J Erweiterungen

● Draft 2010 Funktionen

Page 4: TMQL tutorial - part 4

Einführung in Topic Maps

topicmapslab.de

SprachbestandteileFunktionen

Page 5: TMQL tutorial - part 4

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/)

Page 6: TMQL tutorial - part 4

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

Page 7: TMQL tutorial - part 4

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

Page 8: TMQL tutorial - part 4

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

Page 9: TMQL tutorial - part 4

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

Page 10: TMQL tutorial - part 4

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'

Page 11: TMQL tutorial - part 4

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

Page 12: TMQL tutorial - part 4

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

Page 13: TMQL tutorial - part 4

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

Page 14: TMQL tutorial - part 4

Einführung in Topic Maps

topicmapslab.de14

Funktion - count

● Identifier: count

● Argumente: eine Menge von Literalen

● Beschreibung:

● liefert die Anzahl der Elemente der Menge

Page 15: TMQL tutorial - part 4

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

Page 16: TMQL tutorial - part 4

Einführung in Topic Maps

topicmapslab.de16

Funktion - uniq

● Identifier: uniq

● Argumente: eine Menge von Literalen

● Beschreibung:

● entfernt aller Duplikate

Page 17: TMQL tutorial - part 4

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] }

Page 18: TMQL tutorial - part 4

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] }

Page 19: TMQL tutorial - part 4

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

Page 20: TMQL tutorial - part 4

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 }

Page 21: TMQL tutorial - part 4

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 }

Page 22: TMQL tutorial - part 4

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 }

Page 23: TMQL tutorial - part 4

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“, „“ }

Page 24: TMQL tutorial - part 4

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“ }

Page 25: TMQL tutorial - part 4

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“ }

Page 26: TMQL tutorial - part 4

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“ }

Page 27: TMQL tutorial - part 4

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 }

Page 28: TMQL tutorial - part 4

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“ }

Page 29: TMQL tutorial - part 4

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 }

Page 30: TMQL tutorial - part 4

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 }

Page 31: TMQL tutorial - part 4

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 }

Page 32: TMQL tutorial - part 4

Einführung in Topic Maps

topicmapslab.de32

Funktionen – Draft 2010

● Identifier: topicmap

● Argumente: keine

● Beschreibung:

● liefert die Instanz der Topic Map

Page 33: TMQL tutorial - part 4

Einführung in Topic Maps

topicmapslab.de33

Funktionen – Draft 2010

● Literalfunktionen

● Transformation von Konstrukt zu Literalen des entsprechenden

Typs

● Funktionen

● string

● boolean

● number

Page 34: TMQL tutorial - part 4

Einführung in Topic Maps

topicmapslab.de

ENDE