W E B V E V E R I E T




JavaScript Topic Maps in
  server environments


    Jan Schreiber <jans@ravn.no>

             ...
Outline
                        • JavaScript
                        • The tmjs Topic Maps engine
                        ...
JavaScript
                        • JavaScript is LISP with a C-like syntax
                        • Virtually every per...
tmjs
                        • A Topic Maps engine
                        • Written in pure JavaScript
                  ...
tmjs
                        • Platform independent: All(iPhone &
                          browsers, mobile devices
     ...
Chaining

                        1 tm.createTopic().addSubjectIdentifier(foo).
                        2   createName('ba...
tmjs: Outlook
                        •   More import/export formats: XTM 2.0, CTM
                        •   Complete TM...
Use Case: A PSI Server


                        • Idea: Start the server with a Topic Map
                          and i...
• Screenshot node-psi-server


W E B V E V E R I E T


                                                       9
Server-side JavaScript


                        • 1996: Netscape releases LiveWire as
                          part of N...
Node
                        • A framework for low-level network
                          applications based on Google's ...
result = db_query(db, "SELECT * FROM topic");




W E B V E V E R I E T


                                                ...
db_query(db, "SELECT * FROM topic", callback);




W E B V E V E R I E T


                                               ...
db_query(db, "SELECT * FROM topic", callback);
       callback = function (err, result) {
                  // ...
       ...
1              var tm, servername;
 2              // assumes that the TopicMap object tm has been initialized and
 3     ...
Use Case: A PSI Server
               • More output formats: XHTML, JTM, XTM
               • Support for logging, caching...
PSI Server: Observations

                        • Easy to implement
                        • It’s really fast: 200+200m...
Summary & Outlook

                        • Server side Topic Maps with JavaScript:
                          possible!
 ...
What could it be good for?


                        • TMRAP, TM REST API
                        • SDshare
              ...
Questions?

                        Download tmjs now!
                        http://github.com/jansc/tmjs
              ...
Upcoming SlideShare
Loading in …5
×

JavaScript Topic Maps in server environments

1,497 views
1,434 views

Published on

Presention from the TMRA 2010 conference. Shows how server-side Topic Maps applications can be created with node and the JavaScript Topic Maps engine tmjs.

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

  • Be the first to like this

No Downloads
Views
Total views
1,497
On SlideShare
0
From Embeds
0
Number of Embeds
158
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

JavaScript Topic Maps in server environments

  1. 1. W E B V E V E R I E T JavaScript Topic Maps in server environments Jan Schreiber <jans@ravn.no> Ravn Webveveriet AS, 2010-10-01 1
  2. 2. Outline • JavaScript • The tmjs Topic Maps engine • Use Case: A PSI Server • Outlook W E B V E V E R I E T 2
  3. 3. JavaScript • JavaScript is LISP with a C-like syntax • Virtually every personal computer in the world has at least one JavaScript interpreter installed on it and in active use. W E B V E V E R I E T 3
  4. 4. tmjs • A Topic Maps engine • Written in pure JavaScript • Full TMDM including Variants • TMAPI 2.0-based • In-memory backend, JTM import/ export, experimental XTM 2.0 import (requires DOM) W E B V E V E R I E T 4
  5. 5. tmjs • Platform independent: All(iPhone & browsers, mobile devices modern Android), server-side JavaScript • Unit tests, CXTM tests (partly) & JSLint validating • Small changes to TMAPI due to the lack of method overloading • Syntactic sugar: Supports chaining of TMAPI calls W E B V E V E R I E T 5
  6. 6. Chaining 1 tm.createTopic().addSubjectIdentifier(foo). 2 createName('bar').getParent(). 3 createOccurrence(type,'baz'). 4 addScopingTopic(quux); W E B V E V E R I E T 6
  7. 7. tmjs: Outlook • More import/export formats: XTM 2.0, CTM • Complete TMAPI, add more tests, full CXTM • Persistence: • Web SQL Database backend • Persistent backend for Node (couchdb?) • Later: Query language W E B V E V E R I E T 7
  8. 8. Use Case: A PSI Server • Idea: Start the server with a Topic Map and it will serve information about all Subject Identifiers for a given domain W E B V E V E R I E T 8
  9. 9. • Screenshot node-psi-server W E B V E V E R I E T 9
  10. 10. Server-side JavaScript • 1996: Netscape releases LiveWire as part of Netscape Enterprise Server 2.0 • 2009: Ryan Dahl writes Node W E B V E V E R I E T 10
  11. 11. Node • A framework for low-level network applications based on Google's V8 engine • TCP, DNS and HTTP are first-class protocols • Event-based, asynchronous programming • All I/O is non-blocking W E B V E V E R I E T 11
  12. 12. result = db_query(db, "SELECT * FROM topic"); W E B V E V E R I E T 12
  13. 13. db_query(db, "SELECT * FROM topic", callback); W E B V E V E R I E T 13
  14. 14. db_query(db, "SELECT * FROM topic", callback); callback = function (err, result) { // ... } W E B V E V E R I E T 14
  15. 15. 1 var tm, servername; 2 // assumes that the TopicMap object tm has been initialized and 3 // the topic map in question has been imported successfuly. 4 // servername is set from a command line parameter 5 http.createServer(function (req, res) { 6 var url = 'http://'+servername+req.url, loc, topic; 7 loc = tm.createLocator(url); 8 topic = tm.getTopicBySubjectIdentifier(loc); 9 if (topic) { 10 res.writeHead(200, {'Content-Type': 'text/html'}); 11 // create a page with information about the PSI 12 } else { 13 // Not found: create a 404 response 14 } 15 res.close(); 16 }).listen(80); W E B V E V E R I E T 15
  16. 16. Use Case: A PSI Server • More output formats: XHTML, JTM, XTM • Support for logging, caching, templates • Configurable list of information elements that are included on generated pages (e.g. dc:description, supertype-subtype) • PSI black-listing • subj3ct.com integration W E B V E V E R I E T 16
  17. 17. PSI Server: Observations • Easy to implement • It’s really fast: 200+200ms to read the Opera topic map, 1ms to serve a PSI page • tmjs can be used on server and client side Reuse of application code W E B V E V E R I E T 17
  18. 18. Summary & Outlook • Server side Topic Maps with JavaScript: possible! • Asynchronous TMAPI? • In its current state maybe best suited for low-level applications W E B V E V E R I E T 18
  19. 19. What could it be good for? • TMRAP, TM REST API • SDshare • P2P applications • DNS servers W E B V E V E R I E T 19
  20. 20. Questions? Download tmjs now! http://github.com/jansc/tmjs Coming soon: http://github.com/jansc/node-psi-server W E B V E V E R I E T 20

×