TMAPI 2.0
         Topic Maps API 2.0


    Lars Heuer <heuer@semagia.com>
Johannes Schmidt <js@sixgroups.com>

     TMRA ...
Table of Contents
     Introduction
     Design Objectives
     Core Interfaces
     Details – Core
     Details – Index
 ...
Introduction
     TMAPI is a set of Java interfaces to interact with
     topic maps
     TMAPI makes applications Topic M...
Design Objectives
     Topic Maps – Data Model (TMDM) compatible
     (TMAPI 1.0 is not)
     Respect TMDM constraints to ...
Core Interfaces
     Construct
       Reifiable
       Typed
       Scoped
     DatatypeAware(Reifiable, Scoped)
     Topi...
Details – Topic Map
     Object / Topic lookup methods moved from
     the TopicsIndex to the TopicMap interface:
        ...
Details – Topics
     TMAPI 1.0: One method to create topics
     (createTopic  Topic without any identity)
     TMAPI 2.0...
Details – Topics
Create or reuse existing topic with a sid in TMAPI 1.0:
     TopicsIndex tIdx =
          (TopicsIndex) t...
Details – Topic Creation
Algorithm
                              createTopicBySubjectIdentifier




Lars Heuer · http://ww...
Details – Topic Creation
Algorithm
                              createTopicBySubjectIdentifier



               Exists a...
Details – Topic Creation
  Algorithm
                                createTopicBySubjectIdentifier



                 Ex...
Details – Topic Creation
  Algorithm
                                createTopicBySubjectIdentifier



                 Ex...
Details – Topic Creation
  Algorithm
                                createTopicBySubjectIdentifier



                 Ex...
Details – Topic Creation
  Algorithm
                                createTopicBySubjectIdentifier



                 Ex...
