Introducing Ontopia REST

It is with great joy that we announce a new addition to the Ontopia framework: Ontopia REST. This new module aims to provide a complete REST implementation for core Ontopia functionality. The module is loosely based on the work David Damen did in the Tropics sandbox project. As such it also uses the well known and often used Restlet Java framework.


The goal of this new module is two-fold:

  • To provide developers new ways to use the power of Ontopia, without the need for in-depth knowledge of the full Ontopia code
  • To work towards replacing deprecated and antiquated modules such as
    • Webeditor framework
    • TMRAP
    • Vizigator
    • Navigator framework
    • Omnigator

Where the first goal requires only an Ontopia release to realize, the second goal will be an undertaking of its own.


A short summary of functionality included:

  • Getting, adding, changing and removing all Topic Map constructs
  • Communication mainly focussed on JSON, by leveraging Jackson
  • XTM, CTM, LTM and TMXML exposing of full Topic Map
  • XTM and TMXML exposing of topic fragments
  • Paging on collection requests
  • Exposing methods in indexes such as ClassInstanceIndexIF and SearcherIF


The module that was added to the Ontopia source contains a big part of the functionality envisioned. A large test suite has been set up to cover all the implemented functionality, containing close to 600 tests. However, there is still work to be done:

  • Documentation
  • TOLOG integration
  • Extensibility
  • Dedicated clients (javascript, java, …)

For this last point we ask you for help. If you are an Ontopia enthusiast that has experience in creating REST clients and that wants to help us out, please let us know!

How to get it

Ontopia REST will be added to the next major release of Ontopia. You can build it from source if you would like to use or test it before the release. You can find the source in the ontopia-rest directory in the master branch.

Ontopia 5.0.0 enabled a new tolog optimizer by default, a move we knew risked causing difficulties for customers. One customer (NRK/Skole) has reported that they suspect this change caused problems for their application following the upgrade.

It is possible to control which optimizers are turned on and off in queries by including a comment in a special syntax. Unfortunately, in order for NRK to turn off the new optimizer in their application, they need to add that OPTION string to every single query in their application, since in 5.0.0 there is no way to set the option globally.

To avoid this, revision 450 implements a file called This is a normal Java properties file, loaded from the classpath. In the new version, options in the query take precedence over options in, which again take precedence over the defaults.

This means you can now control properties globally for your application, should you wish to. If there is no everything will work as before.