Your SlideShare is downloading. ×
0
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
TMQL tutorial - part 4
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

TMQL tutorial - part 4

631

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
631
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Einführung in Topic Maps Topic Maps Query Language Session 4 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 3 Postfix ● Filter – Boolean-Expression – Filtertypen ● Projektion Operatoren topicmapslab.de
  • 3. Einführung in Topic Maps Agenda 1. Funktionen ● Draft 2007 Funktionen ● TMQL4J Erweiterungen ● Draft 2010 Funktionen topicmapslab.de
  • 4. Einführung in Topic Maps Sprachbestandteile Funktionen topicmapslab.de
  • 5. Einführung in Topic Maps 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/) topicmapslab.de 5
  • 6. Einführung in Topic Maps 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 topicmapslab.de 6
  • 7. Einführung in Topic Maps 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 topicmapslab.de 7
  • 8. Einführung in Topic Maps Funktion - has-variant ● Identifier: has-variant ● Argumente: eine Menge von Konstrukten ● Beschreibung: ● liefert die Varianten von Namen ● sonst Systemtopic undef topicmapslab.de 8
  • 9. Einführung in Topic Maps 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 topicmapslab.de 9
  • 10. Einführung in Topic Maps 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' topicmapslab.de 10
  • 11. Einführung in Topic Maps 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 topicmapslab.de 11
  • 12. Einführung in Topic Maps Konstrukt-Literal-Transformation ● Topic → Name, Subject-Identifier, Subject-Locator, Item-Identifier ● Name → Stringliteral ● Occurrence → Stringliteral ● Variant → Stringliteral ● Role → Item-Identifier ● Association → Item-Identifier topicmapslab.de 12
  • 13. Einführung in Topic Maps Funktion - slice ● Identifier: slice ● Argumente: eine Menge von Literalen und zwei numerische Werte ● Beschreibung: ● liefert die Submenge definiert durch die numerischen Grenzen topicmapslab.de 13
  • 14. Einführung in Topic Maps Funktion - count ● Identifier: count ● Argumente: eine Menge von Literalen ● Beschreibung: ● liefert die Anzahl der Elemente der Menge topicmapslab.de 14
  • 15. Einführung in Topic Maps Funktion - count ● Beispiel %prefix o http://psi.ontopia.net/music/ // o:composer [ fn:count( . / tm:name ) == 2 ] → alle Komponisten, welche genau zwei Namen haben topicmapslab.de 15
  • 16. Einführung in Topic Maps Funktion - uniq ● Identifier: uniq ● Argumente: eine Menge von Literalen ● Beschreibung: ● entfernt aller Duplikate topicmapslab.de 16
  • 17. Einführung in Topic Maps 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] } topicmapslab.de 17
  • 18. Einführung in Topic Maps 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] } topicmapslab.de 18
  • 19. Einführung in Topic Maps 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 topicmapslab.de 19
  • 20. Einführung in Topic Maps 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 } topicmapslab.de 20
  • 21. Einführung in Topic Maps 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 } topicmapslab.de 21
  • 22. Einführung in Topic Maps 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 } topicmapslab.de 22
  • 23. Einführung in Topic Maps 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“, „“ } topicmapslab.de 23
  • 24. Einführung in Topic Maps 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“ } topicmapslab.de 24
  • 25. Einführung in Topic Maps 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“ } topicmapslab.de 25
  • 26. Einführung in Topic Maps 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“ } topicmapslab.de 26
  • 27. Einführung in Topic Maps 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} topicmapslab.de 27
  • 28. Einführung in Topic Maps 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“ } topicmapslab.de 28
  • 29. Einführung in Topic Maps 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 } topicmapslab.de 29
  • 30. Einführung in Topic Maps 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 } topicmapslab.de 30
  • 31. Einführung in Topic Maps 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 } topicmapslab.de 31
  • 32. Einführung in Topic Maps Funktionen – Draft 2010 ● Identifier: topicmap ● Argumente: keine ● Beschreibung: ● liefert die Instanz der Topic Map topicmapslab.de 32
  • 33. Einführung in Topic Maps Funktionen – Draft 2010 ● Literalfunktionen ● Transformation von Konstrukt zu Literalen des entsprechenden Typs ● Funktionen ● string ● boolean ● number topicmapslab.de 33
  • 34. Einführung in Topic Maps ENDE topicmapslab.de

×