This document describes what has changed in Ontopia between releases, both at a higher level, and in more detail.
5.3.0 2013-08-01
This release is purely a bug fix release.
We have fixed the following bugs in the Omnigator:
The following bugs have been fixed in the Navigator Framework:
The following bugs have been fixed in the Topic Map Engine:
In addition, NameIndexIF
has now been made auto-updating.
The following bugs have been fixed in the Query Engine:
This release is a bug fix release, released primarily to fix some embarrassing problems in the Omnigator. There are bug fixes in other parts of the OKS as well, however. The LTM Emacs mode is now distributed with the OKS, as is one additional topic map: support-kb.ltm
.
We are now bundling Tomcat 4.1.18 with the Omnigator, rather than 4.0.6, which we used for 1.4. The front page has been cleaned up a little, and a link to a new “Index of Individuals”, showing all the topics that are not typing topics, has been added to the topic map page. In addition, we have fixed the following bugs:
The following bugs have been fixed in the Navigator Framework:
tm:associated
gets input that does not only consist of topics.template:put
did not call BodyContent.clearBody().In addition the documentation has been improved in places.
The following bugs have been fixed in the Topic Map Engine:
In addition the documentation has been improved in places.
The following bugs have been fixed in the Query Engine:
In addition the documentation has been improved in places.
This release adds several major new features to the OKS, the most important of which are:
Each of these are described in more detail below. In addition, this version has a large number of bug fixes, as well as numerous minor improvements to the documentation.
A plug-in for providing feedback to Ontopia has been added to the Omnigator, there are now links to the topics that represent role types from the pages about association types, subject addresses are being displayed, and it is now distributed with Tomcat 4.1. The following bugs have been fixed:
The most important changes to the Navigator Framework functionality are:
logic:if
tag can now be used inside logic:set
since it will now pass values produced in the then/else branches upwards. This makes it possible to write much more powerful recursive functions.tm:tolog
tag now has an attribute select
for producing a collection of values rather than a map.logic:set
tag will now produce an empty collection if it has no content, thus making it easier to produce empty collections.tm:associated
tag has a new attribute produce
, which can be used to tell it to produce associations rather than topics.tm:subjectAddress
tag has been added.In addition, a number of bugs have been fixed in the Navigator Framework:
tm:name
tag would crash if given the wrong kind of collection in its basenameScope
attribute.tm:name
tag produced collections containing null
when used on a topic which had no name. This would cause problems for other tags.The following change has been made to the topic map engine:
SubjectUtils
class has been deprecated since it was badly broken (it did not distinguish between subject addresses and subject indicators), and because it did not perform any useful function.The only changes to the topic map engine in this release are the following bug fixes:
SubjectIdentityDecider
did not distinguish subject addresses from subject identifiers. Nor did any of the many classes that used it.]]
.In this version a number of problems in the documentation of the OSL schema language have been fixed, and some bugs in the tools themselves have been fixed.
]]
.A new implementation of the tolog query language designed especially for the RDBMS backend has been added. This implementation converts tolog queries directly to SQL queries, which are then executed by the RDBMS. This makes evaluation of tolog queries enormously much faster when running on the RDBMS backend.
The net.ontopia.topicmaps.query.utils.QueryUtils
class has also been added to the API. Developers are recommended to use this class to create instances of the QueryProcessorIF
interface, as this class will create different processors depending on what topic map implementation is used.
In addition, a method for loading rules from Java Reader
objects has been added to the QueryProcessorIF
.
The only changes to the RDBMS backend have been a tiny optimization of some queries, and a single bug fix:
This release is primarily a bug fix release, though some optimizations have also been performed, and some APIs have been cleaned up. In addition, there are some minor improvements here and there.
A number of minor adjustments have been made in the Omnigator’s display. In addition, the free download now has an additional capability.
The tag libraries have seen some internal changes, and a couple of usability improvements.
tm:tolog
tag now has a select
attribute that allows it to produce a collection of topics rather than maps.logic:set
tag has been changed, so that if empty it will still set the named variable, but set it to the empty collection. (In previous versions the variable was not set at all.)net.ontopia.topicmaps.nav2.core.NavigatorApplicationIF.getUserStoreRegistry()
has been added and replaces the now deprecated getStoreRegistry()
and getTransactionUser()
methods. This change renders the transaction user used by the navigator application transparent.net.ontopia.topicmaps.nav2.core.NavigatorTagException
and derived exception classes now support nested exceptions, i.e. the cause.net.ontopia.topicmaps.nav2.impl.basic.AbstractFunction
, which is a common base class for user defined taglib functions. See the logic:externalFunction
in the taglib reference for more information.net.ontopia.topicmaps.nav2.core.FunctionIF
: getName()
, getReturnVariableName()
, and call(PageContext, TagSupport)
.net.ontopia.topicmaps.nav2.core.FunctionIF.execute(PageContext, TagSupport)
, which now takes over the role of executing user defined functions. Existing functions will continue to work provided they subclass AbstractFunction
.net.ontopia.topicmaps.nav2.core.NavigatorPageIF.registerFunction(String, FunctionIF)
, which replaces the now deprecated registerFunction(FunctionIF)
method.The changes to the engine mainly consist in bug fixes, optimizations, and minor API improvements.
UserStoreRegistry
class was added to make it easier to use the StoreRegistry
in situations where there was only a single transaction user.NullResolvingExternalReferenceHandler
was added, as a default reference handler that does not resolve any external references.TopicMapStoreIF.delete()
, which lets you delete a topic map from the store. Note that the topic map must be empty, ie. not contain any topics, associations, or facets, before it can be deleted.net.ontopia.topicmaps.entry.UserStoreRegistry
, a wrapper class for StoreRegistry
instances and a single transaction user.net.ontopia.topicmaps.query.core.QueryResultIF.close()
which lets query results release its underlying resources.net.ontopia.topicmaps.query.utils.QueryUtils.getQueryProcessor(TopicMapIF)
, which makes it possible to get a query processor optimized for the given topic map.RDBMSTopicMapReference.delete()
now delegates to RDBMSTopicMapStore.delete()
, which allows TopicMapIF instances to be deleted if they contain no data.RDBMSTopicMapStore.getBaseAddress()
was wrong. This has now been fixed. The correct syntax is ‘x-tm:rdbms:12345’, where 12345 is the id of the topic map.net.ontopia.topicmaps.impl.rdbms.RDBMSSingleTopicMapSource
, which lets you reference individual RDBMS topic maps.This release is almost purely a bugfix release. It corrects a bug in the test suite, as well as an important bug in the RDBMS backend. We recommend that RDBMS users upgrade. Other users need not bother.
The functionality has been extended/changed in the following ways:
logic:context
tag.getTopicMapById(Object txnuser, String topicmapId)
method on NavigatorApplicationIF
has been deprecated. It will eventually be removed.getTopicMapRefId
method on NavigatorApplicationIF
has been added.There has been one API change; a new constructor for the URILocator
class has been added: URILocator(File file)
.
The following bugs were fixed:
EncryptionWriter
, an internal class used only for building releases, caused the test suite to fail on Windows and on platforms where the default encoding was not ISO 8859-1. This class has now been replaced by one which does not have this problem.importInto
method in XTMTopicMapReader
and LTMTopicMapReader
have been fixed.The following bugs have been fixed:
queries.xml
, which caused all such lookups to fail with PostgreSQL databases. Subject address lookups had the same problem and failed with all databases. This is a serious bug, and has been fixed in this release. Upgrades are recommended.Previous versions shipped with a built-in license key that would expire 90 days after the version was built. In version 1.3.2 this is different. The software comes with no default license key, and will not run before it gets one. Read section 3.2 of the install guide to see how the software finds its license key.
Some new features have been added, as listed below. Note also that the interpretation of XTM documents has changed, as described in Topic Map Engine.
The functionality has been extended/changed in the following ways:
output:id
tag has been added. This tag makes it possible for web applications to produce stable links. This is related to bug #515.In addition, some reference diagrams have been added to the tag library documentation, to make it easier to see how to traverse topic map information using the tag libraries.
A number of bugs have also been fixed:
output:treediagram
tag did not use the user context filter when labelling nodes in the tree.tm:occurrences
tag accepted illegal values in the type
attribute.As part of the fix to bug #523 the behaviour of the XTM importer with respect to entities has changed. In earlier versions, one could refer from tm.xtm
to the topic foo
in the external entity tm.ent
using #foo
, but now it is necessary to use URIs of the form tm.ent#foo
. Relative URIs inside tm.ent
will now be resolved relative to the URI of that entity, rather than relative to the URI of the document entity as before. We realize that this may break existing documents, but the XML Base specification is very clear on what the correct behaviour is in this case.
Other improvements are:
OntopiaRuntimeException
now provides more information, which leads to better error messages in a number of situations.XTMContentHandler
has been optimized somewhat, resulting in faster XTM imports. The exact speed-up depends on the topic map in question, but on average imports seem to be about 15% faster.There have also been a number of API changes:
TopicMapBuilderIF
interface has two new methods for creating topics, which allow a single topic type or a collection of topic types to be added to the topic directly.net.ontopia.topicmaps.entry
package has been considerably reworked and expanded, making it much more powerful and usable than it was before.DefaultTopicMapSource
class now has methods for adding and removing topic map references. The TopicMapReferenceIF
has a number of new methods added to it, making it considerably more powerful than it was before. The same applies to TopicMapSourceIF
. The StoreFactoryReference
and StoreRegistry
classes and the TopicMapRepositoryIF
interface have been added.TopicStringifiers
utility class now has a method that lets the user specify desired base name and variant name scope.The following bugs were fixed:
xml:base
attributes caused XTM loading to fail.tm-sources.xml
.#MERGEMAP
not quoted.The only change in this version is that the command-line LuceneIndexer
tool now supports the use of x-tm:rdbms
URIs to refer to topic maps stored in the RDBMS backend. This means it can be used to index RDBMS topic maps.
In this release, the only change was a bug fix:
The documentation of the player
element type in OSL was extended somewhat. The only other change was a bug fix:
Two new command-line utilities were added in this version: net.ontopia.topicmaps.cmdlineutils.rdbms.RDBMSImport
and net.ontopia.topicmaps.cmdlineutils.rdbms.RDBMSExport
. These allow users to import and export topic maps into and out of the RDBMS backend from the command-line.
A minor optimization of the lookup queries was made for the PostgreSQL RDBMS server.
Otherwise, the major change was the introduction of support for virtual collections. What this means is when calling say getTopics()
on TopicMapIF
the topics will only be loaded as needed. This ensures that the JVM does not run out on memory when methods that return large numbers of objects are called. This change fixed bugs 507 and 509.
Some new features have been added or changed:
The following bug was fixed:
The behaviour of one tag has changed:
The following bugs were fixed:
The following bugs were fixed:
New features:
The following bugs were fixed:
Changes:
function
” elements can now have return values. This can be specified using the “return
” attribute. The attribute should contain the name of a context variable whose value is to be returned. See bug #336.The following bugs were fixed:
framework:setcontext
would throw a NullPointerException
when there was no user object in the session.logic:if
would silently accept testing on undefined variables. It now throws an error in this case.logic:foreach
would throw a NullPointerException
when there was no user object in the session.logic:set
” tag didn’t take the user context into account when sorting.Notable changes in this release are:
${basedir}/utils/ltmfix.py
). Usage: python ltmfix.py <oldfile> <newfile>
net.ontopia.topicmaps.utils.ImportExportUtils
, because ISO recently renamed its old HyTime-based topic maps syntax to HyTM. See bug 419.text/plain
content type. See bug 355.ReificationUtils
class has two new methods: getReifyingTopics
and getReifiedObjects
.AssociationBuilder
class now has new methods for building ternary associations.OntopiaRuntimeException
has a new method getCause
, which replaces the now deprecated getException
, in order to be more in line with JDK 1.4 exceptions.TopicMapBuilderIF
has a new method makeAssociationRole
, which can also set the player of the role.The following bugs were fixed:
MergeUtils
.shouldMerge
method was inaccurate. This has now been cleared up.Changes:
org.apache.lucene.store.Directory
directly. This will for example let you to create and search indexes in-memory using the RAMDirectory
class.org.apache.lucene.analysis.standard.StandardAnalyzer
, replacing StopAnalyzer
.LuceneIndexer
and LuceneSearcher
for more information.The following bugs have been fixed:
The following bugs have been fixed:
The main change in the navigator in this version is that we now bundle it with Tomcat 4.0, something that caused us to upgrade certain parts of the code. In addition we have added some tags, and fixed a number of bugs.
A number of changes were made in the navigator framework itself:
<framework:setcontext>
and <framework:getcontext>
tags were added.getModule
and getRootNode
in net.ontopia.topicmaps.nav2.core.FunctionIF
were deprecated.The following bugs were fixed in the 1.2.5 version of the Navigator Framework:
<tm:superclasses>
and <tm:subclasses>
tags.sequence-first
and sequence-last
variables were not set correctly by the <logic:foreach>
tag.In addition, some bugs were also fixed in the Omnigator:
There were few significant changes in the engine in this version.
getSubclasses(class, level)
and getSuperclasses(class, level)
methods on net.ontopia.topicmaps.utils.TypeHierarchyUtils
.getBaseAddress
and setBaseAddress
methods on the net.ontopia.topicmaps.entry.AbstractPathTopicMapSource
class.Three bugs were fixed in this release:
The following bugs have been fixed:
The following public class has been added::
The following bug has been fixed:
This release has seen a number of minor improvements in the navigator framework. The changes in the tag libraries are:
In addition, the navigator developer’s guide has been extended with more detailed information on how to use the tm:lookup tag.
This release was primarily made to satisfy customer requests for functionality in the full-text integration. Changes in the engine are limited to a few new method, and a minor extension to the engine developer’s guide.
The following methods has been added:
The following features has been added:
The following constructors has been added - all to make it possible to pass topic map store properties as a Map instance:
This release adds some new tags, and fixes a large number of bugs. The changes in the tag libraries are:
The following bugs were fixed in the Navigator Framework in this release:
The following bugs were fixed in the Omnigator in this release:
The following method has been added:
One old bug has been fixed:
The following features has been added:
Changes in the database schema:
TM_BASE_NAME.value
to TM_BASE_NAME.content
TM_VARIANT_NAME.value
to TM_VARIANT_NAME.content
TM_OCCURRENCE.value
to TM_OCCURRENCE.content
This release adds some new tags, and fixes a large number of bugs. The changes in the tag libraries are:
DeciderIF
and not just NavigatorDeciderIF
.The following bugs were fixed in the Navigator Framework in this release:
The following bugs were fixed in the Omnigator in this release:
The following method has been added:
Added the framework:response JSP tag, which sets response headers according to its attribute values or the application defaults.
Version 1.2 of the Ontopia Navigator Framework and the Ontopia Omnigator is a complete rewrite of the entire navigator framework, and also of the Omnigator, which has now been implemented using the new framework. The old navigator is still included in the distribution, but the documentation has been taken out.
We have replaced the old tag libraries with a completely new set of tag libraries, which are designed according to different principles. We think that the new tag libraries are enormously much easier to learn than the previous ones, and that they are also much more flexible. The Omnigator has been completely re-implemented (making the current version the fifth implementation from scratch) using the new tag libraries.
Since the entire navigator package has been entirely replaced by a new package there is no list of changes. Note that we expect changes to the navigator from this point on to be backwards-compatible, except where current features are marked as experimental in the documentation.
There were few changes in this new release. Some new functionality has been added, and some problems have been fixed, but in general very little has happened with the engine.
Two improvements have been made:
Four new classes have been added:
Only one bugs were fixed in this release:
topicMap
element causes NullPointerException
s.Reviewed the classes in package nav.utils.comparators; BaseNameComparator deprecated, NameComparator takes sort variant into account if available.
nav.context.UserFilterContextStore extended to also store variant name scoping themes (basides base name scope)
Occurrence.toString() now prints contents of inline occurrences.
CollectionUtils.getRandom() now delivers a really random entry.
Four bugs have been fixed:
A new plug-in has been added: the “LTM add” plug-in, which lets you add content to already loaded topic maps using LTM syntax.
A part of the documentation relating to how connect the navigator to the RDBMS backend was updated.
The LTMTopicMapReader
class now also implements the TopicMapImporterIF
interface.
The NameGrabber
class can now grab names appearing in a specific scope defined by a collection of topics.
Some problems with the test suite, both on Windows and generally, have been fixed.
Two bugs have been fixed:
The major change in this release is that we have upgraded the bundled version of tomcat, closing a security hole. Other than that the main changes are bug fixes.
ConfigReader
class has been improved to make it much more robust in cases where files are missing, configuration settings are missing or configuration files are screwed up.Only very minor changes have been made to the engine. These are:
Since version 1.1 the code of the Navigator Framework has been further improved through optimizations, some internal refactoring of the code, and also a number of bug fixes. The result is a version of the framework that is decidedly more mature and performs better. In particular, loading topic maps is now substantially faster than in previous versions.
In addition to the improvements to the framework, the Omnigator has been revisited and its user interface further improved. Some bugs have also been fixed in the Omnigator, making it able to handle even more topic maps.
This release also contains substantially improved and extended documentation compared to the 1.0.x releases.
The main improvements, however, fall in the category of extended functionality. The following are the main extensions:
The log4j package used by the engine to provide logging of actions has been upgraded from version 1.0.4 to version 1.1.3, which has given better performance in some cases.
The application.xml
file has been extended to allow users to specify the default model, view, and skin. It is also possible to extend the lists of models and views. Skins are now found by scanning a specified directory for CSS stylesheets.
The superTypes
tag now has an excludeTypes
argument in the args
attribute, which can be used to keep the types of the current topic out of the list of supertypes.
The following new tags have been added:
See The Ontopia Navigator Tag Library Reference for more information on these tags.
In general, the changes to the Topic Map Engine itself have not been very substantial. The main changes have been made externally, such as the addition of an RDBMS backend, modifications to the Navigator, integration of the Fulltext Search capability, and so on.
A number of optimizations have been done, however, resulting in markedly improved performance for some operations, like importing XML topic maps. A number of minor bugs have also been fixed, and XML import is now more robust, and also gives better error messages than before.
The URILocator
class has been rewritten from scratch. The original was based on the java.net.URL
, which meant that it couldn’t handle non-standard URI protocols or characters in URIs that were not in the platform default character set. It was also too slow. The new implementation solves all these problems.
The engine now has native support for the textual LTM topic map format (described in a separate technology note), which means that LTM files can now be imported directly into the object model. This support is found in the net.ontopia.topicmaps.utils.ltm
package.
The log4j package used by the engine to provide logging of actions has been upgraded from version 1.0.4 to version 1.1.3, which has given better performance in some cases.
The test suite has been extended with about 150 new test cases, making it substantially more comprehensive.
The main API changes have been in the net.ontopia.topicmaps.utils
package, where the changes listed below have been made. Some methods have also been deprecated and added; see the javadoc for these. Generally the API changes have been quite limited.
NameGrabber
class in the package. This is a generally useful class used to pick out the in some sense most appropriate name from a topic.TopicCharacteristicsGrabbers
class as a generalization of DisplayNameGrabber
. DisplayNameGrabber
was deprecated accordingly.UnconstrainedScopeDecider
class as an easy way to make other scope deciders accept all objects in the unconstrained scope.