TMQL tutorial - part 7

980 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
980
On SlideShare
0
From Embeds
0
Number of Embeds
58
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

TMQL tutorial - part 7

  1. 1. Einführung in Topic Maps Topic Maps Query Language Session 7 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 6 1. FLW(O)R Style ● RETURN-Clause ● WHERE-Clause ● ORDER-BY Clause ● FOR-Clause 2. Verschachtelung 3. Content Types ● XML ● CTM topicmapslab.de
  3. 3. Einführung in Topic Maps Agenda Useful TMQL Expression 1. If-Then-Else TMQL Part II 1. Delete Expression 2. Insert Expression 3. Merge Expression topicmapslab.de
  4. 4. Einführung in Topic Maps Sprachbestandteile Useful Expression topicmapslab.de
  5. 5. Einführung in Topic Maps Bedingte Anweisung ● bedingte Auswertung von Ergebnissen ● erlaubt bedingte Verzweigung zur Verarbeitungszeit ● Grammatik content ::= if path-expression then content [ else content ] topicmapslab.de 5
  6. 6. Einführung in Topic Maps Bedingte Anweisung ● Pfadausdruck nach Schlüsselwort IF bestimmt Verzweigung ● leere Menge → ELSE-Zweig ● ELSE-Zweig ist optional → leere Menge bei fehlender Definition topicmapslab.de 6
  7. 7. Einführung in Topic Maps Bedingte Anweisung %prefix o http://psi.ontopia.net/music/ FOR $topic IN // tm:subject RETURN IF $topic ISA o:composer THEN $topic >> indicators ELSE $topic / tm:name [0] topicmapslab.de 7
  8. 8. Einführung in Topic Maps Bedingte Anweisung NCL ● Kurzform für bedingte Anweisung ● Bedingung repräsentiert „Then“-Zweig ● Grammatik content ::= path-expression || path-expression topicmapslab.de 8
  9. 9. Einführung in Topic Maps Bedingte Anweisung NCL %prefix o http://psi.ontopia.net/music/ FOR $topic IN // tm:subject RETURN $topic >> indicators >> atomify [0] || $topic >> locators >> atomify [0] topicmapslab.de 9
  10. 10. Einführung in Topic Maps TMQL – Part II topicmapslab.de
  11. 11. Einführung in Topic Maps TMQL Part II ● kein ISO-Standard oder Draft ● basiert auf TMQL Part I ( TMQL – Query Language ) ● basiert syntaktisch auf dem Draft 2007 topicmapslab.de 11
  12. 12. Einführung in Topic Maps TMQL Part II ● definiert Veränderungsoperationen für Topic Maps ● Einfügeoperation ● Löschoperation ● Änderungsoperation ● Merge-Regeln topicmapslab.de 12
  13. 13. Einführung in Topic Maps Sprachbestandteile Insert Expression topicmapslab.de
  14. 14. Einführung in Topic Maps Insert Expression ● Erzeugen neuer Topic Maps Konstrukte ● Verwendung von CTM als Definitionssprache ● CTM-Content äquivalent zu FLW(O)R Style ● Verwendung von Variablen (gebunden durch Where-Klausel) ● erlaubt auch Änderung bestehender Elemente topicmapslab.de 14
  15. 15. Einführung in Topic Maps Insert Expression ● Grammatik insert-expression ::= INSERT “““ctm-stream “““ { WHERE query-expression } topicmapslab.de 15
  16. 16. Einführung in Topic Maps Insert Expression INSERT “““ <http://psi.example.org/topic>. “““ → Fügt ein neues Topic mit dem Subject-Identifier hinzu INSERT “““ { $topic >> indicators >> atomify [0] ISA <http://psi.example.org/topic> . } “““ WHERE $topic ISA tm:subject → Fügt jedem Topic den Typ http://psi.example.org/topic hinzu topicmapslab.de 16
  17. 17. Einführung in Topic Maps Sprachbestandteile Delete Expression topicmapslab.de
  18. 18. Einführung in Topic Maps Delete Expression ● Entfernen bestehender Topic Maps Konstrukte ● Adressierung von Konstrukten über Pfadausdruck ● Abhängigkeit werden nicht automatisch entfernt (z.B. Topic als Reifier, Topic als Typ) topicmapslab.de 18
  19. 19. Einführung in Topic Maps Delete Expression ● direkte Adressierung über Pfadausdruck und Filter ● Grammatik delete-expression ::= DELETE { CASCADE } simple-content {filter-postfix} WHERE boolean-expression ● Schlüsselwort CASCADE definiert Löschen aller Abhängigkeiten ● nicht kaskadiert ( Löschen wird abgebrochen ) ● Where-Klausel definiert Wertebereich der Variablen topicmapslab.de 19
  20. 20. Einführung in Topic Maps Delete Expression DELETE CASCADE http://en.wikipedia.org/wiki/Puccini → entfernt das Topic Puccini und alle seine Abhängigkeiten – gespielte Rollen und Assoziation – alle Namen und Occurrences – Verwendung als Theme (Konstrukte werden gelöscht) – Verwendung als Reifier (Reifikation wird aufgehoben) topicmapslab.de 20
  21. 21. Einführung in Topic Maps Delete Expression DELETE CASCADE http://psi.ontopia.net/music/composer >> instances → entfernt alle Komponisten aus der Topic Map DELETE CASCADE ALL → entfernt jegliche Konstrukte aus der Topic Map topicmapslab.de 21
  22. 22. Einführung in Topic Maps Sprachbestandteile Merge Expression topicmapslab.de
  23. 23. Einführung in Topic Maps Merge Expression ● Mergen von Topics gemäß TMDM ● Definition einer Menge von Topics, welche gemergt werden sollen ● Verwendung von Variablen ● Where-Klausel schränkt Wertebereich der Variablen ein ● Grammatik merge-expression ::= MERGE <value-expression> WHERE boolean-expression topicmapslab.de 23
  24. 24. Einführung in Topic Maps Merge Expression MERGE // http://psi.example.org/type [ . / email == „person@gmail.com“ ] → alle Topics, welche die folgenden Bedingung erfüllen, werden gemergt ● Instanz vom Typ http://psi.example.org/type ● besitzen mindestens eine Occurrence vom Typ email ● Wert mindestens einer dieser Occurrence ist person@gmail.com topicmapslab.de 24
  25. 25. Einführung in Topic Maps Merge Expression MERGE $person, $other WHERE $person ISA person AND $other ISA person AND $person / email == $other / email → Personen mit der selben E-Mail Adresse werden gemergt topicmapslab.de 25
  26. 26. Einführung in Topic Maps Merge Expression ● Mergen von Assoziation ● Definition einer Menge von Assoziation, welche verschmelzen sollen ● Grammatik merge-expression ::= MERGE association-definition WHERE boolean-expression topicmapslab.de 26
  27. 27. Einführung in Topic Maps Association-Definition ● äquivalent zu Predicate-Invocation (eingeschränkte Syntax) ● liefern Menge von Assoziation passend zum definierten Muster ● Ellipse hebt strikte Verarbeitung auf association-definition ::= < part [ , … ] > part ::= (ident | variable) ':' (ident | variable) topicmapslab.de 27
  28. 28. Einführung in Topic Maps Association-Definition %prefix m http://psi.ontopia.net/music/ m:composed-by ( m:composer : http://en.wikipedia.net/wiki/Puccini ) → liefert alle Assoziationen, welche ● vom Typ „komponiert“ ist ● exakt eine Rolle vom Typ „Komponist“ gespielt von Puccini besitzt topicmapslab.de 28
  29. 29. Einführung in Topic Maps Association-Definition %prefix m http://psi.ontopia.net/music/ m:composed-by ( tm:subject : http://en.wikipedia.net/wiki/Puccini , … ) → liefert alle Assoziationen, welche ● vom Typ „komponiert“ ist ● mindestens eine Rolle gespielt von Puccini besitzt → der Rollentyp ist nicht eingeschränkt topicmapslab.de 29
  30. 30. Einführung in Topic Maps Merge Expression %prefix m http://psi.ontopia.net/music/ MERGE m:composed-by ( tm:subject : http://en.wikipedia.net/wiki/Puccini , … ) → verschmelzen aller Assoziationen vom Typ „komponiert“, welche von Puccini gespielt werden topicmapslab.de 30
  31. 31. Einführung in Topic Maps Merge Expression ● Bedingungen ● selber Typ ● selber Scope ● Funktionsweise: ● Alle nicht vorhandenen Rollen werden kopiert ● Quell-Assoziation wird gelöscht ● Reifier werden verschmolzen topicmapslab.de 31
  32. 32. Einführung in Topic Maps ENDE topicmapslab.de

×