Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
 
ActiveTM A Topic Maps – Object Mapper Benjamin Bock TMRA 2008 Leipzig, 2008-10-17
Schedule <ul><li>What was? </li></ul><ul><li>What is? </li></ul><ul><li>What will be? </li></ul>
What we have <ul><li>TMDM </li></ul><ul><li>TMAPI (old and new) </li></ul><ul><li>TMO </li></ul><ul><li>BSCPL </li></ul><u...
The Challenge <ul><li>TMDM offers ontological flexibility </li></ul><ul><li>TMAPI provides interface to TMDM </li></ul><ul...
 
What has been done before? <ul><li>Most of us were just using some TMAPI-like interface </li></ul><ul><li>NetworkedPlanet ...
What are others doing? <ul><li>Holidays </li></ul><ul><li>Traveling </li></ul><ul><li>Object-Relational Mapping </li></ul>...
<ul><li>Every programming problem can be solved with another layer of abstraction, except the problem of too many layers o...
What we need
 
 
 
 
Schedule <ul><li>What was? </li></ul><ul><li>What is? </li></ul><ul><li>What will be? </li></ul>
Domain Modeling <ul><li>investigate the domain of the customer </li></ul><ul><li>find out what is important for the use ca...
After modeling... <ul><li>ideally, you should have some administrative CRUD interface now </li></ul><ul><li>add domain-spe...
ActiveTM <ul><li>ActiveTMML </li></ul><ul><ul><li>the modeling language </li></ul></ul><ul><li>ActiveTM </li></ul><ul><ul>...
What does it look like? <ul><li>class  Person < ActiveTM::Base </li></ul><ul><li>topic_map  &quot;http://psi.example.com/&...
How is it used? <ul><li>p = Person.create( &quot;johndoe&quot; ) </li></ul><ul><li>p.firstname =  &quot;John&quot; </li></...
Can I use it? <ul><li>No. </li></ul><ul><li>Not yet. </li></ul><ul><li>Sorry. </li></ul>
Schedule <ul><li>What was? </li></ul><ul><li>What is? </li></ul><ul><li>What will be? </li></ul>
What will be? <ul><li>depends on what we do... </li></ul>
What we do <ul><li>write research proposal </li></ul><ul><li>do market research </li></ul><ul><li>do interviews </li></ul>...
<ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li><...
<ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li><...
 
 
What we do <ul><li>create domain-specific portals </li></ul>
 
What we do <ul><li>create domain-specific portals </li></ul><ul><li>using context-specific  Shapes </li></ul>
 
What we do <ul><li>create domain-specific portals </li></ul><ul><li>using context-specific  Shapes </li></ul><ul><li>gener...
 
What we do <ul><li>create domain-specific portals </li></ul><ul><li>using context-specific  Shapes </li></ul><ul><li>gener...
 
What we doWhat will be? <ul><li>It‘s already in  production  (sort of...) </li></ul><ul><li>It‘s not pure Topic Maps, yet ...
Schedule <ul><li>What was? </li></ul><ul><li>What is? </li></ul><ul><li>What will be? </li></ul>
 
kthxbai! <ul><li>Images: bigfoto.com </li></ul>
<ul><li>kthxbai </li></ul><ul><li>Variation of ‘kthxbye’ – the internet bastardization of “OK, thank you, goodbye”. </li><...
Upcoming SlideShare
Loading in …5
×

ActiveTM - A Topic Maps - Object Mapper

1,245 views

Published on

Currently, the most common way to programmatically access Topic Maps data is the use of a Topic Maps API, like TMAPI. Another approach, besides the use of a query language like TMQL, is the encapsulation of the Topic Maps related code in domain-specific model classes. This concept is similar to object-relational mapping (ORM) which encapsulates access to a relational database inside the model classes. These techniques decouple the data store specific code from the business logic. For ORM, there are several prevalent design patterns, most notable the Active Record pattern by Fowler. For Topic Maps, no such pattern is established. This paper introduces Active Topic Maps, a pattern for topic maps -- object mapping, the domain-specific language ActiveTMML to define such a mapping and a prototypical implementation, called ActiveTM. ActiveTM is based on Ruby Topic Maps and also supports the generation of web-formulars based on ActiveTMML definitions. This full-featured software stack greatly improves the development productivity of Topic Maps based portals compared to other solutions.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

