Einführung in Topic Maps




                    Topic Maps Query Language
                                Session 8




         Sven Krosse M. Sc.
         Topic Maps Lab an der Universität Leipzig
         krosse@informatik.uni-leipzig.de



  topicmapslab.de
Einführung in Topic Maps
Review – Session 7
Useful TMQL-Expressions
TMQL Part-2
 1. Delete-Expression
 2. Insert-Expression
 3. Merge-Expression




   topicmapslab.de
Einführung in Topic Maps
Agenda
TMQL Part-2
 1. Update-Expression
    a) Context-independent
    b) Context-dependent




  topicmapslab.de
Einführung in Topic Maps




                   Sprachbestandteile
                        Update Expression




 topicmapslab.de
Einführung in Topic Maps
Update-Expression
 ●   Änderungen der Topic Map
 ●   atomare Änderungen an Konstrukten der Topic Map
 ●   mehrere Änderungen am selben Kontext möglich
 ●   aber: alle Änderungen am selben Kontext!
 ●   Änderungen können neue Daten hinzufügen oder Werte
     modifizieren!




     topicmapslab.de
                                                          5
Einführung in Topic Maps
Update-Expression
 ●   Grammatik:
     update-ex         ::= UPDATE < update-clause > { where-clause }
     update-clause ::= anchor { param } ( SET | ADD ) value-ex


 ●   Anchor:      Schlüsselwort zur Definition der Änderung
 ●   Param:       optionales Argument
 ●   Value-Ex: neuer Wert der Änderung



     topicmapslab.de
                                                                       6
Einführung in Topic Maps
Update-Expression
 ●   kontextfreie Änderungen ( Kontext ist Topic Map! )
      ●   Hinzufügen neuer Topics
      ●   Hinzufügen neuer Assoziation
          → ohne CTM




     topicmapslab.de
                                                          7
Einführung in Topic Maps
Neues Topic anlegen
 ●   Schlüsselwort:     topics
 ●   Definition über Identifier
 ●   Identifier bereits in Benutzung? → keine Änderungen


     UPDATE topics ADD „http://psi.example.org/topic“
     → kein Identifier-Typ definiert (Standard: Subject-Identifier)




     topicmapslab.de
                                                                      8
Einführung in Topic Maps
Topic mit Subject-Identifier anlegen


   UPDATE topics ADD „http://psi.example.org/topic“
   UPDATE topics ADD „http://psi.example.org/topic“ ~
   UPDATE topics ADD „http://psi.example.org/topic“ << indicators
   → neues Topic mit dem Subject-Identifier




  topicmapslab.de
                                                                    9
Einführung in Topic Maps
Topic mit Item-Identifier anlegen


   UPDATE topics ADD „http://psi.example.org/topic“ !
   UPDATE topics ADD „http://psi.example.org/topic“ << item
   → neues Topic mit dem Item-Identifier




  topicmapslab.de
                                                              10
Einführung in Topic Maps
Topic mit Subject-Locator anlegen


   UPDATE topics ADD „http://psi.example.org/topic“ =
   UPDATE topics ADD „http://psi.example.org/topic“ << locators
   → neues Topic mit dem Subject-Locator




  topicmapslab.de
                                                                  11
Einführung in Topic Maps
Neue Assoziation anlegen
 ●   Schlüsselwort:     associations
 ●   Definition über Association-Definition ( keine Ellipse )
 ●   tm:subject verboten!


     UPDATE associations ADD association-type ( role-type : player )
     → erzeugt neue Assoziation mit einer Rolle
     → alle Topics werden bei nicht Existenz erzeugt



     topicmapslab.de
                                                                       12
Einführung in Topic Maps
Neue Assoziation anlegen
 ●   Variablen können durch Where-Klausel gebunden werden


     UPDATE associations ADD association-type ( role-type : $c )
         WHERE $c ISA composer


     → erzeugt für jeden Komponist eine neue Assoziation vom Typ
     association-type




     topicmapslab.de
                                                                   13
Einführung in Topic Maps
Update-Expression
 ●   kontextsensitive Änderungen ( Kontext über Where-Klausel )




     topicmapslab.de
                                                                  14
