TMQL tutorial - part 4

861 views

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
861
On SlideShare
0
From Embeds
0
Number of Embeds
104
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

TMQL tutorial - part 4

  1. 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. 2. Einführung in Topic Maps Review – Session 3 Postfix ● Filter – Boolean-Expression – Filtertypen ● Projektion Operatoren topicmapslab.de
  3. 3. Einführung in Topic Maps Agenda 1. Funktionen ● Draft 2007 Funktionen ● TMQL4J Erweiterungen ● Draft 2010 Funktionen topicmapslab.de
  4. 4. Einführung in Topic Maps Sprachbestandteile Funktionen topicmapslab.de
  5. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 16. Einführung in Topic Maps Funktion - uniq ● Identifier: uniq ● Argumente: eine Menge von Literalen ● Beschreibung: ● entfernt aller Duplikate topicmapslab.de 16
  17. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 32. Einführung in Topic Maps Funktionen – Draft 2010 ● Identifier: topicmap ● Argumente: keine ● Beschreibung: ● liefert die Instanz der Topic Map topicmapslab.de 32
  33. 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. 34. Einführung in Topic Maps ENDE topicmapslab.de

×