ActiveTM - A Topic Maps - Object Mapper

  1. 2. ActiveTM A Topic Maps – Object Mapper Benjamin Bock TMRA 2008 Leipzig, 2008-10-17
  2. 3. Schedule <ul><li>What was? </li></ul><ul><li>What is? </li></ul><ul><li>What will be? </li></ul>
  3. 4. What we have <ul><li>TMDM </li></ul><ul><li>TMAPI (old and new) </li></ul><ul><li>TMO </li></ul><ul><li>BSCPL </li></ul><ul><li>AR </li></ul>
  4. 5. The Challenge <ul><li>TMDM offers ontological flexibility </li></ul><ul><li>TMAPI provides interface to TMDM </li></ul><ul><li>It’s not domain-specific </li></ul><ul><li>We need to get closer to the business </li></ul><ul><li>Current development approaches </li></ul><ul><li>are too slow </li></ul>
  5. 7. What has been done before? <ul><li>Most of us were just using some TMAPI-like interface </li></ul><ul><li>NetworkedPlanet made Topic Map Objects </li></ul><ul><li>Bogachev had some concepts... </li></ul><ul><li> ...but did not implement them  </li></ul>
  6. 8. What are others doing? <ul><li>Holidays </li></ul><ul><li>Traveling </li></ul><ul><li>Object-Relational Mapping </li></ul><ul><ul><li>Active Record </li></ul></ul><ul><li>Throw more programmers at the problem (and that doesn‘t scale) </li></ul><ul><li>We have a problem </li></ul>
  7. 9. <ul><li>Every programming problem can be solved with another layer of abstraction, except the problem of too many layers of abstraction. </li></ul>“ ” Source: documentation of Ick, http://ick.rubyforge.org/
  8. 10. What we need
  9. 15. Schedule <ul><li>What was? </li></ul><ul><li>What is? </li></ul><ul><li>What will be? </li></ul>
  10. 16. Domain Modeling <ul><li>investigate the domain of the customer </li></ul><ul><li>find out what is important for the use case </li></ul><ul><li>define domain model by stating </li></ul><ul><ul><li>all subject types </li></ul></ul><ul><ul><li>their characteristics </li></ul></ul><ul><ul><li>and associations to other subjects </li></ul></ul>
  11. 17. After modeling... <ul><li>ideally, you should have some administrative CRUD interface now </li></ul><ul><li>add domain-specific shapes for the end-user portal </li></ul><ul><li>[Not covered here: the dynamic perspective] </li></ul>
  12. 18. ActiveTM <ul><li>ActiveTMML </li></ul><ul><ul><li>the modeling language </li></ul></ul><ul><li>ActiveTM </li></ul><ul><ul><li>a prototypical implementation </li></ul></ul><ul><ul><li>using Ruby and RTM </li></ul></ul><ul><li>Some assorted scripts which generate </li></ul><ul><ul><li>Migrations, AR-Models, ... </li></ul></ul>
  13. 19. What does it look like? <ul><li>class Person < ActiveTM::Base </li></ul><ul><li>topic_map &quot;http://psi.example.com/&quot; </li></ul><ul><li>psi &quot;http://psi.example.com/ontology/person&quot; </li></ul><ul><li>name :firstname </li></ul><ul><li>names :middlenames </li></ul><ul><li>name :lastname </li></ul><ul><li>occurrence :age , :datatype => &quot;xsd:integer&quot; </li></ul><ul><li>has_one :country , &quot;inhabitant&quot; , &quot;country-inhabitant&quot; , :class => :Country </li></ul><ul><li>def fullname </li></ul><ul><li>&quot;#{ firstname } #{ lastname }&quot; </li></ul><ul><li>end </li></ul><ul><li>end </li></ul>
  14. 20. How is it used? <ul><li>p = Person.create( &quot;johndoe&quot; ) </li></ul><ul><li>p.firstname = &quot;John&quot; </li></ul><ul><li>p.add_middlename &quot;George&quot; </li></ul><ul><li>p.lastname = &quot;Doe&quot; </li></ul><ul><li>p.age = 25 </li></ul><ul><li>p.save </li></ul>
  15. 21. Can I use it? <ul><li>No. </li></ul><ul><li>Not yet. </li></ul><ul><li>Sorry. </li></ul>
  16. 22. Schedule <ul><li>What was? </li></ul><ul><li>What is? </li></ul><ul><li>What will be? </li></ul>
  17. 23. What will be? <ul><li>depends on what we do... </li></ul>
  18. 24. What we do <ul><li>write research proposal </li></ul><ul><li>do market research </li></ul><ul><li>do interviews </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul>We‘re about here
  19. 25. <ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul>
  20. 26. <ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul><ul><li>write research proposal </li></ul>
  21. 29. What we do <ul><li>create domain-specific portals </li></ul>
  22. 31. What we do <ul><li>create domain-specific portals </li></ul><ul><li>using context-specific Shapes </li></ul>
  23. 33. What we do <ul><li>create domain-specific portals </li></ul><ul><li>using context-specific Shapes </li></ul><ul><li>generate administration interfaces </li></ul>
  24. 35. What we do <ul><li>create domain-specific portals </li></ul><ul><li>using context-specific Shapes </li></ul><ul><li>generate administration interfaces </li></ul><ul><li>using just the list of characteristics we want to have in list, show, and edit-view </li></ul>
  25. 37. What we doWhat will be? <ul><li>It‘s already in production (sort of...) </li></ul><ul><li>It‘s not pure Topic Maps, yet </li></ul><ul><li>But we‘re working on it </li></ul>
  26. 38. Schedule <ul><li>What was? </li></ul><ul><li>What is? </li></ul><ul><li>What will be? </li></ul>
  27. 40. kthxbai! <ul><li>Images: bigfoto.com </li></ul>
  28. 41. <ul><li>kthxbai </li></ul><ul><li>Variation of ‘kthxbye’ – the internet bastardization of “OK, thank you, goodbye”. </li></ul><ul><li>source: </li></ul><ul><li>http://www.urbandictionary.com/ </li></ul><ul><li>see also: </li></ul><ul><li>http://icanhascheezburger.com/ </li></ul>Images: bigfoto.com

×