Einführung in Topic Maps
Neuer Subject-Identifier
 ●   Schlüsselwort:    indicators
 ●   Optional:         keiner
 ●   Kontext:          Topic


     UPDATE indicators ADD „http://psi.example.org/indicators“
     WHERE http://en.wikipedia.org/wiki/Puccini




     topicmapslab.de
                                                                 15
Einführung in Topic Maps
Neuer Subject-Locator
 ●   Schlüsselwort:    locators
 ●   Optional:         keiner
 ●   Kontext:          Topic


     UPDATE locators ADD „http://psi.example.org/locator“
     WHERE http://en.wikipedia.org/wiki/Puccini




     topicmapslab.de
                                                            16
Einführung in Topic Maps
Neuer Item-Identifier
 ●   Schlüsselwort:    item
 ●   Optional:         keiner
 ●   Kontext:          Topic


     UPDATE item ADD „http://psi.example.org/item“
     WHERE http://en.wikipedia.org/wiki/Puccini




     topicmapslab.de
                                                     17
Einführung in Topic Maps
Neuen Name anlegen
 ●   Schlüsselwort:    names
 ●   Optional:         Namenstyp
 ●   Kontext:          Topic


     UPDATE names name-type ADD „name“
     WHERE http://en.wikipedia.org/wiki/Puccini




     topicmapslab.de
                                                  18
Einführung in Topic Maps
Name ändern
 ●   Schlüsselwort:    names
 ●   Optional:         kein
 ●   Kontext:          Topic Name


     UPDATE names SET „name“
     WHERE http://en.wikipedia.org/wiki/Puccini >> characteristics
     tm:name @short-name




     topicmapslab.de
                                                                     19
Einführung in Topic Maps
Neue Occurrence anlegen
 ●   Schlüsselwort:    occurrences
 ●   Optional:         Occurrence-Typ
 ●   Kontext:          Topic


     UPDATE occurrences occ-type ADD „1“^^xsd:integer
     WHERE http://en.wikipedia.org/wiki/Puccini




     topicmapslab.de
                                                        20
Einführung in Topic Maps
Occurrence ändern
 ●   Schlüsselwort:    occurrences
 ●   Optional:         kein
 ●   Kontext:          Occurrence


     UPDATE occurrences SET „1“^^xsd:integer
     WHERE http://en.wikipedia.org/wiki/Puccini >> characteristics
     tm:occurrence @web




     topicmapslab.de
                                                                     21
Einführung in Topic Maps
Neues Theme hinzufügen
 ●   Schlüsselwort:    scope
 ●   Optional:         kein
 ●   Kontext:          Assoziation, Name, Occurrence


     UPDATE scope ADD http://psi.example.org/deprecated
     WHERE http://en.wikipedia.org/wiki/Puccini << players




     topicmapslab.de
                                                             22
Einführung in Topic Maps
Neuen Typ hinzufügen
 ●   Schlüsselwort:    types
 ●   Optional:         kein
 ●   Kontext:          Topic


     UPDATE types ADD http://psi.example.org/type
     WHERE http://en.wikipedia.org/wiki/Puccini




     topicmapslab.de
                                                    23
Einführung in Topic Maps
Typ ändern
 ●   Schlüsselwort:    types
 ●   Optional:         kein
 ●   Kontext:          Assoziation, Name, Occurrence


     UPDATE types SET http://psi.example.org/type
     WHERE http://en.wikipedia.org/wiki/Puccini >> characteristics
     tm:occurrence @web




     topicmapslab.de
                                                                     24
Einführung in Topic Maps
Neue Instanz hinzufügen
 ●   Schlüsselwort:    instances
 ●   Optional:         kein
 ●   Kontext:          Topic


     UPDATE instances ADD http://en.wikipedia.org/wiki/Puccini
     WHERE http://psi.example.org/type




     topicmapslab.de
                                                                 25
Einführung in Topic Maps
Neuen Supertyp hinzufügen
 ●   Schlüsselwort:    supertypes
 ●   Optional:         kein
 ●   Kontext:          Topic


     UPDATE supertypes ADD http://psi.example.org/type
     WHERE http://en.wikipedia.org/wiki/Puccini




     topicmapslab.de
                                                         26
