SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
TMAPI 2.0

Lars Heuer and Johannes
        Schmidt
Agenda

• Let's introduce :)
• Background
   o Purpose and history
   o The need for TMAPI 2.0
• Status of TMAPI 2.0
• Theoretical introduction into TMAPI (short)
• Hands-on TMAPI 2.0 (let's focus on that)
• Questions and feedback 
 
 
Experience TMAPI 2.0 by trying it out :)
Who will bore you the next 3h? ;)

Johannes Schmidt          Lars Heuer
js@sixgroups.com          heuer@semagia.com
http://sixgroups.com/     http://www.semagia.com/
 • Co-Creator TMAPI 2.0    • Member of TMAPI since
   (but no Java              v1.0
   Programmer ;)           • Co-Creator of TMAPI 2.0
 • Maintainer PHPTMAPI     • Maintainer tinyTiM
 • Maintainer QuaaxTM        1.5/2.0
                           • Co-Editor CTM 1.0 (ISO
                             13250-6 - Compact
                             Syntax)
Purpose

• Common API to work with topic maps
• Topic Maps engine independent: Applications
  implemented against TMAPI can use any Topic Maps
  engine which implements TMAPI. 
• De facto standard API - however outside a standards
  body
Purpose

• Provision of a set of Java interfaces
• Provision of UML class diagrams used as boilerplate
  for the interfaces, and also for translations to other
  OO-languages
• Provision of a test suite to ensure conformity
History

• TMAPI 1.0
   o Released 2004/2005.
   o Abstracts from XTM 1.0 and implements some
     TMDM features, but is not completely TMDM
     compatible.
   o Supported by several Topic Maps engines (Open
     Source and commercial).
   o TM4L Editor switched from TM4J to TMAPI.
   o Ported to PHP5 (PHPTMAPI 1.0) and C# (state
     unknown).
The need for TMAPI 2.0

• TMDM compatibility (and observance of TMDM
  constraints to some extent)
• User friendliness
• Convenience
 
 
Our TMRA 2008 paper describes the changes vs. TMAPI
1.0 in detail (TMAPI 2.0 comes with a raw enumeration).
Status of TMAPI 2.0

• Currently Alpha
   o See http://www.tmapi.org/2.0/
• tinyTiM 2.0 the only engine which supports TMAPI
  2.0 at the moment
   o See http://tinytim.sourceforge.net/
• PHPTMAPI 2.0: proposal published
   o UML class diagrams
   o Interfaces (in SVN)
   o API docs
   o See http://phptmapi.wiki.sourceforge.net/
• C# translation in the works (maybe Stefan can give
  us an update :)
Introduction into TMAPI

• Factories
   o TopicMapSystemFactory creates TopicMapSystems
   o TopicMapSystem creates TopicMap
   o TopicMap creates Topics/Associations
   o Topic create Occurrences/Names
   o Name creates Variants
   o Association creates Roles
• Each parent creates its children, it is not possible to
  create a quot;detachedquot; topic name which is later added
  to a topic.
Introduction into TMAPI

• TopicMapSystemFactory
  Factory to create TopicMapSystems
   o Configure TopicMapSystems
   o Some features like quot;automergequot; (merge topics
     automatically and transparently for the user) are
     predefined by TMAPI.
   o Each Topic Maps engine may define a set of
     special features.
   o All TopicMapSystems created by the factory use
     the same configuration.
Introduction into TMAPI

• TopicMapSystem
  Repository of topic maps which holds a collection of
  topic maps
   o Allows retrieval of topic maps.
   o Allows the creation of topic maps (if the
     TopicMapSystem was not configured in read-only
     modus).
Introduction into TMAPI

• Construct
  The main interface from which all interfaces are
  derived; provides navigation to the constructs parent
  and manipulation of item identifiers.
• TopicMap
  Main interface which provides access to topics,
  associations, and the indexes.
• Topic
   o Occurrence
   o Name
       Variant
• Association
   o Role
Introduction into TMAPI
TMAPI 2.0 core (abbreviated UML class diagrams)
Hands-on TMAPI 2.0

• Full experience: Java with tinyTiM 2.0
   o Get it here: http://tinytim.sourceforge.net/
   o Install: Put the TMAPI and tinyTiM jars in your
     classpath, ask Lars in case of problems.
   o Works in memory.
• Limited experience*: PHP5 with a QuaaxTM
  prototype
   o Get it here: http://phptmapi.sourceforge.net/tmra/
     (User: tmra, Password: tmapi)
   o Install: Have a look at the resource given above or
     ask Johannes.
   o Works on a MySQL database.
 
*PHPTMAPI 2.0 is really brand-new ;)
Hands-on TMAPI -- API Docs

• For all details have a look at the API docs
   o Java: http://www.tmapi.org/2.0/api/
   o PHP: http://phptmapi.sourceforge.net/2.0/docs/
 
 
... and we like questions :)
Hands-on TMAPI -- TMSysFactory

• Create a TopicMapSystemFactory
  o Java:
    TopicMapSystemFactory tmSysFactory =  
    TopicMapSystemFactory.newInstance();
  o PHP:
    $tmSysFactory =
    TopicMapSystemFactory::newInstance();
• Configure the factory
  o Java: Skipped here, not necessary (for tinyTiM).
  o PHP: Skipped here, not implemented yet.
Hands-on TMAPI -- TMSystem

• Create a TopicMapSystem
  o Java:
    TopicMapSystem tmSys =
    tmSysFactory.newTopicMapSystem();
  o PHP:
    $tmSys = $tmSysFactory->newTopicMapSystem();
Hands-on TMAPI -- TopicMap

• Create a topic map
  A TopicMap instance is simply a container for topics
  and associations
   o Java:
     TopicMap tm =
     tmSys.createTopicMap(quot;http://tmra.de/tmapi-
     tutorialquot;);
   o PHP:
     $tm = $tmSys->createTopicMap(quot;http://tmra.de/
     tmapi-tutorialquot;);