Details – Topics – Best
Practise
     If possible use an explicit identity (subject
     identifier, subject locator or it...
Details - Occurrences
     TMAPI 1.0: Untyped occurrences possible,
     only strings and locators are supported
     TMAP...
Details - Associations
     TMAPI 1.0: Untyped associations and roles
     without a type or player are allowed
     TMAPI...
Details - Scope
     TMAPI 1.0: quot;nullquot; represents the
     unconstrained scope in factory methods:
           crea...
Details – Index
     TMAPI 1.0: 8 indexes which implement a construct-centric view:
        TopicMapObjectsIndex
        S...
Details – Index
     TMAPI 1.0:
     TopicsIndex idx = (TopicsIndex)
                    tm.getHelperObject(TopicsIndex.cl...
Outlook
     Notifications
     Transactions
     Advanced filter API (XPath aka TMPath
     expressions are implemented b...
References
     TMAPI
     http://www.tmapi.org/
     TMAPI 2.0
     http://www.tmapi.org/2.0/
     tinyTiM
     TMAPI 1.0...
References
     TMAPI.NET (C#)
     http://sourceforge.net/project/tmapinet
     TMAPIX
     Utilities for TMAPI (Java)
  ...
Discussion

                                              Questions?

                                              Answer...
Upcoming SlideShare
Loading in...5
×

TMAPI 2.0

820

Published on

This talk introduces a new generation of the common Topic Maps API (TMAPI). It has evolved from version 1.0 and is now based on the meanwhile finalized Topic Maps Data Model (TMDM). A comprehensive developer experience allowed the design of a user-friendly API for Topic Maps application development independently of a specific Topic Maps processor.
Among TMDM compliance, the design objectives also covered the consideration of the TMDM constraints as well as developer convenience requirements, basic filtering and simplification. For more complex filter operations a filter language has been drafted.

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
820
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
25
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

TMAPI 2.0

  1. 1. TMAPI 2.0 Topic Maps API 2.0 Lars Heuer <heuer@semagia.com> Johannes Schmidt <js@sixgroups.com> TMRA 2008, Leipzig · 17.10.2008
  2. 2. Table of Contents Introduction Design Objectives Core Interfaces Details – Core Details – Index Questions / Answers Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 2 Johannes Schmidt · http://www.sixgroups.com
  3. 3. Introduction TMAPI is a set of Java interfaces to interact with topic maps TMAPI makes applications Topic Maps engine independent TMAPI 1.0 has been implemented by several Open Source and commercial Topic Maps engines TMAPI 1.0 has been ported to other programming languages Not designed by a standards body but a de-facto standard Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 3 Johannes Schmidt · http://www.sixgroups.com
  4. 4. Design Objectives Topic Maps – Data Model (TMDM) compatible (TMAPI 1.0 is not) Respect TMDM constraints to some extend (i.e. disallow quot;nullquot; in serveral places) Java 1.5 Userfriendly (depends on the perspective, though) More tests (TMAPI 1.0: 89 tests TMAPI 2.0: approx. 250 tests) Apply lessons learned from TMAPI 1.0 Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 4 Johannes Schmidt · http://www.sixgroups.com
  5. 5. Core Interfaces Construct Reifiable Typed Scoped DatatypeAware(Reifiable, Scoped) TopicMap(Reifiable) Topic(Construct) Association(Reifiable, Typed, Scoped) Role(Reifiable, Typed) Occurrence(Datatyped, Typed) Name(Typed, Scoped) Variant(Datatyped) Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 5 Johannes Schmidt · http://www.sixgroups.com
  6. 6. Details – Topic Map Object / Topic lookup methods moved from the TopicsIndex to the TopicMap interface: getConstructByItemIdentifier getTopicBySubjectIdentifier getTopicBySubjectLocator Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 6 Johannes Schmidt · http://www.sixgroups.com
  7. 7. Details – Topics TMAPI 1.0: One method to create topics (createTopic Topic without any identity) TMAPI 2.0: Four methods to create topics: createTopicBySubjectIdentifier createTopicBySubjectLocator createTopicByItemIdentifier createTopic ( Topic with an automatically generated item identifier) Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 7 Johannes Schmidt · http://www.sixgroups.com
  8. 8. Details – Topics Create or reuse existing topic with a sid in TMAPI 1.0: TopicsIndex tIdx = (TopicsIndex) tm.getHelperObject(TopicsIndex.class); if (!tIdx.isOpen()) { tIdx.open(); } if (!tIdx.getIndexFlags().isAutoUpdated()) { tIdx.reindex(); } Topic topic = tIdx.getTopicBySubjectIdentifier(sid); if (topic == null) { TopicMapObject tmo = tm.getObjectBySourceLocator(sid); if (tmo instanceof Topic) { topic = (Topic) tmo; } } if (topic == null) { topic = tm.createTopic(); topic.addSubjectIdentifier(sid); } Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 8 Johannes Schmidt · http://www.sixgroups.com
  9. 9. Details – Topic Creation Algorithm createTopicBySubjectIdentifier Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 9 Johannes Schmidt · http://www.sixgroups.com
  10. 10. Details – Topic Creation Algorithm createTopicBySubjectIdentifier Exists a topic with the specified subject identifier? Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 10 Johannes Schmidt · http://www.sixgroups.com
  11. 11. Details – Topic Creation Algorithm createTopicBySubjectIdentifier Exists a topic with the specified subject identifier? Yes Return existing topic Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 11 Johannes Schmidt · http://www.sixgroups.com
  12. 12. Details – Topic Creation Algorithm createTopicBySubjectIdentifier Exists a topic with the specified subject identifier? Yes No Return existing topic Exists a topic with an item identifier == specified subject identifier? Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 12 Johannes Schmidt · http://www.sixgroups.com
  13. 13. Details – Topic Creation Algorithm createTopicBySubjectIdentifier Exists a topic with the specified subject identifier? Yes No Return existing topic Exists a topic with an item identifier == specified subject identifier? Yes Add the subject identifier to the existing topic and return the topic Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 13 Johannes Schmidt · http://www.sixgroups.com
  14. 14. Details – Topic Creation Algorithm createTopicBySubjectIdentifier Exists a topic with the specified subject identifier? Yes No Return existing topic Exists a topic with an item identifier == specified subject identifier? No Yes Add the subject identifier to the Create a topic with the subject identifier existing topic and return the topic and return the topic Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 14 Johannes Schmidt · http://www.sixgroups.com
  15. 15. Details – Topics – Best Practise If possible use an explicit identity (subject identifier, subject locator or item identifier) createTopic() is implementation dependent and not reliable Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 15 Johannes Schmidt · http://www.sixgroups.com
  16. 16. Details - Occurrences TMAPI 1.0: Untyped occurrences possible, only strings and locators are supported TMAPI 2.0: Untyped occurrences are disallowed, any datatype possible (c.f. interface core.DatatypeAware) occ.setValue(1) xsd:int occ.setValue(quot;valuequot;) xsd:string occ.setValue(1.0F) xsd:float occ.setValue(quot;valuequot;, locator) datatype = locator Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 16 Johannes Schmidt · http://www.sixgroups.com
  17. 17. Details - Associations TMAPI 1.0: Untyped associations and roles without a type or player are allowed TMAPI 2.0: Untyped associations are disallowed, every role has a type and a player Caution: TMAPI 1.0: createAssociationRole(player, type) TMAPI 2.0: createRole(type, player) Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 17 Johannes Schmidt · http://www.sixgroups.com
  18. 18. Details - Scope TMAPI 1.0: quot;nullquot; represents the unconstrained scope in factory methods: createName(quot;The Beatlesquot;, null) TMAPI 2.0: If the scope is not specified, the statement is in the unconstrained scope (variable argument): createName(quot;The Beatlesquot;) createName(quot;Pilzköpfequot;, nickname, german) Scope definition works also for associations, occurrences and variants Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 18 Johannes Schmidt · http://www.sixgroups.com
  19. 19. Details – Index TMAPI 1.0: 8 indexes which implement a construct-centric view: TopicMapObjectsIndex ScopedObjectsIndex TopicsIndex TopicNamesIndex VariantsIndex OccurrencesIndex AssociationsIndex AssociationRolesIndex TMAPI 2.0: 3 indexes which implement a generalized view on a topic map: LiteralIndex (Occurrences, Names, Variants) ScopedIndex (Associations, Occurrences, Names, Variants) TypeInstanceIndex (Topics, Associations, Roles, Occurrences, Names) Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 19 Johannes Schmidt · http://www.sixgroups.com
  20. 20. Details – Index TMAPI 1.0: TopicsIndex idx = (TopicsIndex) tm.getHelperObject(TopicsIndex.class); (Exception handling omitted) TMAPI 2.0: TypeInstanceIndex idx = tm.getIndex(TypeInstanceIndex.class); (No checked exceptions) Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 20 Johannes Schmidt · http://www.sixgroups.com
  21. 21. Outlook Notifications Transactions Advanced filter API (XPath aka TMPath expressions are implemented by TMAPIX) Participate! http://www.tmapi.org/ Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 21 Johannes Schmidt · http://www.sixgroups.com
  22. 22. References TMAPI http://www.tmapi.org/ TMAPI 2.0 http://www.tmapi.org/2.0/ tinyTiM TMAPI 1.0 / TMAPI 2.0 Topic Maps engine http://tinytim.sourceforge.net/ PHPTMAPI http://phptmapi.sourceforge.net/ QuaaxTM PHPTMAPI 1.0 / PHPTMAPI 2.0 Topic Maps engine http://quaaxtm.sourceforge.net/ Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 22 Johannes Schmidt · http://www.sixgroups.com
  23. 23. References TMAPI.NET (C#) http://sourceforge.net/project/tmapinet TMAPIX Utilities for TMAPI (Java) http://tmapix.googlecode.com/ Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 23 Johannes Schmidt · http://www.sixgroups.com
  24. 24. Discussion Questions? Answers! ☺ Lars Heuer · http://www.semagia.com TMRA 2008, Leipzig · 17.10.2008 24 Johannes Schmidt · http://www.sixgroups.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×