Einführung in Topic Maps
Neuen Subtyp hinzufügen
 ●   Schlüsselwort:    subtypes
 ●   Optional:         kein
 ●   Kontext:          Topic


     UPDATE subtypes ADD http://en.wikipedia.org/wiki/Puccini
     WHERE http://psi.example.org/type




     topicmapslab.de
                                                                27
Einführung in Topic Maps
Spieler ändern
 ●   Schlüsselwort:    players
 ●   Optional:         Rollentyp ( Standard: alle Rollen!!! )
 ●   Kontext:          Assoziation


     UPDATE players composer SET http://psi.example.org/me
     WHERE http://en.wikipedia.org/wiki/Puccini << players




     topicmapslab.de
                                                                28
Einführung in Topic Maps
Rolle hinzufügen
 ●   Schlüsselwort:    roles
 ●   Optional:         Topic ( Spieler )
 ●   Kontext:          Assoziation


     UPDATE roles http://psi.example.org/me
         ADD http://psi.example.org/roleType
     WHERE http://en.wikipedia.org/wiki/Puccini << players



     topicmapslab.de
                                                             29
Einführung in Topic Maps
Reifier ändern
 ●   Schlüsselwort:    reifier
 ●   Optional:         kein
 ●   Kontext:          Assoziation, Name, Occurrence, Topic


     UPDATE reifier SET http://psi.example.org/reifier
     WHERE http://en.wikipedia.org/wiki/Puccini >> characteristics
     tm:occurrence @web




     topicmapslab.de
                                                                     30
Einführung in Topic Maps
Reifier ändern
 ●   Schlüsselwort:    reifier
 ●   Optional:         kein
 ●   Kontext:          Assoziation, Name, Occurrence, Topic


     UPDATE reifier
         SET http://en.wikipedia.org/wiki/Puccini >> characteristics
         tm:occurrence @web
     WHERE http://psi.example.org/reifier


     topicmapslab.de
                                                                       31
Einführung in Topic Maps




                    Ausblick!




 topicmapslab.de
Einführung in Topic Maps
Geplante Features
 ●   Transaktionen ( Engine-Funktion nutzen )
      ●   Aktuelle Engines mit Transaktionssupport
           –   TM2JDBC ( nur DB )
           –   Ontopia ( nur DB )
           –   MaJorToM




     topicmapslab.de
                                                     33
Einführung in Topic Maps
Geplante Features
 ●   Spracherweiterung
      ●   UPDATE mit Assoziation-Definition ( als Bedingung )
      ●   Assoziation-Definition für FLW(O)R, SELECT, PATH, DELETE
      ●   neue Content-Typen (JSON, LTM, …)




     topicmapslab.de
                                                                     34
Einführung in Topic Maps




                       ENDE




 topicmapslab.de