Hands-on TMAPI -- Topics

• Topics are either created via a subject identifier, a
  subject locator, or an item identifier.
• Creating a topic by a subject identifier:
   o Java:
     Locator sid =
     tm.createLocator(quot;http://en.wikipedia.org/John_Len
     nonquot;);
     Topic john =
     tm.createTopicBySubjectIdentifier(sid);
   o PHP:
     $john = $tm->createTopicBySubjectIdentifier
     (quot;http://en.wikipedia.org/John_Lennonquot;);
Hands-on TMAPI -- Topics

• Creating a topic by a subject locator:
  o Java:
    Locator slo =              
    tm.createLocator(quot;http://www.google.comquot;);
    Topic google =
    tm.createTopicBySubjectLocator(slo);
  o PHP:
    $slo = quot;http://www.google.comquot;; // or pass the
    string directly as parameter                          
    $google =
    $tm->createTopicBySubjectLocator($slo);
Hands-on TMAPI -- Topics

    • Creating a topic by an item identifier:
      o Java:
        Locator iid =
        tm.createLocator(quot;http://www.example.org/map#ii
        d1quot;);
        Topic aTopic = tm.createTopicByIdentifier(iid);
      o PHP: Not yet implemented in the prototype.
 
    • Second example, see next slide.
Hands-on TMAPI -- Topics

    • Creating a topic by an automatically generated
      item identifier:
       o Java:
         Topic aTopic = tm.createTopic();
         assert aTopic.getItemIdentifiers().size() == 2
       o PHP:
         $aTopic = $tm->createTopic();
 
    • The Topic Maps engine ensures that the topic will
      get an item identifier and takes care that this item
      identifier does not make the topic equal to another
      topic (at least in the topic map which generated that
      identifier).
Hands-on TMAPI -- Topics

• Using this method is not recommended!
• The quot;createTopicBy...quot; methods may return an
  already existing topic.
• If you try to create a topic with the item identifier
  quot;http://en.wikipedia.org/John_Lennonquot; and a topic
  with the same subject identifier exists, you'll get the
  already existing topic (the topic may get an
  additional item identifier if it does not exist yet).
Hands-on TMAPI -- Topics

• Rules:
  o BySubjectIdentifier/byItemIdentifier: If a topic with
    the specified subject identifier or an item identifier
    equals to the specified locator exists, return the
    existing topic.
  o BySubjectLocator: If a topic with the specified
    subject locator exists, return the existing topic.
Hands-on TMAPI -- Topics

Summary for creating topics
 • An explicit identity (subject identifier, subject
   locator, or item identifier) is preferred. Subject
   identifiers and subject locators are quot;strongquot;
   identities, while item identifiers are not.
 • Automatically generated item identifiers should be
   avoided since this feature is Topic Maps engine
   dependent and they are not necessarily globally
   unique (GUID).
 • Best practice: Use an explicit identity!
Hands-on TMAPI -- Occurrences

• First of all you need a topic to which you want to
  create occurrences (occurrences are always bound
  to a topic, you cannot detach/attach them).
• Occurrences
  Occurrences have a value and a datatype
   o Java:
     Locator value = 
     tm.createLocator(quot;http://www.google.com/quot;);
     Occurrence occ = t.createOccurrence(website,
     value); // the occurrence will automatically have
     the datatype xsd:anyURI
Hands-on TMAPI -- Occurrences

    • PHP: You have to define the datatype explicitly
       o $topic->createOccurrence($website,
         quot;http://www.google.com/quot;,
         VocabularyUtils::XSD_ANYURI);
 


VocabularyUtils::XSD_ANYURI = 
quot;http://www.w3.org/2001/XMLSchema#anyURIquot;
Hands-on TMAPI -- Names

Creating  a name
• Using the default name type
   o Java:
     Name name = john.createName(quot;John Lennonquot;);
   o PHP:
     $name = $john->createName(quot;John Lennonquot;);
• Using an explicit name type
   o Java:
     Name forename = john.createName(forename,
     quot;Johnquot;);
   o PHP:
     $forename = $john->createTypedName
     ($forename, quot;Johnquot;);
Hands-on TMAPI -- Associations

Associations are created by a TopicMap instance, they
are automatically added to the topic map
 • Java:
    o Association memberOf =                          
      tm.createAssociation(memberOfTopic);
      Role role = memberOf.createRole(member, john);
      // member: Type of the role
      // john: Role player
 • PHP:
    o $memberOf =                          
      $tm->createAssociation($memberOfTopic);
      $role = $memberOf->createRole($member,
      $john);
Hands-on TMAPI -- Modelling Type-
Instance Associations
For type-instance relationships, the short-cut
  ● topic.addType(type);

can be used. The Topic Maps engine decides if either
an association is created or if the topic has a property
which holds references to the types.

Example:
 • Java: john.addType(person);
 • PHP: $john->addType($person);
Questions so far?

... from now on it's your turn :)
Hands-on TMAPI 2.0

• Create your own topic map: You should start with a
  conceptual model (Ontology), i.e. of this tutorial.
   o Create Topic Types (which are Topics),
   o Association Types (which are Topics),
   o Occurrence Types (which are Topics),
   o and Role Types (which are Topics too)*.
 
Example: Create quot;Tutorialquot; first before you create a
quot;TMAPI Tutorialquot; :)

*Usage of TopicMap.createTopicBySubjectIdentifier(IRI)
 is a good idea here.
Hands-on TMAPI

This could be an inspiration for usage of Types:
http://www.ontopia.net/omnigator/models/topicmap_complete.jsp?tm=jill.xtm
Hands-on TMAPI -- Reification

• quot;The act of reification is the act of making a topic
  represent the subject of another topic map construct
  in the same topic map.quot; (TMDM)
   o Quite simple with TMAPI: setReifier(Topic reifier).
   o Retrieve the reifier: getReifier().
Hands-on TMAPI -- Index

• TMAPI 2.0 provides three indexes.
   o LiteralIndex: Retrieve constructs by their value
     and datatype.
   o ScopedIndex: Retrieve statements by their scope
     (and the statements' scopes).
   o TypeInstanceIndex: Retrieve constructs by their
     type (and the constructs' types).
• Not yet available in the QuaaxTM prototype :(
Questions and feedback

 Do you have questions and/or feedback?
References

• TMAPI
  http://www.tmapi.org/
  TMAPI 2.0
  http://www.tmapi.org/2.0/
• TM4J
  TMAPI 1.0 implementation
  http://tm4j.sourceforge.net/
• tinyTiM
  TMAPI 1.0 / 2.0 implementation
  http://tinytim.sourceforge.net/
• TMDM
  Topic Maps – Data Model
  http://www.isotopicmaps.org/sam/sam-model/
References

• PHPTMAPI
  Port of TMAPI 1.0 / 2.0 to PHP5
  http://sourceforge.net/phptmapi
• QuaaxTM
  Topic Maps engine that implements PHPTMAPI
  http://quaaxtm.sourceforge.net/
• TMAPI 4 .NET
  Port of TMAPI 2.0 to C#
  http://sourceforge.net/projects/tmapinet
• TM4L Editor
  Topic Maps editor using TMAPI 1.0
  http://compsci.wssu.edu/iis/nsdl/download.html

Contenu connexe

Tendances

Ruby application based on http
Ruby application based on httpRuby application based on http
Ruby application based on httpRichard Huang
 
Symony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP FrameworkSymony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP FrameworkRyan Weaver
 
Remote Method Invocation
Remote Method InvocationRemote Method Invocation
Remote Method Invocationelliando dias
 
How to start learning java
How to start learning javaHow to start learning java
How to start learning javabillgatewilliam
 
Developing cross platform desktop application with Ruby
Developing cross platform desktop application with RubyDeveloping cross platform desktop application with Ruby
Developing cross platform desktop application with RubyAnis Ahmad
 
Dev Day 2019: Mike Sperber – Software Design für die Seele
Dev Day 2019: Mike Sperber – Software Design für die SeeleDev Day 2019: Mike Sperber – Software Design für die Seele
Dev Day 2019: Mike Sperber – Software Design für die SeeleDevDay Dresden
 
Journey of a C# developer into Javascript
Journey of a C# developer into JavascriptJourney of a C# developer into Javascript
Journey of a C# developer into JavascriptMassimo Franciosa
 
Playing with Java Classes and Bytecode
Playing with Java Classes and BytecodePlaying with Java Classes and Bytecode
Playing with Java Classes and BytecodeYoav Avrahami
 
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov Nayden Gochev
 
Ruby for C# Developers
Ruby for C# DevelopersRuby for C# Developers
Ruby for C# DevelopersCory Foy
 
JRuby in Java Projects
JRuby in Java ProjectsJRuby in Java Projects
JRuby in Java Projectsjazzman1980
 
Dependency Injection: Make your enemies fear you
Dependency Injection: Make your enemies fear youDependency Injection: Make your enemies fear you
Dependency Injection: Make your enemies fear youRyan Weaver
 
How the HotSpot and Graal JVMs execute Java Code
How the HotSpot and Graal JVMs execute Java CodeHow the HotSpot and Graal JVMs execute Java Code
How the HotSpot and Graal JVMs execute Java CodeJim Gough
 
Method Handles in Java
Method Handles in JavaMethod Handles in Java
Method Handles in Javahendersk
 
PHP 5.3 Part 2 - Lambda Functions & Closures
PHP 5.3 Part 2 - Lambda Functions & ClosuresPHP 5.3 Part 2 - Lambda Functions & Closures
PHP 5.3 Part 2 - Lambda Functions & Closuresmelechi
 
PyCon Korea 2019 REST API Document Generation
PyCon Korea 2019 REST API Document GenerationPyCon Korea 2019 REST API Document Generation
PyCon Korea 2019 REST API Document Generation용선 이
 
Invokedynamic / JSR-292
Invokedynamic / JSR-292Invokedynamic / JSR-292
Invokedynamic / JSR-292ytoshima
 

Tendances (20)

Ruby application based on http
Ruby application based on httpRuby application based on http
Ruby application based on http
 
Symony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP FrameworkSymony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP Framework
 
Java vs. C/C++
Java vs. C/C++Java vs. C/C++
Java vs. C/C++
 
Remote Method Invocation
Remote Method InvocationRemote Method Invocation
Remote Method Invocation
 
How to start learning java
How to start learning javaHow to start learning java
How to start learning java
 
Developing cross platform desktop application with Ruby
Developing cross platform desktop application with RubyDeveloping cross platform desktop application with Ruby
Developing cross platform desktop application with Ruby
 
Dev Day 2019: Mike Sperber – Software Design für die Seele
Dev Day 2019: Mike Sperber – Software Design für die SeeleDev Day 2019: Mike Sperber – Software Design für die Seele
Dev Day 2019: Mike Sperber – Software Design für die Seele
 
Journey of a C# developer into Javascript
Journey of a C# developer into JavascriptJourney of a C# developer into Javascript
Journey of a C# developer into Javascript
 
Playing with Java Classes and Bytecode
Playing with Java Classes and BytecodePlaying with Java Classes and Bytecode
Playing with Java Classes and Bytecode
 
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
 
On Web Browsers
On Web BrowsersOn Web Browsers
On Web Browsers
 
Ruby for C# Developers
Ruby for C# DevelopersRuby for C# Developers
Ruby for C# Developers
 
JRuby in Java Projects
JRuby in Java ProjectsJRuby in Java Projects
JRuby in Java Projects
 
Dependency Injection: Make your enemies fear you
Dependency Injection: Make your enemies fear youDependency Injection: Make your enemies fear you
Dependency Injection: Make your enemies fear you
 
How the HotSpot and Graal JVMs execute Java Code
How the HotSpot and Graal JVMs execute Java CodeHow the HotSpot and Graal JVMs execute Java Code
How the HotSpot and Graal JVMs execute Java Code
 
Invoke dynamics
Invoke dynamicsInvoke dynamics
Invoke dynamics
 
Method Handles in Java
Method Handles in JavaMethod Handles in Java
Method Handles in Java
 
PHP 5.3 Part 2 - Lambda Functions & Closures
PHP 5.3 Part 2 - Lambda Functions & ClosuresPHP 5.3 Part 2 - Lambda Functions & Closures
PHP 5.3 Part 2 - Lambda Functions & Closures
 
PyCon Korea 2019 REST API Document Generation
PyCon Korea 2019 REST API Document GenerationPyCon Korea 2019 REST API Document Generation
PyCon Korea 2019 REST API Document Generation
 
Invokedynamic / JSR-292
Invokedynamic / JSR-292Invokedynamic / JSR-292
Invokedynamic / JSR-292
 

En vedette

A Topic map-based ontology IR system versus Clustering-based IR System: A Com...
A Topic map-based ontology IR system versus Clustering-based IR System: A Com...A Topic map-based ontology IR system versus Clustering-based IR System: A Com...
A Topic map-based ontology IR system versus Clustering-based IR System: A Com...tmra
 
Introduction to IHRM
Introduction to IHRMIntroduction to IHRM
Introduction to IHRMhassaanzaman
 
Global Business and International Human Resource Management
Global Business and International Human Resource ManagementGlobal Business and International Human Resource Management
Global Business and International Human Resource ManagementLITTLE FISH
 
Course Module - IHRM
Course Module - IHRMCourse Module - IHRM
Course Module - IHRM07Deeps
 
IHRM & labour relations
IHRM  & labour relationsIHRM  & labour relations
IHRM & labour relationsSelf-employed
 
Chapter 1 introduction to ihrm
Chapter   1 introduction to ihrmChapter   1 introduction to ihrm
Chapter 1 introduction to ihrmPreeti Bhaskar
 
International Human Resource Managment
International Human Resource ManagmentInternational Human Resource Managment
International Human Resource Managmentbinotrisha
 
Presentation Validity & Reliability
Presentation Validity & ReliabilityPresentation Validity & Reliability
Presentation Validity & Reliabilitysongoten77
 

En vedette (10)

A Topic map-based ontology IR system versus Clustering-based IR System: A Com...
A Topic map-based ontology IR system versus Clustering-based IR System: A Com...A Topic map-based ontology IR system versus Clustering-based IR System: A Com...
A Topic map-based ontology IR system versus Clustering-based IR System: A Com...
 
Introduction to IHRM
Introduction to IHRMIntroduction to IHRM
Introduction to IHRM
 
Global Business and International Human Resource Management
Global Business and International Human Resource ManagementGlobal Business and International Human Resource Management
Global Business and International Human Resource Management
 
Course Module - IHRM
Course Module - IHRMCourse Module - IHRM
Course Module - IHRM
 
IHRM & labour relations
IHRM  & labour relationsIHRM  & labour relations
IHRM & labour relations
 
Chapter 1 introduction to ihrm
Chapter   1 introduction to ihrmChapter   1 introduction to ihrm
Chapter 1 introduction to ihrm
 
International Human Resource Managment
International Human Resource ManagmentInternational Human Resource Managment
International Human Resource Managment
 
Ihrm chapter4
Ihrm chapter4Ihrm chapter4
Ihrm chapter4
 
Ihrm
IhrmIhrm
Ihrm
 
Presentation Validity & Reliability
Presentation Validity & ReliabilityPresentation Validity & Reliability
Presentation Validity & Reliability
 

Similaire à TMAPI 2.0 tutorial

Writing Apps with HotCocoa and MacRuby
Writing Apps with HotCocoa and MacRubyWriting Apps with HotCocoa and MacRuby
Writing Apps with HotCocoa and MacRubyRenzo Borgatti
 
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010singingfish
 
Ruby Isn't Just About Rails
Ruby Isn't Just About RailsRuby Isn't Just About Rails
Ruby Isn't Just About RailsAdam Wiggins
 
What's up with Prototype and script.aculo.us?
What's up with Prototype and script.aculo.us?What's up with Prototype and script.aculo.us?
What's up with Prototype and script.aculo.us?Christophe Porteneuve
 
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseSingle Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseRalf Sternberg
 
JRuby Topic Maps
JRuby Topic MapsJRuby Topic Maps
JRuby Topic Mapstmra
 
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years laterSymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years laterHaehnchen
 
How to write not breakable unit tests
How to write not breakable unit testsHow to write not breakable unit tests
How to write not breakable unit testsRafal Ksiazek
 
Xopus Application Framework
Xopus Application FrameworkXopus Application Framework
Xopus Application FrameworkJady Yang
 
Object Oriented Programming for WordPress Plugin Development
Object Oriented Programming for WordPress Plugin DevelopmentObject Oriented Programming for WordPress Plugin Development
Object Oriented Programming for WordPress Plugin Developmentmtoppa
 
Debugging and Error handling
Debugging and Error handlingDebugging and Error handling
Debugging and Error handlingSuite Solutions
 
Streaming Topic Maps API
Streaming Topic Maps APIStreaming Topic Maps API
Streaming Topic Maps APItmra
 
Beijing Perl Workshop 2008 Hiveminder Secret Sauce
Beijing Perl Workshop 2008 Hiveminder Secret SauceBeijing Perl Workshop 2008 Hiveminder Secret Sauce
Beijing Perl Workshop 2008 Hiveminder Secret SauceJesse Vincent
 
Applets 101-fa06
Applets 101-fa06Applets 101-fa06
Applets 101-fa06nrayan
 
RMiller.FromMaxL.presentation
RMiller.FromMaxL.presentationRMiller.FromMaxL.presentation
RMiller.FromMaxL.presentationRandy Miller
 
Turbogears Presentation
Turbogears PresentationTurbogears Presentation
Turbogears Presentationdidip
 

Similaire à TMAPI 2.0 tutorial (20)

Writing Apps with HotCocoa and MacRuby
Writing Apps with HotCocoa and MacRubyWriting Apps with HotCocoa and MacRuby
Writing Apps with HotCocoa and MacRuby
 
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
 
Ruby Isn't Just About Rails
Ruby Isn't Just About RailsRuby Isn't Just About Rails
Ruby Isn't Just About Rails
 
What's up with Prototype and script.aculo.us?
What's up with Prototype and script.aculo.us?What's up with Prototype and script.aculo.us?
What's up with Prototype and script.aculo.us?
 
Kommons
KommonsKommons
Kommons
 
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseSingle Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
 
JRuby Topic Maps
JRuby Topic MapsJRuby Topic Maps
JRuby Topic Maps
 
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years laterSymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
 
How to write not breakable unit tests
How to write not breakable unit testsHow to write not breakable unit tests
How to write not breakable unit tests
 
Xopus Application Framework
Xopus Application FrameworkXopus Application Framework
Xopus Application Framework
 
Demystifying Maven
Demystifying MavenDemystifying Maven
Demystifying Maven
 
Object Oriented Programming for WordPress Plugin Development
Object Oriented Programming for WordPress Plugin DevelopmentObject Oriented Programming for WordPress Plugin Development
Object Oriented Programming for WordPress Plugin Development
 
A First Date With Scala
A First Date With ScalaA First Date With Scala
A First Date With Scala
 
Ontopia tutorial
Ontopia tutorialOntopia tutorial
Ontopia tutorial
 
Debugging and Error handling
Debugging and Error handlingDebugging and Error handling
Debugging and Error handling
 
Streaming Topic Maps API
Streaming Topic Maps APIStreaming Topic Maps API
Streaming Topic Maps API
 
Beijing Perl Workshop 2008 Hiveminder Secret Sauce
Beijing Perl Workshop 2008 Hiveminder Secret SauceBeijing Perl Workshop 2008 Hiveminder Secret Sauce
Beijing Perl Workshop 2008 Hiveminder Secret Sauce
 
Applets 101-fa06
Applets 101-fa06Applets 101-fa06
Applets 101-fa06
 
RMiller.FromMaxL.presentation
RMiller.FromMaxL.presentationRMiller.FromMaxL.presentation
RMiller.FromMaxL.presentation
 
Turbogears Presentation
Turbogears PresentationTurbogears Presentation
Turbogears Presentation
 

Plus de tmra

Topic Maps for improved access to and use of content in relational databases ...
Topic Maps for improved access to and use of content in relational databases ...Topic Maps for improved access to and use of content in relational databases ...
Topic Maps for improved access to and use of content in relational databases ...tmra
 
External Schema for Topic Map Database
External Schema for Topic Map DatabaseExternal Schema for Topic Map Database
External Schema for Topic Map Databasetmra
 
Weber 2010 brn
Weber 2010 brnWeber 2010 brn
Weber 2010 brntmra
 
Subject Headings make information to be topic maps
Subject Headings make information to be topic mapsSubject Headings make information to be topic maps
Subject Headings make information to be topic mapstmra
 
Inquiry Optimization Technique for a Topic Map Database
Inquiry Optimization Technique for a Topic Map DatabaseInquiry Optimization Technique for a Topic Map Database
Inquiry Optimization Technique for a Topic Map Databasetmra
 
Topic Merge Scenarios for Knowledge Federation
Topic Merge Scenarios for Knowledge FederationTopic Merge Scenarios for Knowledge Federation
Topic Merge Scenarios for Knowledge Federationtmra
 
JavaScript Topic Maps in server environments
JavaScript Topic Maps in server environmentsJavaScript Topic Maps in server environments
JavaScript Topic Maps in server environmentstmra
 
Modelling IMS QTI with Topic Maps
Modelling IMS QTI with Topic MapsModelling IMS QTI with Topic Maps
Modelling IMS QTI with Topic Mapstmra
 
Hatana - Virtual Topic Map Merging
Hatana - Virtual Topic Map MergingHatana - Virtual Topic Map Merging
Hatana - Virtual Topic Map Mergingtmra
 
Designing a gui_description_language_with_topic_maps
Designing a gui_description_language_with_topic_mapsDesigning a gui_description_language_with_topic_maps
Designing a gui_description_language_with_topic_mapstmra
 
Maiana - The social Topic Maps explorer
Maiana - The social Topic Maps explorerMaiana - The social Topic Maps explorer
Maiana - The social Topic Maps explorertmra
 
Tmra2010 matsuuraposter
Tmra2010 matsuuraposterTmra2010 matsuuraposter
Tmra2010 matsuurapostertmra
 
Automatic semantic interpretation of unstructured data for knowledge management
Automatic semantic interpretation of unstructured data for knowledge managementAutomatic semantic interpretation of unstructured data for knowledge management
Automatic semantic interpretation of unstructured data for knowledge managementtmra
 
Putting topic maps to rest.tmra2010
Putting topic maps to rest.tmra2010Putting topic maps to rest.tmra2010
Putting topic maps to rest.tmra2010tmra
 
Presentation final
Presentation finalPresentation final
Presentation finaltmra
 
Evaluation of Instances Asset in a Topic Maps-Based Ontology
Evaluation of Instances Asset in a Topic Maps-Based OntologyEvaluation of Instances Asset in a Topic Maps-Based Ontology
Evaluation of Instances Asset in a Topic Maps-Based Ontologytmra
 
Defining Domain-Specific Facets for Topic Maps With TMQL Path Expressions
Defining Domain-Specific Facets for Topic Maps With TMQL Path ExpressionsDefining Domain-Specific Facets for Topic Maps With TMQL Path Expressions
Defining Domain-Specific Facets for Topic Maps With TMQL Path Expressionstmra
 
Mappe1
Mappe1Mappe1
Mappe1tmra
 
Et Tu, Brute? Topic Maps and Discourse Semantics
Et Tu, Brute? Topic Maps and Discourse SemanticsEt Tu, Brute? Topic Maps and Discourse Semantics
Et Tu, Brute? Topic Maps and Discourse Semanticstmra
 
A PHP library for Ontopia-CMS Integration
A PHP library for Ontopia-CMS IntegrationA PHP library for Ontopia-CMS Integration
A PHP library for Ontopia-CMS Integrationtmra
 

Plus de tmra (20)

Topic Maps for improved access to and use of content in relational databases ...
Topic Maps for improved access to and use of content in relational databases ...Topic Maps for improved access to and use of content in relational databases ...
Topic Maps for improved access to and use of content in relational databases ...
 
External Schema for Topic Map Database
External Schema for Topic Map DatabaseExternal Schema for Topic Map Database
External Schema for Topic Map Database
 
Weber 2010 brn
Weber 2010 brnWeber 2010 brn
Weber 2010 brn
 
Subject Headings make information to be topic maps
Subject Headings make information to be topic mapsSubject Headings make information to be topic maps
Subject Headings make information to be topic maps
 
Inquiry Optimization Technique for a Topic Map Database
Inquiry Optimization Technique for a Topic Map DatabaseInquiry Optimization Technique for a Topic Map Database
Inquiry Optimization Technique for a Topic Map Database
 
Topic Merge Scenarios for Knowledge Federation
Topic Merge Scenarios for Knowledge FederationTopic Merge Scenarios for Knowledge Federation
Topic Merge Scenarios for Knowledge Federation
 
JavaScript Topic Maps in server environments
JavaScript Topic Maps in server environmentsJavaScript Topic Maps in server environments
JavaScript Topic Maps in server environments
 
Modelling IMS QTI with Topic Maps
Modelling IMS QTI with Topic MapsModelling IMS QTI with Topic Maps
Modelling IMS QTI with Topic Maps
 
Hatana - Virtual Topic Map Merging
Hatana - Virtual Topic Map MergingHatana - Virtual Topic Map Merging
Hatana - Virtual Topic Map Merging
 
Designing a gui_description_language_with_topic_maps
Designing a gui_description_language_with_topic_mapsDesigning a gui_description_language_with_topic_maps
Designing a gui_description_language_with_topic_maps
 
Maiana - The social Topic Maps explorer
Maiana - The social Topic Maps explorerMaiana - The social Topic Maps explorer
Maiana - The social Topic Maps explorer
 
Tmra2010 matsuuraposter
Tmra2010 matsuuraposterTmra2010 matsuuraposter
Tmra2010 matsuuraposter
 
Automatic semantic interpretation of unstructured data for knowledge management
Automatic semantic interpretation of unstructured data for knowledge managementAutomatic semantic interpretation of unstructured data for knowledge management
Automatic semantic interpretation of unstructured data for knowledge management
 
Putting topic maps to rest.tmra2010
Putting topic maps to rest.tmra2010Putting topic maps to rest.tmra2010
Putting topic maps to rest.tmra2010
 
Presentation final
Presentation finalPresentation final
Presentation final
 
Evaluation of Instances Asset in a Topic Maps-Based Ontology
Evaluation of Instances Asset in a Topic Maps-Based OntologyEvaluation of Instances Asset in a Topic Maps-Based Ontology
Evaluation of Instances Asset in a Topic Maps-Based Ontology
 
Defining Domain-Specific Facets for Topic Maps With TMQL Path Expressions
Defining Domain-Specific Facets for Topic Maps With TMQL Path ExpressionsDefining Domain-Specific Facets for Topic Maps With TMQL Path Expressions
Defining Domain-Specific Facets for Topic Maps With TMQL Path Expressions
 
Mappe1
Mappe1Mappe1
Mappe1
 
Et Tu, Brute? Topic Maps and Discourse Semantics
Et Tu, Brute? Topic Maps and Discourse SemanticsEt Tu, Brute? Topic Maps and Discourse Semantics
Et Tu, Brute? Topic Maps and Discourse Semantics
 
A PHP library for Ontopia-CMS Integration
A PHP library for Ontopia-CMS IntegrationA PHP library for Ontopia-CMS Integration
A PHP library for Ontopia-CMS Integration
 

Dernier

Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 

Dernier (20)

Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 

TMAPI 2.0 tutorial

  • 1. TMAPI 2.0 Lars Heuer and Johannes Schmidt
  • 2. Agenda • Let's introduce :) • Background o Purpose and history o The need for TMAPI 2.0 • Status of TMAPI 2.0 • Theoretical introduction into TMAPI (short) • Hands-on TMAPI 2.0 (let's focus on that) • Questions and feedback      Experience TMAPI 2.0 by trying it out :)
  • 3. Who will bore you the next 3h? ;) Johannes Schmidt Lars Heuer js@sixgroups.com heuer@semagia.com http://sixgroups.com/ http://www.semagia.com/ • Co-Creator TMAPI 2.0 • Member of TMAPI since (but no Java v1.0 Programmer ;) • Co-Creator of TMAPI 2.0 • Maintainer PHPTMAPI • Maintainer tinyTiM • Maintainer QuaaxTM 1.5/2.0 • Co-Editor CTM 1.0 (ISO 13250-6 - Compact Syntax)
  • 4. Purpose • Common API to work with topic maps • Topic Maps engine independent: Applications implemented against TMAPI can use any Topic Maps engine which implements TMAPI.  • De facto standard API - however outside a standards body
  • 5. Purpose • Provision of a set of Java interfaces • Provision of UML class diagrams used as boilerplate for the interfaces, and also for translations to other OO-languages • Provision of a test suite to ensure conformity
  • 6. History • TMAPI 1.0 o Released 2004/2005. o Abstracts from XTM 1.0 and implements some TMDM features, but is not completely TMDM compatible. o Supported by several Topic Maps engines (Open Source and commercial). o TM4L Editor switched from TM4J to TMAPI. o Ported to PHP5 (PHPTMAPI 1.0) and C# (state unknown).
  • 7. The need for TMAPI 2.0 • TMDM compatibility (and observance of TMDM constraints to some extent) • User friendliness • Convenience     Our TMRA 2008 paper describes the changes vs. TMAPI 1.0 in detail (TMAPI 2.0 comes with a raw enumeration).
  • 8. Status of TMAPI 2.0 • Currently Alpha o See http://www.tmapi.org/2.0/ • tinyTiM 2.0 the only engine which supports TMAPI 2.0 at the moment o See http://tinytim.sourceforge.net/ • PHPTMAPI 2.0: proposal published o UML class diagrams o Interfaces (in SVN) o API docs o See http://phptmapi.wiki.sourceforge.net/ • C# translation in the works (maybe Stefan can give us an update :)
  • 9. Introduction into TMAPI • Factories o TopicMapSystemFactory creates TopicMapSystems o TopicMapSystem creates TopicMap o TopicMap creates Topics/Associations o Topic create Occurrences/Names o Name creates Variants o Association creates Roles • Each parent creates its children, it is not possible to create a quot;detachedquot; topic name which is later added to a topic.
  • 10. Introduction into TMAPI • TopicMapSystemFactory Factory to create TopicMapSystems o Configure TopicMapSystems o Some features like quot;automergequot; (merge topics automatically and transparently for the user) are predefined by TMAPI. o Each Topic Maps engine may define a set of special features. o All TopicMapSystems created by the factory use the same configuration.
  • 11. Introduction into TMAPI • TopicMapSystem Repository of topic maps which holds a collection of topic maps o Allows retrieval of topic maps. o Allows the creation of topic maps (if the TopicMapSystem was not configured in read-only modus).
  • 12. Introduction into TMAPI • Construct The main interface from which all interfaces are derived; provides navigation to the constructs parent and manipulation of item identifiers. • TopicMap Main interface which provides access to topics, associations, and the indexes. • Topic o Occurrence o Name  Variant • Association o Role
  • 13. Introduction into TMAPI TMAPI 2.0 core (abbreviated UML class diagrams)
  • 14. Hands-on TMAPI 2.0 • Full experience: Java with tinyTiM 2.0 o Get it here: http://tinytim.sourceforge.net/ o Install: Put the TMAPI and tinyTiM jars in your classpath, ask Lars in case of problems. o Works in memory. • Limited experience*: PHP5 with a QuaaxTM prototype o Get it here: http://phptmapi.sourceforge.net/tmra/ (User: tmra, Password: tmapi) o Install: Have a look at the resource given above or ask Johannes. o Works on a MySQL database.   *PHPTMAPI 2.0 is really brand-new ;)
  • 15. Hands-on TMAPI -- API Docs • For all details have a look at the API docs o Java: http://www.tmapi.org/2.0/api/ o PHP: http://phptmapi.sourceforge.net/2.0/docs/     ... and we like questions :)
  • 16. Hands-on TMAPI -- TMSysFactory • Create a TopicMapSystemFactory o Java: TopicMapSystemFactory tmSysFactory =   TopicMapSystemFactory.newInstance(); o PHP: $tmSysFactory = TopicMapSystemFactory::newInstance(); • Configure the factory o Java: Skipped here, not necessary (for tinyTiM). o PHP: Skipped here, not implemented yet.
  • 17. Hands-on TMAPI -- TMSystem • Create a TopicMapSystem o Java: TopicMapSystem tmSys = tmSysFactory.newTopicMapSystem(); o PHP: $tmSys = $tmSysFactory->newTopicMapSystem();
  • 18. Hands-on TMAPI -- TopicMap • Create a topic map A TopicMap instance is simply a container for topics and associations o Java: TopicMap tm = tmSys.createTopicMap(quot;http://tmra.de/tmapi- tutorialquot;); o PHP: $tm = $tmSys->createTopicMap(quot;http://tmra.de/ tmapi-tutorialquot;);
  • 19. Hands-on TMAPI -- Topics • Topics are either created via a subject identifier, a subject locator, or an item identifier. • Creating a topic by a subject identifier: o Java: Locator sid = tm.createLocator(quot;http://en.wikipedia.org/John_Len nonquot;); Topic john = tm.createTopicBySubjectIdentifier(sid); o PHP: $john = $tm->createTopicBySubjectIdentifier (quot;http://en.wikipedia.org/John_Lennonquot;);
  • 20. Hands-on TMAPI -- Topics • Creating a topic by a subject locator: o Java: Locator slo =               tm.createLocator(quot;http://www.google.comquot;); Topic google = tm.createTopicBySubjectLocator(slo); o PHP: $slo = quot;http://www.google.comquot;; // or pass the string directly as parameter                           $google = $tm->createTopicBySubjectLocator($slo);
  • 21. Hands-on TMAPI -- Topics • Creating a topic by an item identifier: o Java: Locator iid = tm.createLocator(quot;http://www.example.org/map#ii d1quot;); Topic aTopic = tm.createTopicByIdentifier(iid); o PHP: Not yet implemented in the prototype.   • Second example, see next slide.
  • 22. Hands-on TMAPI -- Topics • Creating a topic by an automatically generated item identifier: o Java: Topic aTopic = tm.createTopic(); assert aTopic.getItemIdentifiers().size() == 2 o PHP: $aTopic = $tm->createTopic();   • The Topic Maps engine ensures that the topic will get an item identifier and takes care that this item identifier does not make the topic equal to another topic (at least in the topic map which generated that identifier).
  • 23. Hands-on TMAPI -- Topics • Using this method is not recommended! • The quot;createTopicBy...quot; methods may return an already existing topic. • If you try to create a topic with the item identifier quot;http://en.wikipedia.org/John_Lennonquot; and a topic with the same subject identifier exists, you'll get the already existing topic (the topic may get an additional item identifier if it does not exist yet).
  • 24. Hands-on TMAPI -- Topics • Rules: o BySubjectIdentifier/byItemIdentifier: If a topic with the specified subject identifier or an item identifier equals to the specified locator exists, return the existing topic. o BySubjectLocator: If a topic with the specified subject locator exists, return the existing topic.
  • 25. Hands-on TMAPI -- Topics Summary for creating topics • An explicit identity (subject identifier, subject locator, or item identifier) is preferred. Subject identifiers and subject locators are quot;strongquot; identities, while item identifiers are not. • Automatically generated item identifiers should be avoided since this feature is Topic Maps engine dependent and they are not necessarily globally unique (GUID). • Best practice: Use an explicit identity!
  • 26. Hands-on TMAPI -- Occurrences • First of all you need a topic to which you want to create occurrences (occurrences are always bound to a topic, you cannot detach/attach them). • Occurrences Occurrences have a value and a datatype o Java: Locator value =  tm.createLocator(quot;http://www.google.com/quot;); Occurrence occ = t.createOccurrence(website, value); // the occurrence will automatically have the datatype xsd:anyURI
  • 27. Hands-on TMAPI -- Occurrences • PHP: You have to define the datatype explicitly o $topic->createOccurrence($website, quot;http://www.google.com/quot;, VocabularyUtils::XSD_ANYURI);   VocabularyUtils::XSD_ANYURI =  quot;http://www.w3.org/2001/XMLSchema#anyURIquot;
  • 28. Hands-on TMAPI -- Names Creating  a name • Using the default name type o Java: Name name = john.createName(quot;John Lennonquot;); o PHP: $name = $john->createName(quot;John Lennonquot;); • Using an explicit name type o Java: Name forename = john.createName(forename, quot;Johnquot;); o PHP: $forename = $john->createTypedName ($forename, quot;Johnquot;);
  • 29. Hands-on TMAPI -- Associations Associations are created by a TopicMap instance, they are automatically added to the topic map • Java: o Association memberOf =                           tm.createAssociation(memberOfTopic); Role role = memberOf.createRole(member, john); // member: Type of the role // john: Role player • PHP: o $memberOf =                           $tm->createAssociation($memberOfTopic); $role = $memberOf->createRole($member, $john);
  • 30. Hands-on TMAPI -- Modelling Type- Instance Associations For type-instance relationships, the short-cut ● topic.addType(type); can be used. The Topic Maps engine decides if either an association is created or if the topic has a property which holds references to the types. Example: • Java: john.addType(person); • PHP: $john->addType($person);
  • 31. Questions so far? ... from now on it's your turn :)
  • 32. Hands-on TMAPI 2.0 • Create your own topic map: You should start with a conceptual model (Ontology), i.e. of this tutorial. o Create Topic Types (which are Topics), o Association Types (which are Topics), o Occurrence Types (which are Topics), o and Role Types (which are Topics too)*.   Example: Create quot;Tutorialquot; first before you create a quot;TMAPI Tutorialquot; :) *Usage of TopicMap.createTopicBySubjectIdentifier(IRI) is a good idea here.
  • 33. Hands-on TMAPI This could be an inspiration for usage of Types: http://www.ontopia.net/omnigator/models/topicmap_complete.jsp?tm=jill.xtm
  • 34. Hands-on TMAPI -- Reification • quot;The act of reification is the act of making a topic represent the subject of another topic map construct in the same topic map.quot; (TMDM) o Quite simple with TMAPI: setReifier(Topic reifier). o Retrieve the reifier: getReifier().
  • 35. Hands-on TMAPI -- Index • TMAPI 2.0 provides three indexes. o LiteralIndex: Retrieve constructs by their value and datatype. o ScopedIndex: Retrieve statements by their scope (and the statements' scopes). o TypeInstanceIndex: Retrieve constructs by their type (and the constructs' types). • Not yet available in the QuaaxTM prototype :(
  • 36. Questions and feedback  Do you have questions and/or feedback?
  • 37. References • TMAPI http://www.tmapi.org/ TMAPI 2.0 http://www.tmapi.org/2.0/ • TM4J TMAPI 1.0 implementation http://tm4j.sourceforge.net/ • tinyTiM TMAPI 1.0 / 2.0 implementation http://tinytim.sourceforge.net/ • TMDM Topic Maps – Data Model http://www.isotopicmaps.org/sam/sam-model/
  • 38. References • PHPTMAPI Port of TMAPI 1.0 / 2.0 to PHP5 http://sourceforge.net/phptmapi • QuaaxTM Topic Maps engine that implements PHPTMAPI http://quaaxtm.sourceforge.net/ • TMAPI 4 .NET Port of TMAPI 2.0 to C# http://sourceforge.net/projects/tmapinet • TM4L Editor Topic Maps editor using TMAPI 1.0 http://compsci.wssu.edu/iis/nsdl/download.html