Open source perks

With the move to GitHub, several perks of being an open source project came to light:


travis-mascot-200pxGitHub has a nice integration with Travis-CI, which offers free continuous integration for open source projects. Every push to a branch or pull-request branch can lead to a build and test of the project. The configuration of the build process is contained in the repository so that each branch may determine it’s own testing parameters.

We’ve enabled the Travis-CI functionality for the main Ontopia repository, and the results are publically available:

Screen Shot 2016-07-07 at 14.45.54

The automated building and testing will assist the developers with determining if branches or pull requests can be merged into the master branch or more work should be done first.


SyZuYA39_400x400Codacy offers code analysis and measurements in a cloud service model. These measures can uncover possible improvements of the project. Improvements such as coding style, performance and security threats.

As with Travis, use of Codacy is free for open source projects. The analysis and measurements of Ontopia are publically available.

Some of the issues Codacy reports are a good practice exercise for people that would like to contribute to the project without needed a full in-depth understanding of all the code. Feel free to open merge requests referencing the issues you resolve.

Ontopia has moved to GitHub

It might be old news to the members of the Ontopia mailinglist, but we kinda forgot to update the rest of the world. So here it is.

As Google announced to shut down GoogleCode back in March 2015, we set out to find a new home for the Ontopia code base. GoogleCode would go into read-only mode in August, so we had to find a new home before this happened or we would loose the ability to commit new changes to Ontopia. Continue reading Ontopia has moved to GitHub

Ontopia JDO

It is with great pleasure that we announce the next step in the Ontopia development, the Ontopia JDO project.

As we worked toward a release of Ontopia 5.3.1, we encountered the massive block of code that is Ontopia RDBMS backend. This huge block of extremely important code was developed as part of the OKS, before it was open sourced. As such, most of this code is now at least 6 years old, and the core code probably even older. We have come to understand the limitations of this code throughout the years, to name a few important ones:

  • Supported databases are limited
  • Optimization requires extensive knowledge of the code
  • Optimization is database dependent
  • Tracing and debugging is complicated
  • Full text search is complicated, and database dependent
  • TOLOG RDBMS is incomplete or broken
  • Adding use case oriented optimized SQL queries requires complex code hacking

When faced with these issues during real world projects, we set out to improve upon Ontopia. Soon thereafter we came to the conclusion that improving or changing the code would be a massive undertaking. So instead we choose to research new, yet proven, technologies that offer features that Ontopia requires.

JDO, which stands for Java Data Objects, is a specification of Java object persistence. It allows a domain model, represented by Pojo’s, to be mapped to a persistence store. JDO was initially designed in JSR 12 in 2002 and the last version (3.0) was released in 2010. JDO was not the only ORM technology we had a look at, but best suited the needs of Ontopia.

Because JDO is a JSR, several implementations exist. We choose to work with Datanucleus initially, as it is the reference implementation for the latest JDO specification and supports the largest number of data stores.

Here are some of the benefits we should be able to achieve with this project:

  • Many datastores: RDBMS (all?), Graph based (Neo4j!) , Document based (Mongo, …), Object based, web based.
  • External optimization: optimization is (mostly) part of the JDO abstraction layer, which means we won’t have to program it.
  • Use of open source community: JDO and Datanucleus are maintained by a large open source community, which means we get improvements on each new version.
  • Better integration: extending Ontopia’s datamodel with your own JDO persisted Pojo’s should now be possible.
  • Basic full-text searching for every datastore: The project provides a very basic full text search over JDO.
  • TOLOG RDBMS remake possible: the inner workings of tolog-rdbms creates JDO queries that are converted to SQL. This could now directly leverage JDO features.

Sadly, there is a downside. The RDBMS schema has changed. Although the schema closely resembles the Ontopia 5.x schema, it was impossible to fully reuse it. We plan to create a tool that can migrate from an existing RDBMS backend to a new JDO backend as optimized as possible to mitigate this issue.

Project status
The code committed to GitHub at the time of this post has been in development for about a year. It has been tested within the scope of Ontopia code, meaning all the backend tests in net.ontopia.topicmaps.core. Beyond these basic tests, Morpheus has tested the project in combination with existing frameworks and projects based on Ontopia. All these tests are now successful, which means the project is ready to be beta tested.

The project goes into beta testing with this post. We ask you, the Ontopia community, to test it in your projects and frameworks. We especially would like to see all the different datastores tested before we officially claim that Ontopia can be used with all stores. Do not hesitate to ask questions, report issues, or even better: create pull requests. In the coming days we will add known issues and todo’s to the issue tracker. See the README on GitHub to get started with ontopia-jdo.

The Ontopia committers.

David Damen becomes a committer


David Damen presenting Tropics


David Damen of Space Applications Services became an Ontopia committer today. David has been an active member of the Topic Maps community for a while, and right now he is working on Tropics, a web service interface to Ontopia, which he intends to add to the Ontopia sandbox in the near future. (He is on holiday at the moment, so it may take a while yet.)

We will return with more information on Tropics in the near future.

Ontopia 5.1.0 beta 1 released

We are proud to announce the first beta of Ontopia 5.1.0 today, with the following new features:

  • An API for automated classification, by Geir Ove Grønmo, Bouvet
  • tolog update support, by Lars Marius Garshol, Bouvet
  • Support for XTM 2.1 has been added by Lars Heuer
  • Support for JTM 1.0 has been added by Thomas Neidhart, SpaceApplications Services
  • The query plugin in Omnigator now supports pluggable query language implementation, thanks to Thomas Neidhart, SpaceApplications Services

In addition, two major changes were made to the core APIs:

  • The core API now uses generics, making it much easier to use, thanks to Quintin Siebers, Morpheus.
  • The TopicNameIF.getType() method can never return null any more, thanks to Thomas Neidhart, SpaceApplications Services, and Lars Marius Garshol, Bouvet.

For a more complete description, please see the what’s new document.

Thank you to all who contributed! Please test the beta thoroughly, and report any problems in the issue tracker.

Ontopia/Liferay integration

Yesterday Matthias Fischer of HTW Berlin became a new Ontopia commmitter. He is currently doing an internship at Bouvet where he is developing an integration between Ontopia and the Liferay CMS and portal. Once completed this integration will allow web content and wiki postings from Liferay to be described in a topic map inside Ontopia.

This is interesting because it will mean that anyone who wants to set up a Topic Maps-based portal will have a complete stack of tools for doing so using only open source software.

Currently, the only thing the integration does is to create (and update) topics in the topic map for objects created in Liferay. Specifically, web content, wiki, user, and community objects. Later stages will add further functionality, at which point we will be back with more information. In the meantime, you can check out the code in the sandbox.