TMQL tutorial - part 8

  • 1.
    Einführung in TopicMaps Topic Maps Query Language Session 8 Sven Krosse M. Sc. Topic Maps Lab an der Universität Leipzig krosse@informatik.uni-leipzig.de topicmapslab.de
  • 2.
    Einführung in TopicMaps Review – Session 7 Useful TMQL-Expressions TMQL Part-2 1. Delete-Expression 2. Insert-Expression 3. Merge-Expression topicmapslab.de
  • 3.
    Einführung in TopicMaps Agenda TMQL Part-2 1. Update-Expression a) Context-independent b) Context-dependent topicmapslab.de
  • 4.
    Einführung in TopicMaps Sprachbestandteile Update Expression topicmapslab.de
  • 5.
    Einführung in TopicMaps Update-Expression ● Änderungen der Topic Map ● atomare Änderungen an Konstrukten der Topic Map ● mehrere Änderungen am selben Kontext möglich ● aber: alle Änderungen am selben Kontext! ● Änderungen können neue Daten hinzufügen oder Werte modifizieren! topicmapslab.de 5
  • 6.
    Einführung in TopicMaps Update-Expression ● Grammatik: update-ex ::= UPDATE < update-clause > { where-clause } update-clause ::= anchor { param } ( SET | ADD ) value-ex ● Anchor: Schlüsselwort zur Definition der Änderung ● Param: optionales Argument ● Value-Ex: neuer Wert der Änderung topicmapslab.de 6
  • 7.
    Einführung in TopicMaps Update-Expression ● kontextfreie Änderungen ( Kontext ist Topic Map! ) ● Hinzufügen neuer Topics ● Hinzufügen neuer Assoziation → ohne CTM topicmapslab.de 7
  • 8.
    Einführung in TopicMaps Neues Topic anlegen ● Schlüsselwort: topics ● Definition über Identifier ● Identifier bereits in Benutzung? → keine Änderungen UPDATE topics ADD „http://psi.example.org/topic“ → kein Identifier-Typ definiert (Standard: Subject-Identifier) topicmapslab.de 8
  • 9.
    Einführung in TopicMaps Topic mit Subject-Identifier anlegen UPDATE topics ADD „http://psi.example.org/topic“ UPDATE topics ADD „http://psi.example.org/topic“ ~ UPDATE topics ADD „http://psi.example.org/topic“ << indicators → neues Topic mit dem Subject-Identifier topicmapslab.de 9
  • 10.
    Einführung in TopicMaps Topic mit Item-Identifier anlegen UPDATE topics ADD „http://psi.example.org/topic“ ! UPDATE topics ADD „http://psi.example.org/topic“ << item → neues Topic mit dem Item-Identifier topicmapslab.de 10
  • 11.
    Einführung in TopicMaps Topic mit Subject-Locator anlegen UPDATE topics ADD „http://psi.example.org/topic“ = UPDATE topics ADD „http://psi.example.org/topic“ << locators → neues Topic mit dem Subject-Locator topicmapslab.de 11
  • 12.
    Einführung in TopicMaps Neue Assoziation anlegen ● Schlüsselwort: associations ● Definition über Association-Definition ( keine Ellipse ) ● tm:subject verboten! UPDATE associations ADD association-type ( role-type : player ) → erzeugt neue Assoziation mit einer Rolle → alle Topics werden bei nicht Existenz erzeugt topicmapslab.de 12
  • 13.
    Einführung in TopicMaps Neue Assoziation anlegen ● Variablen können durch Where-Klausel gebunden werden UPDATE associations ADD association-type ( role-type : $c ) WHERE $c ISA composer → erzeugt für jeden Komponist eine neue Assoziation vom Typ association-type topicmapslab.de 13
  • 14.
    Einführung in TopicMaps Update-Expression ● kontextsensitive Änderungen ( Kontext über Where-Klausel ) topicmapslab.de 14
  • 15.
    Einführung in TopicMaps Neuer Subject-Identifier ● Schlüsselwort: indicators ● Optional: keiner ● Kontext: Topic UPDATE indicators ADD „http://psi.example.org/indicators“ WHERE http://en.wikipedia.org/wiki/Puccini topicmapslab.de 15
  • 16.
    Einführung in TopicMaps Neuer Subject-Locator ● Schlüsselwort: locators ● Optional: keiner ● Kontext: Topic UPDATE locators ADD „http://psi.example.org/locator“ WHERE http://en.wikipedia.org/wiki/Puccini topicmapslab.de 16
  • 17.
    Einführung in TopicMaps Neuer Item-Identifier ● Schlüsselwort: item ● Optional: keiner ● Kontext: Topic UPDATE item ADD „http://psi.example.org/item“ WHERE http://en.wikipedia.org/wiki/Puccini topicmapslab.de 17
  • 18.
    Einführung in TopicMaps Neuen Name anlegen ● Schlüsselwort: names ● Optional: Namenstyp ● Kontext: Topic UPDATE names name-type ADD „name“ WHERE http://en.wikipedia.org/wiki/Puccini topicmapslab.de 18
  • 19.
    Einführung in TopicMaps Name ändern ● Schlüsselwort: names ● Optional: kein ● Kontext: Topic Name UPDATE names SET „name“ WHERE http://en.wikipedia.org/wiki/Puccini >> characteristics tm:name @short-name topicmapslab.de 19
  • 20.
    Einführung in TopicMaps Neue Occurrence anlegen ● Schlüsselwort: occurrences ● Optional: Occurrence-Typ ● Kontext: Topic UPDATE occurrences occ-type ADD „1“^^xsd:integer WHERE http://en.wikipedia.org/wiki/Puccini topicmapslab.de 20
  • 21.
    Einführung in TopicMaps Occurrence ändern ● Schlüsselwort: occurrences ● Optional: kein ● Kontext: Occurrence UPDATE occurrences SET „1“^^xsd:integer WHERE http://en.wikipedia.org/wiki/Puccini >> characteristics tm:occurrence @web topicmapslab.de 21
  • 22.
    Einführung in TopicMaps Neues Theme hinzufügen ● Schlüsselwort: scope ● Optional: kein ● Kontext: Assoziation, Name, Occurrence UPDATE scope ADD http://psi.example.org/deprecated WHERE http://en.wikipedia.org/wiki/Puccini << players topicmapslab.de 22
  • 23.
    Einführung in TopicMaps Neuen Typ hinzufügen ● Schlüsselwort: types ● Optional: kein ● Kontext: Topic UPDATE types ADD http://psi.example.org/type WHERE http://en.wikipedia.org/wiki/Puccini topicmapslab.de 23
  • 24.
    Einführung in TopicMaps Typ ändern ● Schlüsselwort: types ● Optional: kein ● Kontext: Assoziation, Name, Occurrence UPDATE types SET http://psi.example.org/type WHERE http://en.wikipedia.org/wiki/Puccini >> characteristics tm:occurrence @web topicmapslab.de 24
  • 25.
    Einführung in TopicMaps Neue Instanz hinzufügen ● Schlüsselwort: instances ● Optional: kein ● Kontext: Topic UPDATE instances ADD http://en.wikipedia.org/wiki/Puccini WHERE http://psi.example.org/type topicmapslab.de 25
  • 26.
    Einführung in TopicMaps Neuen Supertyp hinzufügen ● Schlüsselwort: supertypes ● Optional: kein ● Kontext: Topic UPDATE supertypes ADD http://psi.example.org/type WHERE http://en.wikipedia.org/wiki/Puccini topicmapslab.de 26
  • 27.
    Einführung in TopicMaps Neuen Subtyp hinzufügen ● Schlüsselwort: subtypes ● Optional: kein ● Kontext: Topic UPDATE subtypes ADD http://en.wikipedia.org/wiki/Puccini WHERE http://psi.example.org/type topicmapslab.de 27
  • 28.
    Einführung in TopicMaps Spieler ändern ● Schlüsselwort: players ● Optional: Rollentyp ( Standard: alle Rollen!!! ) ● Kontext: Assoziation UPDATE players composer SET http://psi.example.org/me WHERE http://en.wikipedia.org/wiki/Puccini << players topicmapslab.de 28
  • 29.
    Einführung in TopicMaps Rolle hinzufügen ● Schlüsselwort: roles ● Optional: Topic ( Spieler ) ● Kontext: Assoziation UPDATE roles http://psi.example.org/me ADD http://psi.example.org/roleType WHERE http://en.wikipedia.org/wiki/Puccini << players topicmapslab.de 29
  • 30.
    Einführung in TopicMaps Reifier ändern ● Schlüsselwort: reifier ● Optional: kein ● Kontext: Assoziation, Name, Occurrence, Topic UPDATE reifier SET http://psi.example.org/reifier WHERE http://en.wikipedia.org/wiki/Puccini >> characteristics tm:occurrence @web topicmapslab.de 30
  • 31.
    Einführung in TopicMaps Reifier ändern ● Schlüsselwort: reifier ● Optional: kein ● Kontext: Assoziation, Name, Occurrence, Topic UPDATE reifier SET http://en.wikipedia.org/wiki/Puccini >> characteristics tm:occurrence @web WHERE http://psi.example.org/reifier topicmapslab.de 31
  • 32.
    Einführung in TopicMaps Ausblick! topicmapslab.de
  • 33.
    Einführung in TopicMaps Geplante Features ● Transaktionen ( Engine-Funktion nutzen ) ● Aktuelle Engines mit Transaktionssupport – TM2JDBC ( nur DB ) – Ontopia ( nur DB ) – MaJorToM topicmapslab.de 33
  • 34.
    Einführung in TopicMaps Geplante Features ● Spracherweiterung ● UPDATE mit Assoziation-Definition ( als Bedingung ) ● Assoziation-Definition für FLW(O)R, SELECT, PATH, DELETE ● neue Content-Typen (JSON, LTM, …) topicmapslab.de 34
  • 35.
    Einführung in TopicMaps ENDE topicmapslab.de