|
This document describes what has changed in the Ontopia Knowledge Suite between releases, both at a higher level, and in more detail.
This release contains a major upgrade of Ontopoly, the Topic Maps editor. The internals of the editor has to a major extent been rewritten and modularized. Most of the old functionality is still there, and we have also added a lot new features:
The ontology model used by the editor is now represented in a way that allows it to be edited by Ontopoly itself. All editing of topic maps data, including the Ontopoly schema, now happen through the same editor components. The rationale for doing this has been to make it easier to extend the editor and repurpose its components in new contexts. Improving the embeddability of the editor has been an important goal of this release.
Fields are now first class citizens, and this makes it possible to say things about them. The fields are now represented as topics in the ontology model. This makes the model a lot more flexible as one can now say things about the fields and ask questions about them more easily.
Support for field views has been added. This lets you assign a field to one or more views, so that if you edit a topic in a particular view, only the fields declared on the topic type in that view are shown. This can be specified on the "Part of views" field on the name field, identity field, occurrence field, or role field topics.
One can now customize how a field is rendered in the different views, e.g. it can be read-only in one view, but editable in another. Links to topics can be traversable in some views, not not others, and so on. This can be specified on the "View mode" field on the name field, identity field, occurrence field, or role field topics. The available options are "Embedded", "Hidden", "Not traversable", and "Read-only".
Topics in association fields can now be edited in embedded mode. This lets you edit the referenced topics on the same page as the current one. There are no restrictions on how many nested embedded topics there can be. This can be configured per field and view. This feature has been used extensively in the Ontopoly ontology editor. All the grey boxes with borders are actually embedded field values, and thus topics in the topic map.
Given a field in a particular view, it is possible to specify the view referenced by the links to other topics. This allows one to change the view as the user navigates from topic to topic in the editor. This is specified through the "Value view" field on the role field topic.
Reordering fields in the topic type fields editor is now done through drag-and-drop.
Binary association field values are now sortable. The user can reorder field values using drag-and-drop. This can be enabled by checking the "Sortable" field on the role field topic.
One can now specify the create and selection policies on association fields. This lets one restrict how topics are selected for the field, and also how they are created and deleted. This is done through the "Edit modes" field on the role field topic. The options are "Existing values only", "New values only", "No edit", "Normal", "Owned values"
One can now define what happens when a new player topic is created on a field. This is done through the "Create actions" field on the role field topic. The options are: "Edit new topic in popup window", "Go to new topic", and "None".
It is possible to fully customize what topic types one can select or create instances of in a given context for a given field. This is done through the "Players query", "Players search query", and "Players types query" fields on the role field topic.
Other minor changes in this release are:
Ordering by tolog variable that contains objects of different types will now order topics relatively by name, the same behavour as when ordering a topic-only variable. The old behavior in this case was to order by object id. This has been done to reduce the confusion that occurs when topics suddenly appear unordered even though one said that they should be ordered.
The tolog query tracer is now properly thread safe and will keep a query trace stack per thread. This prevents multiple threads to interfere with each others query traces.
jgroups-all.jar has been upgraded to the JGroups 2.6.10.merge release.
This release fixes several bugs and adds support for importing CTM files (ISO 13250-6: CTM (Compact Notation)). The following bugs have been fixed:
Bug #1963: TMXMLWriter does not seem to support multityped topics.
Bug #2161: Broken encoding when exporting from Ontopoly
Bug #2162: Ontopoly User Guide: broken link
Bug #2167: MergeUtils overwrites existing topic map reifier
Bug #2168: Merging causes "Cannot reassign object" error
Bug #2171: Symmetric association types broken
Bug #2173: Instances tab should be default
Bug #2175: IndexOutOfBoundsException on association type config
Bug #2178: Multiple changes to same topic not handled correctly
This release is a security release.
There is a security hole in earlier releases that made it possible to upload web archive files (.war) files remotely. Please upgrade to releases 3.4.7 or 4.0.4 as these do not have this problem.
As an alternative to upgrading one can delete the directory $OKS_HOME/apache-tomcat/server/webapps/manager and the files $OKS_HOME/apache-tomcat/conf/Catalina/localhost/manager.xml and $OKS_HOME/apache-tomcat/conf/tomcat-users.xml before restarting the Apache Tomcat server.
Bug #2166: Tomcat allows remote exceution of arbitrary code
This release is a bug fix release.
Bug #2146: Symmetric checkbox is disabled on unary association
Bug #2147: Omnigator export plug-in exports topic maps with the name null.xml
Bug #2149: Ordering by multi-typed variables fails with ClassCastException
Bug #2150: jing.jar is broken on Java 6, MacOSX
Bug #2151: TopicIF.remove() does not remove scoped objects
Bug #2152: Oracle Text full-text query fails because of datatype issue
Bug #2158: Oracle CLOB indexes does not work properly
Bug #2160: Negation fails with a NullPointerException
Apache Tomcat has been upgraded to version 5.5.27.
This release is a bug fix release.
Bug #2110: Vizlet "further-associations boxes" not displayed when Untyped topics filtered out
Bug #2134: Selections on export screen not respected
Bug #2135: Default focus on instance page
Bug #2136: Modal browse page and InstanceTypesPage not hierarchical
Bug #2137: Enter keypress should trigger search button
Bug #2138: Omnigator Edit plug-in pointed to old Ontopoly
Bug #2140: Incorrect display of image fields in read-only mode
Bug #2141: LTMTopicMapWriter does not export external occurrences correctly
Bug #2142: Should not be able to create instances of read-only topic types
Bug #2143: Read-only association type not respected on instance page
Bug #2144: Vizlet cannot display rdbms topics without identifiers
Bug #2145: ClassCastException thrown when retrieving large read-only occurrence value
A new feature in Ontopoly is that the create button now opens the new topic in a modal window. This was done to prevent navigating away from the current topic.
Note that the backport-util-concurrent.jar jar-file has been added to the distribution, so an upgrade of an OKS application must include this file.
This release is a bug fix release.
Bug #2127: Stack overflow in snapshot code
Bug #2128: Invalid action in old Ontopoly instance
Bug #2129: applications.xml is mandatory
Bug #2130: Ontopoly throws exception when association type has no roles
Bug #2131: Dynamic occurrence predicate filters by xsd:string and xsd:anyURI datatypes
Bug #2132: Value predicate returns values of datatype xsd:anyURI
Bug #2133: No match for association field
This is a major new release. The main changes are complete support for the TMDM and XTM 2.0 specifications, clustering support and an Ontopoly reimplementation. Note that there are also changes made to the public APIs that are not backward compatible. See below for more information on how to handle this.
Other than the changes described below all other existing components of the OKS should continue to work like before.
As the new TMDM support required substantial API changes this release does not guarantee backward compatibility. This means that existing applications that use the Java APIs must be recompiled before deployed with OKS 4.0.
Because the RDBMS database schema contains a lot of changes existing topic maps must be exported from the old schema and reimported into the new schema. Use the XTM 1.0 format to do this. (If you're upgrading from the 4.0 beta release you'll have to upgrade the database schema before using the final release.)
The OKS now requires Java 1.4 or newer.
OKS now fully supports the standards ISO 13250-2: Topic Maps - Data Model (TMDM), ISO 13250-3: Topic Maps - XML Syntax (XTM 2.0), and ISO 13250-4: CXTM (Canonicalization).
The OKS can now be clustered. It uses JGroups to notify members in the cluster about cache invalidation events. This allows different OKS instances accessing the same topic map to be run on multiple nodes in a cluster. Web-Editor locks can be clustered with Terracotta. See the The RDBMS Backend Connector - Installation Guide and The Web Editor Framework - Developer's Guide documents for more information on how to set it up.
Ontopoly has been reimplemented on top of the Apache Wicket framework, a component framework. The new version is more interactive as it uses AJAX technology to update parts of the user-interface instead of rerendering the page on every change. All changes made through the interface are immediately reflected on the server-side, so the old "Confirm" and "Reset" buttons are now history. The main rationale for reimplementing Ontopoly has been to make it more flexible and extensible. The old version used JSP and became difficult to maintain. New features are: support for HTML and image occurrence datatypes and that instances can be turned into types and vice-versa. Note that the user guide is not yet up to date with the new user interface.
XTM 2.0 import and export support has been added. XTM import will auto-detect the version used, and will support both versions transparently. XTM export defaults to XTM 2.0.
Support for datatypes on variant names and occurrences has been added. The datatype can now be specified when the value is being set. Any datatype can be used in the model, but note that few datatypes will not be explicitly supported by all Topic Maps software. API methods that refer to String and LocatorIF, but specifies no datatype, uses the datatypes http://www.w3.org/2001/XMLSchema#string and http://www.w3.org/2001/XMLSchema#anyURI respectively.
The most common data types can be found as constants in the DataTypes class.
DB2TM now supports arbitrary datatypes.
Occurrences and variant names can now have values of arbitrary length. Use the OccurrenceIF.setReader(Reader, long, LocatorIF) and VariantNameIF.setReader(Reader, long, LocatorIF) methods to set really long values. Binary values will have to be string encoded, e.g. using Base64.
The NameIndexIF index has been updated to support variants and their datatypes.
The OccurrenceIndexIF index has been updated to support occurrence datatypes.
The TopicMapBuilderIF interface has been changed so that invalid objects cannot be constructed. This was done as the TMDM specification states that partial objects are not valid. See the javadoc API documentation for more information.
The TopicMapBuilderIF and mutable metods in the object model now perform rigorous checks to verify that object models don't get polluted by cross-topic map references. Also, removed objects cannot be reattached to properties in the object model. In practice this new behaviour should prevent a whole series of possible bug scenarios.
The ReifiableIF interface has been added and objects that can be reified now implements this interface. Reification is now explicit in the object model. The old implicit reification (matching item identifiers and subject identifiers) is not explictly supported, except in XTM 1.0 import and export, which will translate between the new and old refication models. Use the TopicIF.getReified() method to see which object a topic reifies.
All LocatorIFs are now restricted to be of notation URI. The object model will throw a ConstraintViolationException if a non-URI locator is used. Other locator notations should be represented as datatypes instead.
Source locators are now called item identifiers in the model.
Subject addresses are now called subject locators in the model. Topics can now have multiple subject locators. The ConflictingSubjectHandlerIF interface has been removed because of this.
The BaseNameIF interface has been renamed to TopicNameIF. All methods using the name 'base name' has been changed accordingly.
AssociationRoleIF.setPlayer(TopicIF), TypedIF.setType(TopicIF) (not TopicNameIF) and the value setter methods on TopicNameIF, VariantNameIF and OccurrenceIF does not support null values and datatypes. Note that the XTM 1.0 and LTM importer will create a topic with the PSI http://psi.ontopia.net/xtm/1.0/null-topic to represent null values.
The new method TMObjectIF.remove() replaces the old TopicMapIF.removeTopic(TopicIF), TopicMapIF.removeAssociation(AssociationIF), TopicIF.removeBaseName(BaseNameIF), TopicIF.removeOccurrenceIF(OccurrenceIF), TopicNameIF.remove and VariantName(VariantNameIF) methods.
TopicMapIF.clear() replaces DeletionUtils.clearTopicMap(TopicMapIF).
The tolog query language will continue to work as before. There are no changes to the public interface. The datatype predicate has been added to allow one to query on the datatype of variants and occurrences.
Added method AssociationBuilder.makeAssociation(TopicIF, TopicIF, TopicIF, TopicIF) for creating associations with four roles.
The RDBMS database schema has been updated to support the new object model. Note that you will have to transision between the new and old schemas by exporting and importing the topic maps.
The HyTM format is no longer supported.
Facets, facet values, mnemonics and effective scope are no longer part of the topic map engine model as these features are no longer part of the Topic Maps standards. They are also not seen as neccessary for the development of Topic Maps, hence their removal from the software.
The MultiTypedIF interface has been removed as it was considered superflous.
Most methods and classes that were marked as deprecated in earlier releases have been removed from the distribution. Make sure that you don't use any of the remaining once as these may be removed at a later time.
The TopicMapTransactionIF interface has been removed as all the useful methods have been moved to either TopicMapStoreIF and TopicMapIF.
The IndexManagerIF interface has been removed. Use the TopicMapIF.getIndex(String) method to retrieve the indexes instead. As all indexes are automatically kept up to date automatically the old interface was superflous.
The IndexIF interface is still there, but now only works as a marker interface as the old methods have been removed.
The TopicMapFactoryIF interface has been removed and replaced by the modified TopicMapBuilderIF interface.
The class DeletionUtils has been removed as the methods TMObjectIF.remove() and TopicMapIF.clear() replaces it.
The class ReificationUtils has been removed as the method TopicIF.getReified() and the ReifiableIF interface replaces it.
The LocatorIndexIF index has been removed. It is replaced by methods in NameIndexIF and OccurrenceIndexIF.
Support for the Topic Naming Constraint has been removed.
TopicMapIF.getObjectByItemIdentifier(LocatorIF) replaces TopicMapIF.getObjectBySourceLocator(LocatorIF).
TopicMapIF.getTopicBySubjectLocator(LocatorIF) replaces TopicMapIF.getTopicBySubject(LocatorIF).
TopicMapIF.getTopicBySubjectIdentifier(LocatorIF) replaces TopicMapIF.getTopicByIndicator(LocatorIF).
TMObjectIF.getItemIdentifiers(), TMObjectIF.addItemIdentifier(LocatorIF) and TMObjectIF.removeItemIdentifier(LocatorIF) replaces TMObjectIF.getSourceLocators(), TMObjectIF.addSourceLocator(LocatorIF) and TMObjectIF.removeSourceLocator(LocatorIF).
TopicIF.getSubjectLocators(), TopicIF.addSubjectLocator(LocatorIF), TopicIF.removeSubjectLocator(LocatorIF) replaces TopicIF.getSubject() and TopicIF.setSubject(LocatorIF).
TopicIF.getSubjectIdentifiers(), TopicIF.addSubjectIdentifier(LocatorIF) and TopicIF.removeSubjectIdentifier(LocatorIF) replaces TopicIF.getSubjectIndicators(), TopicIF.addSubjectIndicator(Locator) and TopicIF.removeSubjectIndicator(LocatorIF).
Bug fixes:
Bug #2120: Ordering by length of a string causes exception
Bug #2123: NullPointerException in comparison query
The Web Editor framework actions have seen a few changes because of the changes to the object model. The changes are:
AddExtOccurrence: the type parameter is now required.
AddIntOccurrence: the type parameter is now required.
RemoveType: now only works with TopicNameIF objects.
SetPlayer: the player parameter is now required.
This release is a bug fix release.
If you get the following error message when starting one of the web applications, then you must remove the DOCTYPE declaration from the top of the actions.xml file.
org.xml.sax.SAXParseException: Relative URI "actionConfig.dtd"; can not be resolved without a base URI.
This error occurs because of the XML parser cannot retrieve the DTD through the class loader.
The following change has been made:
Bug #1962: Reification support not implemented in TMXMLWriter.
The following change has been made:
Bug #2117: Cannot remove role field with interface control not set
The following change has been made:
Bug #1403: Visualization of n-ary associations not intuitive
The following change has been made:
The resources pointed to by the log4j_config, app_config and action_config web.xml context parameters will be attempted loaded through the class loader if not found on the file system. One can also use the file: and classpath: URI schemes directly.
Module files referred to from <logic:include> will be loaded through the class loader if found there. Otherwise they will be loaded through the file system as before.
The following change has been made:
<tolog:foreach> tags failed on weblogic container when nested three or more levels. This has now been fixed.
The following change has been made:
The SQL statement used for full-text searches on MySQL was semantically incorrect and caused an incorrect result to be returned.
This release is a bug fix release.
The following change has been made:
Bug #2111: Images in the documentation did not show up in Internet Explorer
The following change has been made:
The query processor will now write warnings as stack traces to the log4j log if the time and memory spent executing a query exceed 3 seconds or 5 MB. This is done in the DEBUG logging level.
The following changes have been made:
Bug #2035: The link button did not work with URLs containing ampersands.
Bug #2036: Instances of abstract topic types can now been seen.
Bug #2111: Some of the sample topic maps were missing hierarchical declarations.
Bug #2114: Topic maps with no name did not show up on start page.
The following changes have been made:
Improved the performance of the tolog predicates direct-instance-of($X,foo) and instance-of($X,foo). This was done by using a less expensive SQL query.
The RDBMSPatternSingleTopicMapSource now returns empty list of references instead of a collection with a null element when no topic map was found.
This release is a primarily a bug fix release, but it also introduces a much requested extension to the event model in the topic map engine.
The following changes have been made:
The Topic Maps engine now has support for topic modification events. The TopicMapListenerIF interface now has a new method called objectModified(TMObjectIF) which will be called when a topic has been modified.
A base topic map listener class called AbstractTopicMapListener has been introduced. This abstract class contains default implementations of all the callback methods. The class was primarily introduced so that listener implementations extending it can continue to work even though new methods get added to the listener interface in the future.
The omnigator, manage and i18n web applications was updated to use the new tag library URIs. This means that they will no longer use the .tld files in the WEB-INF/jsp directories.
The following bugs have been fixed:
The create button was duplicated on each row on fields with repeated values. This was changed so that the create button now only shows up on the last row.
Fixed bug that caused create buttons to show up even though hideCreateButtons property was set.
Specified the max-width CSS property on drop-down lists to 500px to prevent very wide pages.
Fixed bug that caused the last association in a many-cardinality field to be replaced when selecting a topic through the search or browse popup windows. The correct behaviour is to instead add a new association.
Bug #2080: Illegal occurrence fields cannot be deleted.
The following bugs have been fixed:
Improved presentation performance by changing one of the tolog queries used by the implementation. The user-interface should now be much more responsive.
Fixed bug that caused association types to not be shown on subtypes of the type that declared the association field.
The following bugs have been fixed:
Bug #2076: Graphs do not draw correctly when double click operation is done on nodes.
Bug #2106: Runtime Exception message on Java console in Vizlet
This release is a bug fix release.
The following bugs have been fixed:
Bug #2101: JSP compile error on Manage page
The following bugs have been fixed:
Bug #2045: Create type and instance buttons on topic type config are hidden if the topic type is locked
The following constructors of XTMTopicMapWriter have been changed so that they are now declared to throw IOException: XTMTopicMapWriter(File file, String encoding) and XTMTopicMapWriter(Writer writer, String encoding). Note that this may cause compilation errors.
The following bugs have been fixed:
Bug #2098: Writers close streams passed in from outside
The following bugs have been fixed:
Bug #2102: Incorrect type inferencing in comparison predicates
The experimental RDBMSPatternSingleTopicMapSource class was added in the net.ontopia.topicmaps.impl.rdbms package. This source can be used to swap topic maps used by an implementation at runtime.
The --title and --comment options for setting the title and comments of a topic map were added to the RDBMSImport command-line utility.
This is a bug fix release. If you are using Ontopoly then it is important that you do an upgrade as this release fixes a serious problem with character encoding of form data in Ontopoly. This release includes a few more bug fixes as well.
The following bugs have been fixed:
Bug #2096: Ontopoly obfuscates Unicode characters.
Bug #2094: Export plugin closes JSP output stream closed too early.
The following bugs have been fixed:
Bug #2094: Export plugin closes JSP output stream closed too early.
The following bugs and improvements have been made:
Bug #2095: MergeUtils does not replace name types.
MergeUtils did not always compare name objects correctly. This could lead to duplicate names in some situations.
Added TopicMapSourceIF.supportsDelete() method, which must be true for it to be valid to call TopicMapReferenceIF.delete(). This replaces the old deleteFiles property on topic maps sources.
Added TopicMapRepositoryIF.createStore(String, boolean) as a convenience method.
TopicMapSynchronizer class no longer produces duplicate characteristics on synchronized topics.
The main change in this version of the OKS is various upgrades to Ontopoly, especially the improved locking support, and the new approach to sharing topic maps between web applications.
There is also a new OKS distribution, called Ontopoly Runtime, which is essentially OKS Samplers with the RDBMS backend and support for authentication. This means that the new distribution can be used by customers which want to use Ontopoly to create topic maps without developing new custom applications. The price also reflects this. See the OKS price list for more information.
The following improvements have been made:
Some changes have been made to the Ontopoly schema. The new schema version is 1.2, so Ontopoly will ask you to upgrade your existing topic maps.
Users can now manually unlock topics locked by other users, and they can see who has locked the topic and when, making it easier to decide if they can safely unlock the topic.
Ontopoly will now automatically unlock the currently edited topic in many more cases than it did previously. It is no longer necessary to submit the form to unlock a topic; just following normal links will also unlock the current topic.
Ontopoly now displays a formatting hint for date values, to make it easier for users to remember what the date format is.
The instance editing page now has a "Copy" button for creating an identical copy of the current topic. This can be convenient when creating many similar topics.
It is now possible to specify whether the search dialog used for finding topics to create new associations should open in search mode or browse mode.
The default locale used by the web application is now en instead of relying on the fallback locale given by the web browser.
The following improvements have been made:
A new topic map index plug-in has been added, so that there is now always a link back to the topic map index page from all other pages.
The Plug-ins plug-in now displays the plug-ins menu (yes, it is true).
The recognition of compound terms (terms consisting of more than one word, like "Topic Maps") has been improved, as has the scoring of these terms.
The following bugs have been fixed:
Bug #2082: Norwegian stop words with special characters not recognized
The Navigator Framework has been changed to use a new and much simpler API for sharing topic maps between applications. Please see the Navigator Framework Configuration Guide for details. The API has also been simplified, and a number of classes made INTERNAL.
The following bugs have been fixed:
The JAAS topic maps module was missing some prefix declarations in one of its tolog queries, causing it to throw an exception in some situations as the query was sensitive to the base address of the topic map used.
The JNDI lookup of shared topic maps on OC4J was broken.
The readonly attribute has been introduced on many tags to allow applications to control whether or not forms and form controls should be read only.
The following improvements have been made:
A new class called TopicMaps has been added to the net.ontopia.topicmaps.entry package. This class can be used to access topic maps via tm-sources.xml files in a simple and straightforward way. Please see the javadoc and the Navigator Framework Configuration Guide for details.
The XTMFragmentExporter class is now PUBLIC.
The XMLConfigSource class (and effectively tm-sources-xml) now uses <repository> as the document element as this is more consistent with the naming of the topic maps repository. See the included tm-sources.xml for an example. The old syntax is still supported.
The following bugs have been fixed:
Bug #2031: Exporting and reimporting via XTM breaks reification
The performance of the Vizlet has been improved substantially by changing how the Vizlet loads Topic Maps fragments from the server. The result is less network traffic and a more responsive Vizlet.
The following bugs have been fixed:
There was a bug in the test suite that failed on the first attempt, but worked on subsequent invocations. This was caused by a directory not having been created initially.
Bug #2081: Go to topic does not work on topics with special characters in name
Bug #2073: Node cannot be expanded after collapse
The source-locator predicate has been renamed to item-identifier. The old predicate will continue to work, but it is no longer documented.
The following improvements have been made:
The database properties file will now be attempted loaded from the class loader if not found on the file system. Loading files through the class loader is much more portable and is recommended for most appliations. In practice this means that the database properties file can be copied to one of the directories on the CLASSPATH, and that the reference to it can be just the name of the file.
The connection URLs in the database properties files db.sqlserver.props and db.mysql.props have been updated to reflect the latest JDBC driver releases.
Most of the more rare and mostly unused properties have been removed from the default database properties files. Note that the properties can still be used; they are just not included in the files, so that the default values is used instead.
The RDBMS Backend Installation Guide now mentions that the Row Versioning and Snapshot Isloation features must be enabled on Microsoft SQL Server 2005. These two features are essential for good performance in multi-user applications.
The columns TM_OCCURRENCE.content, TM_BASE_NAME.content, TM_VARIANT_NAME.content and TM_TOPIC_MAP.comments have been extended from 2000 to 4000 characters on Microsoft SQL Server 2005 as this is the maximum length supported on nvarchar columns.
The following improvements have been made:
DB2TM now looks up relations qualified by schema name before using the default schema in JDBC datasources. This change adds support for explicit database schemas.
The main new addition in this release is the autoclassification module, which is still experimental. For more about this, see section 14.9. There are also some new features in the Vizigator and a new string module in tolog, but beyond that the changes are mostly bug fixes.
The following changes have been made to the Engine:
commons-dbcp.jar has been upgraded to version 1.2.2.
All methods relating to nested transactions have been deprecated as none of the current Topic Maps implementations actually support nested transactions.
Bug #2034: jena.jar includes log4j.properties
The following changes have been made to the Query Engine:
tolog has been extended with a module containing predicates for string operations. This provides operations for working with substrings, concatenating strings, etc. See the tolog predicate reference for more information.
The following changes have been made to the Navigator Framework:
Upgraded Apache Tomcat to version 5.5.23.
Web applications will now use default shared-in-JVM topic map repository if neither 'jndi_repository' nor 'source_config_file' parameters are specified in web.xml. This was done to lower the chances of running with multiple repositories by mistake. It also makes configuration easier as no configuration is required by default. We recommend that you remove the parameters from all your existing web applications.
Improved error message thrown when accessing variables outside of <tolog:context>.
Bug #2058: sequence-last not always correctly set in <tolog:foreach>
Bug #2037: AXIS reports error in tomcat.log on startup
Upgraded bundled Axis2 version to 1.2.
Improved detection of deleted object when iterating over collections. This means that IdentityNotFoundException is no longer thrown that often while iterating over collections of topic map objects.
The following changes have been made to the Omnigator:
XTM validation is now enabled by default.
No longer supports refresh topic map registry as this is no longer supported in the framework. Use refresh sources instead.
Added back the plugins plug-in that seems to have been lost in an older release.
Bug #2039: Names types incorrectly displayed
The following changes have been made:
Support for automatic classification has been added, as a plug-in on the instance editing page. See the Ontopoly User's Guide for more information, as well as section 14.9.
The display of the add, create, and search buttons on the instance page has been made more consistent and intuitive. The functionality is the same as before.
Bug #1854: Some topics become both types and instances on import
The following new features have been added to the Vizigator:
The filter controls previously only found in VizDesktop can now also be accessed in Vizlet.
A new applet parameter wallpaper_image has been added, which makes it possible to display a background image in the Vizlet.
Both VizDesktop and Vizlet now support undo and redo.
Bug #2060: Opening non-existent file causes NPE
Bug #2061: Association type filter doesn't show state
Added servlet net.ontopia.topicmaps.db2tm.SynchronizationServlet that can be used to schedule regular DB2TM synchronizations. See the javadoc for more information.
This module has been added, but in an experimental state. It is only accessible through a plug-in to Ontopoly, and is described in the Ontopoly User's Guide. There is no publicly available API at the moment, but an API exists, and will be made available once we have received more feedback regarding customer requirements. Supported languages are English and Norwegian, but support for more languages can be added.
This release is a bug fix release.
Added net.ontopia.topicmaps.utils.ltm.LTMTemplateImporter class that makes it possible to import LTM fragments outside of the Web Editor Framework.
Bug #2028: Fixed NullPointerException issue in XTM exporter
Bug #2034: Removed log4j.properties file from jena.jar
Tolog query parser will now throw net.ontopia.topicmaps.query.core.BadObjectReferenceException instead of net.ontopia.topicmaps.query.core.InvalidQueryException when object references in the query cannot be resolved.
Bug #2029: Recursive rule gave wrong result
Non-primary topic entities in relations now get all their matching characteristic values cleared when the row is removed. In practice this means that changelog synchronization is not possible with non-primary topic entities that are stored in multiple rows.
This release is a bug fix release. If you are using the Web Editor Framework or DB2TM then an upgrade is recommended.
Two new methods have been added to the TopicMapStoreIF interface. The first one is getProperty(String) which returns the value of the given property. This method can be used to get hold of topic map store property values in an implementation independent manner. The second method is getImplementation() that returns a constant that identifies the topic map implementation. This is useful to easily figure out if the topic map is stored in-memory or in an rdbms.
The third party jar-files antlr.jar and commons-collections.jar have been upgraded to versions 2.7.7 and 3.2 respectively.
Bug #2009: XTMFragmentExporter did not respect filter settings.
Bug #2019: NullPointerException thrown from rule inliner
log4j logging pattern in tomcat.log is now the same as in ontopia.log. This means that timestamps are now included in both log files.
Bug #2013: lack of synchronization in user object
Bug #2021: Uniqueness of action ids not guaranteed
Bug #1788: Full-text search not available on RDBMS topic maps
Bug #2002: Error message given if topic map was not reified
Improved detection of discrepancies between changelog table and data in actual table.
Fixed bug that caused some columns to be null when read through changelog table.
Rescan will now replace the topic type(s) instead of just adding a new one(s).
Added --force-rescan command line option to db2tm.Execute.
This release is a small bug fix release.
Most of the no-argument builder methods in TopicMapBuilderIF have been deprecated because they were no longer useful.
Bug #2009: XTMFragmentExporter did not respect filter settings.
Bug #1997: Bad error message when topic had no type.
Rescan now updates the synchronization state if a changelog is declared.
Fixed problem with NullPointerException when attempting to run duplicate suppression on deleted topics.
Bug #2007: Changelog query triggered exception in older Oracle versions.
This release is primarily a bug fix and improvements release, but some new functionality have been added. It contains a couple of important bug fixes, so an upgrade is recommended. Java 1.6 support has been verified.The main new features are the new management web application and native full-text support for PostgreSQL and Microsoft SQL Server.
The dynamic association predicate has been optimized. Tests have indicated a 15% performance increase.
Tolog now supports locale specific sorting. This feature is disabled by default, but it can be enabled by specifying the property net.ontopia.topicmaps.query.core.QueryProcessorIF.locale. The properties file will be used by default, but it can also be specified as a system property. The value consists of three parts, e.g. no_NO_NO, where the language, country and variant codes are separated by the underscore character. The ordering is implemented in terms of a java.text.Collator.
Bug #1991: Nested tolog:foreach with groupBy attribute triggered exception.
Bug #1992: occurrence predicate had side-effects when used in OR branch.
Bug #2001: NullPointerException thrown in dynamic association predicate method.
Bug #2003: topicmap predicate failed with RDBMS tolog.
Bug #2004: Potential deadlock in finalizer method.
DuplicateSuppressionUtils now does prefetching of characteristics when applicable. This change leads to a huge performance improvement, especially with large topic maps.
Reduced memory footprint when doing duplicate suppression.
Prefetching is no longer performed when the shared cache is disabled.
getTopicMap(ServletRequest request) method has been added to the ContextUtils class. This makes it easy to get hold of the current topic map object from the parent tolog:context tag.
Bug #1996: Subject indicators sometimes lost during XTM import.
Improved reuse of topic maps objects when tuples change. This leads to huge performance improvements when synchronizing.
Defaulting of the primary attribute did not work as intented.
A new FAQ section has been added to the User's Guide document.
Bug #1989: DB2TM crashed if row didn't have enough column values
Bug #2000: Reuse of occurrence objects failed when changing from external to internal occurrences (and vice versa).
The manage plugin in the Omnigator has been refactored into a new web application. All management of resources is now done through this application. This new web application introduces a couple of new features including JDBC profiling, topic map statistics and shared cache statistics.
Bug #1994: Omnigator did not display typed names correctly.
Native full-text support has been added for PostgreSQL using tsearch2. The support can be enabled by setting the net.ontopia.infoset.fulltext.impl.rdbms.RDBMSSearcher.type property to postgresql.
Native full-text support has been added for Microsoft SQL Server. The support can be enabled by setting the net.ontopia.infoset.fulltext.impl.rdbms.RDBMSSearcher.type property to sqlserver.
Neighbouring circle feature has been added. This is a visual effect to draw the attention to a node and its immediate neighbours.
Bug #1769: Increment/decrement of locality changed visible links.
Bug #1771: Vizlet graph placement dependent on browser window size.
Bug #1984: Association node could not be collapsed.
Bug #1999: Could not change the height and width of occurrence type fields..
The main change in OKS 3.2 is that Ontopoly has been significantly extended with new functionality, described below, and that the DB2TM module now supports updating the topic map with changes from the source database. In addition, there is a long list of minor improvements and bug fixes to various parts of the product suite.
The modifications to Ontopoly are quite extensive, and have required changes to the Ontopoly meta-ontology. This means that all old topic maps have to be upgraded in order to make them editable in the new Ontopoly version. Ontopoly can handle this by itself, however. The main improvements are:
Extension of the search popup dialog to also support browsing lists of all instances of a particular topic type for topics to create associations to. The dialog also allows the user to create multiple associations in a single operation.
Support for hierarchical associations, and using these to create hierarchies for topics of a particular type. This means that Ontopoly now supports taxonomies, but also hierarchies of other types can also be created. The hierarchies can be seen both on the page listing all instances of a particular type, as well as in the search popup dialog.
Ontopoly can now also treat ontology topics (that is, topic types, association types, etc) as though they were normal topics. This means that new fields can be added for these topics, and they can be edited in the instance editor. This makes it possible to use Ontopoly for ontology annotation.
A number of performance optimizations have been made, to ensure that Ontopoly scales to large data sets. Users have also been given more control over this, via the "Large instance set" property on topic types, which turns off the ability to list all instances of these types.
The Ontopoly instance editor is now localizable (meaning that it can be translated to any language).
Ontopoly can now export topic maps to the TM/XML syntax.
Ontopoly now uses Navigator Framework plug-ins for many of the user interface elements, which means that
Ontopoly now has two new privileges: instance-reader and ontology-reader, which allows read-only users to be created.
The following bugs have been fixed in Ontopoly:
Bug #1971: Couldn't leave export page after doing export
Bug #1939: Search doesn't work on topicType.ted
Bug #1849: Search for empty string finds all topics
Bug #1740: Search returns duplicates
Bug #1906: Search crashes if string contains *
Bug #1904: Search dialog box too small on MSIE
Bug #1884: Description page shows no warning when locked
Bug #1843: System topics can be found by search and edited
The Vizigator has been extended slightly with two new pieces of functionality, described below. Note that it was also substantially extended in the OKS 3.1.1 release; you may want to check section 21.2 as well.
There is now support for stopping graphs which vibrate endlessly.
There is now support for making all nodes sticky (or unsticky) in a single operation.
The following bugs have been fixed in the Vizigator:
Bug #1930: Search only finds hits in visible names
The "No name topics" choice on the topic map page now always appears, and without a count of nameless topics. This is a small step backwards in terms of functionality, but this query is very expensive, and has made it difficult to use the Omnigator with large topic maps. This problem is now gone.
The following bugs have been fixed in Omnigator:
The tolog query engine now has support for plugging in external full-text search predicates that behave much like the current built-in "value-like" predicate. To create a new full-text search predicate, one only needs to implement two Java interfaces. The new predicate will then be available in a module which can be imported into queries that need it.
The query engine now also supports getting a trace from a specific query as a string, instead of logging it to log4j. This support is available at the API level, and also in the Omnigator query plug-in. This makes it much easier to debug slow tolog queries.
The following bugs have been fixed in the query engine:
Bug #1893: Incorrect sort order with typed names
The main extension to DB2TM is the support for synchronizing the topic map with new information from the database. This makes it easy to keep the topic map up to date as the source database changes. See the documentation for more details on how this works.
The DB2TM module has been extended with support for mapping values in the database to new values using either a mapping table or a Java method. These mappings can now be declared in the XML mapping file.
The webed:link and webed:form tags now have a new attribute, target, which tells the framework in which window/frame to open the next page.
The following bugs have been fixed in the Web Editor Framework:
Bug #1500: param must be set on webed:list for multiple select lists
Bug #1776: Evaluate LTM action crashes if no topic map parameter given
Bug #1760: No output when webed:field is empty
Bug #1756: Crash when params attribute contains whitespace at beginning or end
Bug #1869: actions attached to webed:list with unspecified=none run even if no changes made
Bug #1857: package names for actions missing in documentation
Bug #1848: poor error message on missing actions.xml file
The TMLoginModule now exposes user-groups/roles names and privilege names as role principals. This means that applications can make use of the HttpServletRequest.isUserInRole(String rolename) method to check privileges and user-group memberships.
The TMSync implementation has been extended so that it now supports using filter on the source topic map as well, to filter the characteristics to be included in the synchronization.
The DeletionUtils class now has a new method for deleting a collection of topics in a single operation. This is much faster than deleting the topics individually.
The TM/XML exporter now accepts a filter that lets you control which parts of the topic map should be exported.
The TopicMapSourceIF interface now has a new method createTopicMap, which allows new topic maps to be created within the source. Some of the source implementations support this method, and there is a getSupportsCreate method which can be used to query for such support.
The XTM path source now has a boolean property to control whether topic references to external documents should cause those documents to be merged in. This is implemented using a new class net.ontopia.topicmaps.utils.NoFollowTopicRefExternalReferenceHandler which tells the XTM importer to not follow external topic references, but to still load any topic maps referenced by the mergeMap element.
The Merger command-line utility now has an option to enable name-based merging (which used to be enabled, because of a bug), and an option to do duplicate suppression on the resulting topic map.
The following bugs have been fixed in the Topic Maps Engine:
Bug #1933: TM/XML namespace prefixes not consistent
Bug #1864: Collection concurrency exceptions not documented
Bug #1827: LTM exporter creates numeric IDs
Bug #1850: LTM importer can crash on subject identifier/source locator collision
Bug #1868: XTM reader crashes on empty topic references
A new property net.ontopia.topicmaps.impl.rdbms.Cache.shared.identitymap.lru has now been added, which can be used to control the size of the identity map LRU for the shared cache independently from the LRUs of the individual transactions.
Another new property is net.ontopia.infoset.fulltext.impl.rdbms.RDBMSSearcher.type which is used to control how full-text searching in the RDBMS backend is done.
A new option has been added to the RDBMSImport command-line tool, to control whether external references are followed or not.
The RDBMS backend now always sets the transaction isolation level, which it only did before when using a connection pool.
This release primarily consists of some new functionality and a couple of bug-fixes for Vizigator.
The following functionality has been added to Vizigator:
It is now possible to hide the search bar by setting the search.bar menufile property to off.
For more information, please consult the Vizigator User's Guide.
The following bugs have been fixed in Vizigator:
A problem regarding passing java.util.Map instances as parameters to web editor actions was resolved.
This release primarily consists of some new functionality for Vizigator, and support for Microsoft SQL Server. There is also improved support for TM/XML in Omnigator.
The following bugs have been fixed:
Bug #1795: TMAPI implementation bug
The server-config.wsdd file in the TMRAP web application contained an absolute file reference. This has now been replaced by a relative file reference.
One of the examples in the TMRAP Developer's Guide used an incorrect request parameter.
The following functionality has been added to Vizigator:
A new (optional) locality algorithm has been added.
The popup menu items in VizLet have been made configurable.
The locality settings (initial setting, and maximum value) in VizLet have been made configurable.
On topic nodes there is now a new "Copy name" menu item.
For more information, please consult the Vizigator User's Guide.
The following bugs have been fixed in Vizigator:
Bug #1870: Some edges not shown
The RDBMS backend has seen substantial internal reworkings that cause it to need fewer database connections per transaction, and which reduce lock contention in the database quite significantly. As a result of these changes the RDBMS backend now supports Microsoft SQL Server. A sample database properties file and database scripts can be found in ${OKS_HOME}/rdbms.
It's now possible to drop TM/XML files with the extension .tmx into the topicmaps directory and have Omnigator detect them. It is also possible to topic maps to TM/XML in Omnigator using the export plug-in.
This release adds significant new functionality, primarily the DB2TM module and the new TMRAP version. However, the Vizigator has also been significantly improved, support for the TM/XML format has been added throughout the OKS, and an event API has been added to the engine. The improvements are described in more detail below.
Documentation of the two new modules (DB2TM and TMRAP) can be found as part of the OKS documentation.
The Vizigator has been extended with support for a default topic and association type configuration, as well as for controlling the rendering of topics which have more than one type.
The following bugs have been fixed in the Vizigator:
The main improvements to the Topic Maps engine are the addition of support for the TM/XML Topic Maps syntax and the event API. The event API is documented in the javadoc for the package net.ontopia.topicmaps.core.events.
The following bugs have been fixed in the Topic Maps engine:
Bug #1797: RDF exporter crashes on null occurrences
A number of performance improvements have been made to the RDBMS backend. The RDBMS backend now distinguishes between read-only and read-write transactions, where the former can be shared by several users (because no changes can be made), thus reducing the memory consumption. In addition, the use of synchronization has now been streamlined to allow better throughput with many concurrent transactions. The garbage collector now has an easier job because the soft references in the shared cache are more fine-grained, making it possible to collect smaller amounts of data on each iteration.
The default tolog implementation when using the RDBMS backend is now the in-memory implementation, and not the RDBMS implementation. Note that this change might affect the performance of existing installations. Existing installations may want to override the tolog implementation in the database properties file.
The following bugs have been fixed in the RDBMS backend:
Bug #1818: Query cache corruption when shared cache disabled
Bug #1792: Shared cache corruption
Bug #1764: Clearing cache causes error
Bug #1777: XTM export causes OutOfMemoryException
Two new methods have been added to the NavigatorUtils class: getTopicMapRepository(PageContext pageContext) and getTopicMapRepository(ServletContext servletContext).
The code which finds the label to display for a topic has been replaced with a new implementation, which is much simpler, and much faster, thus resulting in improved performance.
The following bugs have been fixed in the Navigator Framework:
Bug #1809: Nested template tags do not work
The TologDelete action now accepts objects of any types as parameters, and not just topics.
The following bugs have been fixed in the Web Editor Framework:
Bug #1821: The webed:actionid tag does not work correctly in read-only mode
The following bugs in Ontopoly have been fixed:
Bug #1842: Ontopoly crashes if more than one missing topic map
Bug #1806: Ontopoly importer doesn't handle symmetric associations
Bug #1808: Ontopoly importer doesn't handle reified topic maps
Bug #1785: Download choice on export has no effect
Bug #1787: Read-only topic types produce validation errors
Bug #1784: International characters lost on export
Bug #1772: Topic Maps sources without ID and title don't show up in Ontopoly
This release is a bug fixing release for the Vizigator. The last few versions of Vizigator have been somewhat buggy and unstable, and the behaviour of the Vizigator has not really been entirely consistent. This release fixes the known bugs, and makes the Vizigator behaviour much more consistent.
The following bugs have been fixed:
This a bug-fix release that includes fixes to three bugs.
Important:
If you are using the RDBMS Backend you should upgrade to this new version as there is a critical bug in the jdbcspy driver shipped with earlier OKS releases. This bug only occurs when using the jdbcspy driver, but to be on the safe side an upgrade is recommended. If you cannot upgrade then you must not use jdbcspy (disabled by default).
The following bugs have been fixed:
Bug #1438: The in-memory class-instance index had a bug that gave an incorrect result with null types.
The following bugs have been fixed:
Bug #1757: The database scripts included a reference to a non-existent reference_id column.
Bug #1761: The jdbcspy driver contained a bug that caused transactions not to be rolled back in some situations.
This release is a major release that has seen changes to most parts of the OKS, as well as the inclusion of a major new component, the Ontopoly Topic Maps editor. Also, the distribution now includes Tomcat 5.5, instead of Tomcat 5.0.
Important:
If you are using the RDBMS Backend you will have to make a few changes to the database schema before proceeding. A description of how to do the upgrade can be found in the section called RDBMS Backend in this document.
A new policy for error handling in the Web Editor Framework has been added, with support for distinguishing between critical and non-critical errors. The only change is really that it is now possible to report non-critical errors to the user.
The form tag library has been extended with better support for accessing JSP attributes, which greatly simplifies using the form tag library together with other tag libraries.
The pattern attribute has been added to the webed:field tag, providing support for validating user input against a regular expression.
The Velocity macros used by the Web Editor Framework tags have been moved into the OKS .jar file. It is still possible to use custom Velocity macros, but by default the macros used will be those in the .jar file. This greatly simplifies upgrades to new OKS versions. Existing applications will continue to use the Velocity macros in the file system, which they have been configured to use. We recommend that applications switch to using the .vm files in the .jar file.
The TLD files are now also stored in the OKS .jar file, and the tag libraries have been given identifying URIs that can be used to load these. We recommend that applications start using these URIs and remove local copies of the TLD files.
The following new actions have been added to the Framework:
tmobject.OSLValidate is an action which can take any number of topics, association, and topic maps and validate them against the OSL schema registered for the current topic map.
topic.SetSubjectLocator is an action for setting the subject locator of a topic.
In addition, there are the occurrence.SetValue2, occurrence.SetLocator2, and topic.SetSubjectIndicator2 actions, all of which are slight modifications of existing actions that behave differently when given an empty string (they delete the value being operated on).
The following bugs have been fixed in the Web Editor Framework:
Bug #1719: webed:actionid does not record current value correctly.
Bug #1701: Velocity context clashes between web applications.
The tolog tag library has been extended with better support for accessing JSP attributes, which greatly simplifies using the tolog tag library together with other tag libraries. In addition, the tolog:set tag now supports setting JSP attributes in any scope (in addition to setting OKS variables), through the new scope attribute.
The tolog:out tag now has an attribute named escape, which can be used to control whether or not the output string is to be HTML-escaped.
The TLD files are now stored in the OKS .jar file, and the tag libraries have been given identifying URIs that can be used to load these. We recommend that applications start using these URIs and remove local copies of the TLD files.
The tm-sources.xml can now be loaded from the classpath, and in the distribution this is where it is now loaded from.
The Vizigator has been extended with support for filtering associations by scope. It also now has support for localization, and has been localized to Japanese and German.
Bug #1690: Opening non-existent file causes crash.
The engine now supports typed names, in accordance with the TMDM.
The engine now supports automatically keeping the full-text index for a topic map up to date as changes are made to a topic map. This is primarily of interest with in-memory topic maps.
The topic map repository framework has now been extended so that topic map sources can create new topic maps. New methods have been added to the TopicMapSourceIF interface to support this. The XMLConfigSource class has also been extended with new methods to allow the configuration to be loaded from the classpath.
The following new additions have been made to the API:
The setFollowTopicRefs method has been added to the XTMTopicMapReader, making it easier to prevent the XTM reader loading other XTM documents referred to by topicRef elements.
The XTMTopicMapWriter can now be given a DeciderIF which will be used to filter the topic map during export.
The following bugs have been fixed in the engine:
Bug #1726: RDF2TM inserts unwanted topics.
There has been a few minor changes to the database schema in this release. In order to upgrade your database instance you will have to execute the SQL statements listed below in your database.
If you do not have an existing database instance you should not perform the upgrade shown below, but instead follow the standard database installation procedure described in The RDBMS Backend Connector - Installation Guide.
Use the psql command line tool to execute the statements below, or any other database access tool of your choice.
alter table TM_BASE_NAME add column type_id integer null; alter table TM_TOPIC_MAP add column base_address varchar(512) null; alter table TM_TOPIC_MAP add column title varchar(128) null; create index TM_BASE_NAME_IX_myi on TM_BASE_NAME(topicmap_id,type_id,id);
If foreign keys are enabled the following command should also be issued:
alter table TM_BASE_NAME add constraint FK_TM_BASE_NAME_3 foreign key (type_id) references TM_TOPIC (id);
Use the sqlplus command line tool to execute the statements below, or any other database access tool of your choice.
alter table TM_BASE_NAME add type_id integer null; alter table TM_TOPIC_MAP add base_address varchar2(512) null; alter table TM_TOPIC_MAP add title varchar2(128) null; create index TM_BASE_NAME_IX_myi on TM_BASE_NAME(topicmap_id,type_id,id);
If foreign keys are enabled the following command should also be issued:
alter table TM_BASE_NAME add constraint FK_TM_BASE_NAME_3 foreign key (type_id) references TM_TOPIC (id);
The RDBMS backend schema has changed to support typed names.
The RDBMS backend schema has changed to store the base address of the topic map in the database. This solves the long-standing problem with porting ID-based topic maps applications from the in-memory store to the RDBMS backend, since the base address is now set on import (using the RDBMSImport command-line tool) ID-based references will continue to work.
The RDBMSImport command-line tool can now produce a SQL profiling report to show where the time is spent during an import.
The RDBMSImport command-line tool will now automatically disable the shared cache, so that topic map documents of any size can be imported.
The RDBMSTopicMapStore now has a new method that can dump the identity map, for debugging and performance monitoring purposes.
The net.ontopia.topicmaps.impl.rdbms.StorePool.SoftMaximum database property was being incorrectly set, effectively making impossible to set an upper boundary on the store pool size. This is now fixed.
This is mainly a bug fix release, but also includes a number of improvements.
The following improvements have been made:
The dynamic association predicate now does prefetching when all role player arguments are unbound.
An existing log4j system can now be used by web applications. This can be done by not specifying the log4j_config context parameter in web.xml.
Web Editor tags webed:button, webed:checkbox, webed:field, webed:file, webed:form, webed:link and webed:list now take the class attribute which maps directly to an HTML class attribute.
The user-interface language used in the Vizigator and the Vizlet is now configurable. The Vizigator takes an applet parameter called lang and the Vizlet takes a command line argument with the same name. The default value is en.
Vizlet controls can now be hidden when the applet is loaded. This can be done by setting the controlsVisible applet parameter to false. Note that it is possible to get the controls back by selecting the appropriate entry in the context menu.
The following bugs have been fixed:
Bug #1719: The webed:actionid registered the current value incorrectly.
Bug #1554: Deadlock problem in TouchGraph fixed.
Fixed Vizigator bug that caused a NullPointerException to be thrown when association roles did not have a role player.
NoSuchElementExceptions where constructed and thrown too eagerly internally inside one of the RDBMS Backend collection implementations. This is no longer done and leads to better performance.
Database connections were not always returned to connection pool when topic map store was invalidated. In some situations this caused the connection pool to run out if connections quickly, while in others it would take a long time.
This is a bug fix and optimization release. A number of bug fixes and performance improvements have been made to the RDBMS backend. If you are not using the RDBMS backend, you can ignore this release. If you are using the RDBM backend we strongly recommend that you upgrade to this version.
In this release, only the OKS code and the database schemas/scripts have been updated. To upgrade an existing installation, all you need to do is replace the oks-*.jar file.
The following improvements have been made:
A memory leak in the RDBMS caches has been fixed.
Data sources retrieved through JNDI must now have absolute JNDI names, not relative as in previous releases. The OKS will now also explicitly set the autoCommit flag to false, overriding any defaults.
The representation of object identities has been optimized, so that it now takes much less memory.
A number of optimizations have been made in the backend, some of which dramatically improve performance for multiple simultaneous transactions. A side-effect is that the RDBMS backend may now more JDBC connections than in previous releases.
The XTM importer has been optimized so that, when importing into the RDBMS backend, creation of topics is delayed, in order to see whether the topic already exists. This avoids merging in a number of cases, and can dramatically improve performance when importing new data from XTM into an existing database.
Some modifications have been made to the default RDBMS schemas, such as making foreign key constraints deferrable, and some improvements to the default indexes.
The database drop script now also drops constraints.
This is a bug fix release.
The following bugs have been fixed:
Bug #1507: Query with role-player and type gives no results
The dynamic association predicate failed with a NullPointerException in some situations where the player of an association role was null.
The following bugs have been fixed:
Bug #1509: OutOfMemoryExceptions on large imports
Importing large topic maps caused OutOfMemoryExceptions. This effectively prevented one from running imports larger than the available memory.
This is a bug fix release.
The following improvements have been made:
The LTM importer now makes sure that older topics are preferred over newer topics when merging. This change leads to better performance in most situations as older topics usually have more characteristics than newer ones.
The following bugs have been fixed:
Bug #1339: RDF import does not support rdf:nodeID
The following bugs have been fixed:
The following improvements have been made to the Navigator Framework:
The JAAS authentication module now provides role names to the application container. The unscoped user group names are provided as role names.
The JAAS authentication module classes are now provided in a separate jar file: $TOMCAT_HOME/server/lib/oks-realm.jar.
A few new utility methods were added to make it easier to use the framework in servlets: an overloaded version of run in TreeWidget and of getSingleValue in ContextUtils.
The following improvements have been made to the Web Edit Framework:
User form data will now expire after a set interval, even if the session as a whole has not expired, and even if the form has not been closed. This reduces the memory usage with large forms and many concurrent users.
The following bugs have been fixed:
Bug #1471: Data in other actions not available when triggered action is exclusive
The following improvements have been made to the RDBMS backend:
The database creation scripts now include a number of new indexes that greatly improve performance with the new queries used by the pre-fetching code.
All database connections are now validated before starting new topic map transactions. The shared cache is also able to detect that the database is down and attempt to acquire a new connection. This change means that the shared cache, or JVM, does not have to be restarted when the backing database has been reset.
The trove4j library has been upgraded (trove.jar).
The following bugs have been fixed:
Bug #1466: Role type cache crashes when no shared cache
JDBCSpy would in some cases produce a driver even if the JDBC URL did not match.
This release adds substantial new functionality, primarily significant performance enhancements in the RDBMS backend, but also support for LTM 1.3, the JAAS module, and the accessctl web application. More detail on these is provided below. There are some violations of backwards compatibility, so please read the release notes carefully.
The Omnigator now supports exporting topic maps to LTM format.
The following bugs have been fixed:
Bug #1278: Encoding problem in Omnigator's Add plug-in
Bug #1420: Omnigator's Query plug-in garbles non-ASCII characters
Bug #1423: Omnigator's Query plug-in doesn't reuse the QueryProcessor object
The following improvements have been made to the Navigator Framework:
A JAAS module for user authentication in application servers against user information stored in the topic map has been added. A web application for maintaining user information has also been added. Documentation for these two components is provided.
The configuration of shared repositories has been significantly simplified. In particular, the need to directly reference the tm-sources.xml file has been reduced.
The methods NavigatorApplicationIF.getConfigurations(), NavigatorApplicationIF.getName() and NavigatorApplicationIF.getInstanceOf(String) has been marked INTERNAL.
The following bugs have been fixed:
Bug #1416: tolog:set unwraps collection value in non-OKS scope
Bug #1404: Cannot have tolog:set tags with implicit var attribute
The following improvements have been made to the Vizigator:
Loading big topic maps in VizDesktop is now much easier, as a dialog box showing progress is shown, and a start topic can be chosen without having to view the entire topic map. Building of the topic map graph is now done "on demand", which means that with a start topic getting started with a large topic map is much faster.
The VizDesktop now supports setting name scopes to control which names are shown on topics. There is a corresponding configuration parameter in the Vizlet, and the setting is stored in the configuration.
The file size of the Vizlet jar file has been reduced by about 30%, which should reduce the Vizlet startup time.
If two topics are related by two associations the associations will no longer appear on top of each other so that only one can be seen, but will instead curve out to avoid this.
The following bugs have been fixed:
Bug #1302: Hiding or collapsing a node can make a ghost node
Bug #1392: Error message because log4j.properties not found
Bug #1415: Map view menu choice enabled when in map view
The following improvements have been made to the Web Editor Framework:
The forwardBehaviour element is no longer allowed in actions.xml. This because the machinery for multi-frame applications has been signficantly changed.
The documentation of the AssignRolePlayer action has been signficantly extended.
Documentation of on how to make the ProcessServlet produce log output has been added, and the logging itself improved.
The actionGroup attribute has been removed from the webed:actionid tag.
The following bugs have been fixed:
Bug #1412: Incorrect handling of button icon paths
Bug #1401: Poor error message when no <forwardDefault> provided
Bug #1400: Locking forwarding not done correctly
Bug #1356: Action data expires too easily
Bug #1396: trim attribute on webed:field does not work
The following improvements have been made to the Query Engine:
The query engine now checks queries for type conflicts (incorrect types of arguments to predicates) and will report any type conflicts as errors. This may cause existing queries to fail, but always because there is a bug in the query.
Looking up occurrences via their string values, using either the value predicate or dynamic occurrence predicates is now significantly optimized.
A number of optimizations have been added to the in-memory query processor. In addition, the in-memory query processor will now prefetch information not in the cache from the RDBMS, which significantly improves performance when using the RDBMS backend. Dynamic association predicates should also be much faster.
The following bugs have been fixed:
The following new functionality has been added to the engine:
The getRolesByType(TopicIF) and getRolesByType(TopicIF, TopicIF) methods has been added to the TopicIF interface. This can be convenient in some cases, and is used to improve the performance of the RDBMS backend.
The support for TMAPI has now been finalized. The OKS now has full support for TMAPI 1.0.
The LTM parser has been updated to support LTM 1.3.
The net.ontopia.topicmaps.xml.CanonicalXTMWriter class has been added, with support for the 2004-11-01 draft of Canonical XTM.
The net.ontopia.topicmaps.utils.ltm.LTMTopicMapWriter class has been added, with support for exporting topic maps to LTM 1.3.
The following bugs have been fixed:
Bug #1418: data URLs do not support non-ASCII characters
The following improvements have been made to the RDBMS backend:
The RDBMS backend will now prefetch information not in the cache in a number of situations, which significantly improves performance. The difference is likely to be most noticeable when using in-memory tolog.
Index lookups (through the API or via tolog) would always cause two SQL queries in the database. This has now been optimized to only do a single SQL query.
Documentation of how to use P6Spy to do SQL profiling has been added, together with a script for producing reports from the P6Spy logs.
The following bugs have been fixed:
Bug #1398: NullPointerException when closing RDBMS store
This release is almost exclusively a bug fix release.
The following changes have been made to the Omnigator:
The user interface of the RDF2TM plug-in has been improved slightly.
The full-text indexer now considers digits parts of tokens, which it did not previously. This means old indexes should be recreated.
The following bugs have been fixed:
Not all plug-ins closed the topic map store the way they should; this has now been fixed.
Only one change has been made here: the "oks" JSP variable is now set in request scope instead of page scope.
Two bugs have been fixed in the Vizigator:
The following changes have been made to the Web Editor Framework:
The trim attribute has been added to the webed:field tag to control whether whitespace is removed from its contents or not. (Bug #1374.)
The runIfNoChanges attribute has been added to the webed:invoke tag to control whether the invoked action is to be run if no other actions run.
The following bugs have been fixed:
Bug #1373: Problems with certain webed tags and jsp:include.
NPE in ActionSignature in certain cases.
NoSuchElement exception in EvaluateLTM action on topics with no source locator.
The RDBMS tolog implementation now makes better use of the optimizers developed for the in-memory implementation, which should improve performance in some cases.
One bug has been fixed:
Bug #1378: NPE when sorting on topics with null-value names
The following API changes have been made:
The clear method has been added to the TopicMapReferenceIF interface.
The delete method on the TopicMapStoreIF interface has been deprecated.
One bug has been fixed:
The delete method on RDBMSTopicMapStore would in some cases leave orphan rows in the *_SCOPE tables.
This release adds major new functionality, substantial internal changes, as well an overhaul of the API where many packages and classes are made INTERNAL or deprecated. You are recommended to read this section carefully before installing this version.
The Omnigator now has two new plug-ins:
VizPlugin, which provides a visual view of the surroundings of a given topic in the topic map, using Vizigator.
RDF2TM, which can be used to create RDF-to-topic map mappings using a graphical interface.
The following bugs have been fixed:
Bug #1224: Merge button causes error when no topic map selected
The tm, logic, output, and value tag libraries have now been deprecated, in favour of the new tolog tag library. The old tag libraries and their documentation are still included with the OKS, but they are now officially deprecated, and no new functionality should be developed using them. They will not be removed from the product as long as there are users for them.
There are also some important changes in how the Navigator Framework works with the RDBMS backend; these are documented in section 3.5 of the Navigator Framework Developer's Guide, and all users are encouraged to read this section.
Parts of the Navigator Framework API have been marked as INTERNAL or been deprecated. A few methods that have been deprecated for a long time have been removed altogether. The following class has also been added to the API.
The net.ontopia.topicmaps.nav2.utils.TreeWidget class has been added.
The Vizigator is now out of beta, and officially part of the OKS. A substantial number of bugs have been fixed, and new functionality added. We do not describe the details here; for a description of the functionality, see the Vizigator User's Guide.
The params attribute in the Web Editor Framework tag library now supports tolog URI prefixes declared with the new tolog:declare tag. This makes it possible to refer to topics without creating framework variables for them first.
The action implementations included in the Web Editor Framework now perform much stricter checking on the parameters passed to them, which means that they provide much more useful error messages, but also that in certain cases they will complain about parameters they would earlier allow.
The AddSubjectIndicator, RemoveSubjectIndicator, SetSubjectIndicator, AddSourceLocator, RemoveSourceLocator, and SetSourceLocator actions have been updated to accept string parameters as well as locator parameters.
Parts of the API have been marked as INTERNAL or been deprecated in this version. In addition, the cloneAndOverride method has been added to the ActionParametersIF interface to make it possible to trigger existing actions from within an action.
The following bugs have been fixed:
Bug #1289: Certain exceptions in actions would make the OKS go into a non-responsive state.
Bug #1252: Actions would always be triggered in multiselect lists
Bug #1251: Actions nested within buttons would not be invoked
The tolog query language has been extended with comparator predicates (that is, the normal <, >, =, <=, >= operators). In addition, the object-id predicate has been added.
The query engine has been reworked somewhat internally, adding some new optimizations, as well as type analysis on variables. This is not obvious to external code, but improves performance.
An API for preparsing declarations (as opposed to queries) and storing the resulting context so that later queries can be parsed in a particular declaration context has been added.
The following bugs have been fixed:
Bug #1264: Exception thrown when second parameter to dynamic occurrence predicate of wrong type
Bug #1293: Incorrect result in dynamic association predicate query with inconsistent association signatures
Bug #1290: subject-locator predicate cannot start from URL
Parts of the API have been marked as INTERNAL or been deprecated.
The oracle_text platform must now be listed on the net.ontopia.topicmaps.impl.rdbms.Platforms database property for Oracle Text support to be enabled, e.g. to enable Oracle Text support with Oracle 10g set the property to oracle_text,oracle10g,oracle,generic. This change will break backward compatibility, but will allow Oracle users to use the default rdbms fulltext support using the LIKE operator instead of using Oracle Text. See the fulltext developers guide for more information.
The LuceneIndexer class now has a new command line option --analyzer which takes the class name of an analyzer.
Parts of the API have been marked as INTERNAL or been deprecated.
The core interfaces of the engine have now changed substantially, for the first time since the release of version 1.0. Concepts left over from the HyTM syntax have now officially been deprecated, such as facets, facet values, mnemonics, effective scope, and scope on topics and topic maps. If you didn't know these things existed: don't worry, the effect on your code is likely to be nil. In addition, a large number of non-core interfaces, classes, and methods have been marked as INTERNAL or been deprecated.
In addition, the following API changes have been made:
The close method has been added to the TopicMapRepositoryIF interface.
The lenient property on the RDF path topic map source has been added, making it possible to ignore some errors in the RDF mappings.
The DuplicateSuppressionUtils class has a new method called removeDuplicateAssociations which will remove all duplicate associations of a particular topic.
Some performance optimizations have been made in import and export:
The LTM and XTM importers are now faster when the imported files cause topic merges, because they have been modified to avoid merges in situations where it can be avoided.
Export to XTM should now be quite a bit faster, as the performance of XML generation has been improved.
The net.ontopia.topicmaps.entry package has been reworked a bit, and the following changes have been made:
The TopicMapReferenceIF interface now has two new methods: open and isDeleted.
The TopicMapReferenceIF interface now throws a StoreDeletedException if the topic map has been deleted.
Topic map references can now be reopened after they have been closed.
Most implementations of TopicMapReferenceIF no longer delete the file in the file system when delete is called unless the deleteFiles property is set to true.
Locators output by XTM, CXTM and HyTM serializers are now written in its external form and no longer the internal form.
The following bugs have been fixed:
Bug #1247: InternalAssociation.getAssociationTypeId throws NPE
Bug #1325: ClassInstanceIndex contains unconnected topics
Bug #1317: RDF mapping file topics included in TM
The internals of the RDBMS backend have been substantially reworked to provide better support for concurrent transactions. A number of RDBMS properties have been added to control the internal workings of this. To find out what these are, please consult the RDBMS Backend Installation Guide and the Developer's Guide. Note also that some behaviours that never were allowed, but which used not to cause problems now will cause problems. Caution, and careful testing, should be applied.
The two main new features in the RDBMS Backend are shared cache and topic map store pooling. The first lets topic map store instances share information so that the network traffic to the database is reduced and thus performance improved. The second feature makes it possible to reuse topic map store instances across transactions. This improves scalability in multi-user access to the database and will also improve resource management in applications.
A few new database properties has been added. All the properties are related to either shared cache settings or topic map store pooling. See the RDBMS Installation Guide for more in-depth information on the supported database properties.
net.ontopia.topicmaps.impl.rdbms.Cache.shared
net.ontopia.topicmaps.impl.rdbms.Cache.identitymap.lru
net.ontopia.topicmaps.impl.rdbms.Cache.subjectidentity.srcloc.lru
net.ontopia.topicmaps.impl.rdbms.Cache.subjectidentity.subind.lru
net.ontopia.topicmaps.impl.rdbms.Cache.subjectidentity.subloc.lru
net.ontopia.topicmaps.impl.rdbms.StorePool.MinimumSize
net.ontopia.topicmaps.impl.rdbms.StorePool.MaximumSize
net.ontopia.topicmaps.impl.rdbms.StorePool.SoftMaximum
The following properties are no longer supported/used, so if you use them in your database properties file consider removing them:
net.ontopia.topicmaps.impl.rdbms.ConnectionPool.InitialSize
net.ontopia.topicmaps.impl.rdbms.ConnectionPool.Timeout
net.ontopia.topicmaps.impl.rdbms.ConnectionPool.UserTimeout
net.ontopia.topicmaps.impl.rdbms.ConnectionPool.SkimmerFrequency
net.ontopia.topicmaps.impl.rdbms.ConnectionPool.ShrinkBy
net.ontopia.topicmaps.impl.rdbms.ConnectionPool.TransactionIsolationLevel
net.ontopia.topicmaps.impl.rdbms.MappingFile
net.ontopia.topicmaps.impl.rdbms.QueriesFile
The following properties are only used for database platforms for which there are no built-in support, and should therefore not normally be specified in database properties:
net.ontopia.persistence.query.sql.InMaxElements
net.ontopia.topicmaps.impl.rdbms.KeyBlockSize
net.ontopia.topicmaps.impl.rdbms.HighLowKeyGenerator.SelectSuffix
net.ontopia.topicmaps.impl.rdbms.Platforms
The property net.ontopia.topicmaps.impl.rdbms.Platforms is now inferred from the net.ontopia.topicmaps.impl.rdbms.Database property value and should therefore normally not be specified.
The SQL IN-operator used by RDBMS tolog no longer uses a predefined max elements size, but retrieves the setting from the net.ontopia.persistence.query.sql.InMaxElements database property instead. Default is that there now is no limit to the maximum number of elements.
Poolman is no longer supported and has been dropped from the distribution. Jakarta Commons DBCP is now the default connection pool implementation. Connection pooling is now enabled by default.
Prepared statement pool is enabled by default by the DBCP connection pool.
URI locators stored in the RDBMS did not get externalized properly in getExternalForm and resolveAbsolute. This has now been fixed.
The RDBMSDelete command line utility has been added.
The following bugs have been fixed:
Bug #1283: Identity not found in repository
Bug #1271: Generic database platform should be implicit
Bug #1295: Transaction is not active and store already open
Bug #1294: StoreNotOpenException is thrown
Bug #1270: instance-of slow when class have many superclasses
This release resolves a couple of Java 1.3 compatibility issues and two issues regarding the use of locators.
'|' characters in file URLs were incorrectly escaped by URILocator.getExternalForm().
<output:locator> now uses LocatorIF.getExternalForm() instead of LocatorIF.getAddress() to output locator addresses.
This release is mainly a bug fix release. It resolves a couple of issues in the RDBMS backend. There are also improvements in the XTM import utility.
The way merging is done during XTM import has been improved. The importer code now avoids creating temporary topics in the cases where the temporary object later would be merged with an existing object. Temporary object creation is avoided where possible. This should lead to improved performance in certain situations.
The following bugs have been fixed:
Bug #1062: dynamic occurrence predicate not properly mapped to SQL
Bug #1261: misleading directory reference
This release is a bug fix release. It resolves a couple of Web Editor bugs and a bug in the RDBMS Backend.
The following bugs have been fixed:
Bug #1251: Nested actions within <webed:button> never invoked
Bug #1252: <webed:list> actions always executed when type was multiselect
Some debugging statements were written to the console in the previous release. These have now been removed.
This release is a bug fix release. It also adds previews of the RDF2TM Omnigator plug-in and the Vizigator. The RDF2TM plug-in is turned off by default, and not yet much documented. The Vizigator has separate documentation included.
Prototypical support for TMAPI has been added. This does not quite conform to the final version, and will have to be updated.
The RDF importer now supports a new generateNames property, which enables it to automatically generate names for nameless topics created by the mapping based on their URLs.
The following bugs have been fixed:
Bug #1142: File names in non-ASCII encodings cause errors
Bug #1079: Can't resolve references to XTM files with spaces in URI
Bug #1024: Associations with no roles get exported to invalid XTM
The RDBMS implementation of tolog will now produce queries that in some situations are significantly faster, especially in PostgreSQL.
The following bugs have been fixed:
Bug #1096: Searches for keywords cause errors
Bug #1032: Ordering by null value crashes
Bug #972: Incorrect results when same topic plays multiple roles
The interpretation of the index attribute on the tm:fulltext tag has changed. See the tag library reference documentation for details.
The webed:field tag now supports hidden fields.
This release is a bug fix release, but also contains some optimizations and minor additions of new functionality, about which, more below. The main extension is the experimental support for the new Canonical XTM syntax proposed for inclusion in the ISO 13250 standard.
The following improvements have been made:
For scoping topics (themes) the Topic Page now displays lists of names, occurrences and types of associations that are scoped by the current topic. (Note: This functionality is experimental and may be removed or changed if it turns out to be too expensive in terms of performance.)
Unary associations are now displayed separately from binary and n-ary associations.
The display of occurrences whose resources have topics representing them has been improved.
The export plug-in now supports the new Canonical XTM syntax proposed for inclusion in the ISO 13250 standard.
The validator plug-in now displays better error messages in several cases.
The following bugs have been fixed:
Bug #1007: Number of occurrences being shown was incorrect
The following bugs have been fixed:
Bug #994: rulesfile attribute on tm:tolog was broken
The following improvements have been made:
The webed:invoke tag has been added. This tag can be useful for actions that always need to be invoked when a form is submitted.
The webed:form, webed:field, webed:list, and webed:button tags now all have an id attribute, which can be used to attach JavaScript actions to the HTML form controls they produce.
The AssignRolePlayer action has been extended to support use from checkboxes, by making it accept an additional argument.
The following bugs have been fixed:
Bug #640: No proper error message when user session expires
The tolog query engine has been modified to do extensive type inferencing internally, in order to work out the possible types that can be assigned to each variable. This information is now used to optimize away some predicates that can never succeed because of type conflicts.
Bug #987: The value-like predicate was sensitive to predicate order
Bug #1005: tolog SQL compiler optimized OR clauses too eagerly
Bug #955: The value-like predicate misbehaved with empty search strings
The following improvements have been made:
An experimental implementation of the standard Canonical XTM format has been added.
The getExternalForm method has been added to the LocatorIF interface. This in order to allow URIs to be correctly escaped on output.
The setDuplicateSuppression method was added to the RDFTopicMapReader class.
The RDF topic map source now supports setting the RDF syntax as well as mapping files external to the RDF file being read.
The TopicVariantNameGrabber class has been added in order to make it possible to grab variant names from topics.
The following bugs have been fixed:
Bug #1006: ImportExportUtils.getReader fails in applets
Bug #1000: ConcurrentModificationException thrown in DuplicateSuppressionUtils
Bug #981: The LTM #MERGEMAP directive caused name-based merging
The following improvements have been made:
The queries.xml and mapping.xml files are no longer read from the current directory by default, but instead from the .jar file. Their location can still be overridden using the properties file.
Added database scripts for MS SQL Server and Firebird.
The old 'oracle' platform has been split into 'oracle8' and 'oracle9i', with 'oracle' as the generic fallback.
The database scripts for PostgreSQL now create columns of the type TEXT (instead of VARCHAR), which gives unlimited-length strings.
This release contains mainly bug fixes and improvements. One important change in this release is that the version number is included in the $OKS_HOME directory name. This was introduced, so that one can easily keep different versions apart and also avoid versions being copied on top of each other.
Two improvements have been made:
URIs for topic maps stored in a relational database can now reference the object id of the topic map object. Example: x-ontopia:tm-rdbms:M1
The methods ImportExportUtils.getReader(String uri) and ImportExportUtils.getReader(LocatorIF uri) now support URIs like x-ontopia:tm-rdbms:M1.
These bugs were fixed in the topic map engine:
Bug #924: Topic reader did not resolve DTDs when referenced by URL.
Bug #863: The way the sanity checker reported topics without a name was broken.
One improvement has been made:
Handling of nots for large result sets has been optimized.
In addition the following bug was fixed in the tolog engine:
Bug #903: NullPointerException given when tolog engine could not determine type of variable.
One change has been made:
Upgraded to Lucene version 1.3 final.
The following improvements have been made:
The object id of a topic is now being displayed on the Omnigator topic page.
All navigator framework JSP tag attributes now allow runtime expressions.
One improvement has been made:
The action configuration file (actions.xml) is now validated against the DTD when loaded.
In addition the following bug were fixed:
Bug #883: The tolog delete action only supported a single expression.
Bug #882: The tolog evaluate LTM action threw a NullPointerException when it didn't get any parameters.
The following improvements have been made:
String comparison in MySQL has been made case-sensitive. In previous releases they were case-insensitive. This was considered a bug.
Fixed a bug in rdbms tolog that caused query parameters not to be passed through to the generated SQL query.
The rdbms test suite now cleans up after itself in the database.
Added the RDBMSTopicMapReader(long topicmap_id) constructor.
This release contains mainly bug fixes and improvements.
New functionality has been added to the RDF support:
The RDF source now supports an external mapping file.
The RDF source now supports the duplicateSuppression parameter.
In addition the following bug was fixed in the engine test suite:
Bug #865: The engine test suite reported three failures on certain versions of Windows. The problem was a bug in the test suite itself, not the engine.
Two improvements have been made:
The reporting of out-of-memory errors has been improved.
The configuration guide has been updated with all tm-sources.xml details.
One improvement has been made:
User objects now use a least-recently used algorithm, which reduces the risk of out-of-memory errors.
The following changes have been made:
MySQL database creating script now uses InnoDB tables so that transactions can be used.
This is the first OKS release for quite some time, and so there are substantial changes, many bug fixes, and some new features. The changes are so substantial that some minor changes are not listed, and some minor bug fixes omitted.
The following functionality has been added to the Omnigator:
Support for displaying association types which form hierarchies using a collapsible tree view, provided they use Techquila's PSIs for hierarchies. Also shows the position of each topic within the hierarchies formed by these association types.
Now displays metadata about each topic map on the topic map page.
Now will display a name (and topic link) for an occurrence when there exists a topic representing the resource the occurrence links to.
XTM topic maps are now validated against the XTM DTD when loaded and validation errors cause the loading to be aborted.
There is a new index on the topic map page: index of nameless topics, which lists all topics which don't have a name. These are often caused by bad cross-references within a topic map.
Better error messages are displayed when topic map loading is stopped because of errors in an XML document, whether HyTM or XTM.
The following bugs have been fixed in the Omnigator:
Bug #718: Topic maps imported from LTM and exported using the export plug-in as XTM would get an .ltm file extension.
Bug #700: The startup.bat batch script would not work on Windows 98.
Bug #669: Full-text searches would fail whenever the ID of a topic map contained a whitespace.
The following changes have been made to the Navigator Framework:
There is now support for Servlets 2.2 and JSP 1.1. Note that to use JSP 1.1 the special TLD files supplied for that purpose in ${basedir}/config/jsp-11 must be used.
The rulesfile attribute was added to the tm:tolog tag. This attribute makes it possible to load tolog rules files in order to make the queries in them accessible to applications.
The parameter attribute was added to the tm:lookup tag. This attribute makes it possible to look up a topic map object from a request parameter.
The to attribute was added to the tm:associated tag. This attribute makes it easier to find the associations between two topics.
The order attribute was added to the logic:foreach tag. This attribute makes it possible to reverse the order in which the loop traverses the collection being iterated over.
The value:sequence tag has been added, which makes it possible to build collections in any desired order.
The template:split tag has been added, in order to support more advanced uses of templates.
Added the stringifier attribute to the output:content tag.
Added the output:debug tag.
Added the NonExistentObject exception, which is now thrown whenever an application is passed an invalid topic map object ID to a page. This allows applications to route the error to a page that displays the error in the way they want.
Added the NoEscapeStringifier class, which is useful for outputting strings containing special XML/HTML characters without escaping.
The following bugs have been fixed in the Navigator Framework:
Bug #541: Non-ASCII characters would not work in topic IDs.
The Web Editor Framework is now out of beta and is now ready for use in applications. The Framework has changed substantially since version 1.4.2, and has also been extended considerably. A large number of bugs have been fixed, and in general the use of the Framework has been simplified substantially.
The changes are sufficiently comprehensive that we have decided not to document them in detail. In general, it can not be expected that applications developed with 1.4.2 will run with 2.0.
The following changes have been made to the Topic Map Engine:
Added the net.ontopia.topicmaps.utils.rdf package. This package provides support for RDF import and export. (See separate documents in the distribution for details.)
The getStore method has been added to the TopicMapIF interface.
Added getAddIds and setAddIds methods to the XTMTopicMapWriter class, in order to make it possible to control whether or not id attributes should be generated for elements which do not represent reified topic map constructs.
Added the URLTopicMapStore class, which supports downloading an individual topic map from a specified URL.
Added a mergeInto method to the MergeUtils class which merges a topic from one topic map into a different topic map.
Added the remove method to the DeletionUtils class. This method removes a topic map object from the containing topic map, regardless of what type of topic map object it might be.
Added the removeTopic(TopicIF topic, boolean removeAssociations) method to the DeletionUtils class. This method makes it possible to control whether associations the topic participates in are deleted or not.
Added the clearTopicMap method to the DeletionUtils class. This method removes the contents of a topic map.
Added the deleteTopicMap method to the DeletionUtils class. This method removes an entire topic map.
The net.ontopia.products.license.LicenseInfo command-line tool has been added. This tool shows where the OKS looks for the license key, and also where it finds the one it uses (if indeed it does find one).
Added a series of static toString methods to the TopicStringifiers class, which produce a name for a topic with various possible scope settings.
Added the TMDeciderUtils class, which can easily create various kinds of useful deciders.
The getByType method has been added to the CharacteristicUtils class. The method returns the first characteristic that is of a given type within a collection.
There have been more changes to the APIs, but these are considered to minor to be worthy of mention here.
The following bugs have been fixed in the Topic Map Engine:
Bug #834: The getInstancesOf method in ClassInstanceUtils was broken.
Bug #827: The URILocator class allowed '#' characters inside fragments.
Bug #813: The mergeInto method in MergeUtils that merges topics in the same topic map did not remove duplicates.
Bug #750: In certain rare cases mergeMap elements in XTM files could cause loading to fail.
Bug #738: The HyTM importer would lose source locators in cases where the same topic was represented by many topic elements.
Bug #679: '+' characters in file names would turn into spaces.
Bug #672: The removeTopic method in DeletionUtils would sometimes throw concurrent modification exceptions.
The following changes have been made to the Query Engine:
Now upgraded to support tolog 1.0. (See the tolog tutorial for information on the new functionality in tolog 1.0.)
Added the execute(String query, Map params) method to the QueryProcessorIF interface. This provides support for dynamic parameters to preparsed queries.
Added the execute(Map params) method to the ParsedQueryIF interface. This provides support for dynamic parameters to preparsed queries.
A number of optimizations have been introduced, which causes certain classes of queries to run dramatically much faster.
The following bugs in the Query Engine have been fixed:
Bug #809: The count aggregate function would also count duplicate results in the in-memory implementations.
Bug #671: Queries on n-ary associations with repeated roles would not work in the in-memory implementation.
Bug #564: The results of symmetric query predicates was not defined.
The only changes to the Schema Tools have been the following bug fixes:
Bug #721: Validator would crash on references to a non-existent superclasses in schemas.
The RDBMS tolog implementation has been updated to support the full tolog 1.0. The following bugs has been fixed:
Bug #758: Exceptions thrown in some rare situations because of problem with cache update.
Bug #680: Association role cache were sometimes out of sync with data store.
Bug #692: Transaction flushing was reentrant and caused infinite loop.
Bug #681: Transaction flusing was not synchronized.
Bug #677: Non-materialized fields written to database when they should not be.
This release is purely a bug fix release.
We have fixed the following bugs in the Omnigator:
Bug #661: Associations where current topic plays multiple roles displayed incorrectly.
The following bugs have been fixed in the Navigator Framework:
Bug #663: Setup servlets did not work with Tomcat 4.1 and shared repositories.
Bug #659: Role players were disregarded when sorting association roles.
Bug #658: ContextTag caching caused problems in Oracle 9i Application Server and WebLogic.
The following bugs have been fixed in the Topic Map Engine:
Bug #657: Base names sometimes lost when merging topics.
Bug #664: File URLs were normalized incorrectly.
Bug #660: In XTM, having a topicRef and a subjectIndicatorRef to the same URI within the subjectIdentity element caused an exception.
In addition, NameIndexIF has now been made auto-updating.
The following bugs have been fixed in the Query Engine:
Bug #655: Queries failed on unary associations.
Bug #662: Bug(s) in merging of results from inference rules.
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:
Bug #656: Class hierarchy loops caused Omnigator to freeze.
Bug #648: Couldn't display topic maps when the superclass-subclass topic (with role topics) was defined, but there were no associations of that type.
Bug #578: Refreshing application configuration failed to work for some configuration settings.
The following bugs have been fixed in the Navigator Framework:
Bug #605: Improved error message when tm:associated gets input that does not only consist of topics.
Bug #634: 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:
Bug #643: Queries of the form related($A : term, $A : term) did not work.
Bug #593: Selecting the same variable twice crashed rather than provide a proper error message.
Bug #615: Order by in tolog did not use sort names.
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:
A beta version of the Web Editor Framework,
Improvements to the Navigator Framework to make it more powerful and easier to use,
An implementation of tolog designed for use with the RDBMS backend, and
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:
Bug #601: The Tomcat batch scripts set environment variables incorrectly on Windows in some cases.
Bug #618: Reloading unloaded topic maps on the Manage page caused an error.
Bug #584: Topics were sorted by base name rather than sort name.
The most important changes to the Navigator Framework functionality are:
The 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.
The tm:tolog tag now has an attribute select for producing a collection of values rather than a map.
The logic:set tag will now produce an empty collection if it has no content, thus making it easier to produce empty collections.
The tm:associated tag has a new attribute produce, which can be used to tell it to produce associations rather than topics.
The tm:subjectAddress tag has been added.
In addition, a number of bugs have been fixed in the Navigator Framework:
Bug #634: A bug in the ontojsp JSP tag interpreter made functions work poorly in Tomcat 4.1.
Bug #624: The tm:name tag would crash if given the wrong kind of collection in its basenameScope attribute.
Bug #583: The Navigator Framework did not work correctly in the BEA WebLogic application server.
Bug #575: The 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:
The 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:
Bug #535: The SubjectIdentityDecider did not distinguish subject addresses from subject identifiers. Nor did any of the many classes that used it.
Bug #623: The LTM parser provided poor error messages when the ID of the topic map collided with that of a topic.
Bug #614: The LTM parser would loop forever if presented with an LTM file which had an internal occurrence that was not terminated with ]].
Bug #582: The XTM importer ignored the XML namespace of elements and used the XML 1.0 element type name to look for XTM elements. Now accepts any element in the XTM namespace.
Bug #522: In XTM documents containing more than one topic map references to the same external document from multiple topic maps will only be loaded for the first topic map.
Bug #538: A mistake in the test code for the module encrypter caused the test suite to fail on Windows due to differences in line endings.
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.
Bug #557: When a topic was an instance of two different classes the validator would not merge the constraints on the two classes correctly.
Bug #629: The OSL importer did not handle superclass references to classes defined further down in the file.
Bug #614: The LTM parser would loop forever if presented with an LTM file which had an internal occurrence that was not terminated with ]].
Bug #582: The XTM importer ignored the XML namespace of elements and used the XML 1.0 element type name to look for XTM elements. Now accepts any element in the XTM namespace.
Bug #522: In XTM documents containing more than one topic map references to the same external document from multiple topic maps will only be loaded for the first topic map.
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:
Bug #627: In some cases constraints in the RDBMS schema would be violated when collection properties were modified.
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 number of objects in each list is now displayed together with the heading.
The association players now have their names selected using the current topic as a theme.
The scope of associations is now displayed using a mouse-over.
The name chosen for the title of the topic page now tries to use the topic types as themes when selecting a name to display.
The free download distribution of the Omnigator now includes the fulltext adminstration plug-in. This plug-in lets you create and delete fulltext indexes for topic maps.
The full-text plug-in 'No index' message is now a link to the full-text administration plug-in manage page.
The "fulltext-admin" plug-in directory has been renamed to "ftadmin", because the Tomcat JSP compiler (Jasper) converts directory names to Java package names and hyphens are not allowed in package names.
The tag libraries have seen some internal changes, and a couple of usability improvements.
The tm:tolog tag now has a select attribute that allows it to produce a collection of topics rather than maps.
The 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.)
The tag library implementation has been optimized, yielding some performance improvements.
The method 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.
Added 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.
Deprecated the following methods in net.ontopia.topicmaps.nav2.core.FunctionIF: getName(), getReturnVariableName(), and call(PageContext, TagSupport).
Added 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.
Added net.ontopia.topicmaps.nav2.core.NavigatorPageIF.registerFunction(String, FunctionIF), which replaces the now deprecated registerFunction(FunctionIF) method.
Bug #560: First content node inside functions was ignored.
The changes to the engine mainly consist in bug fixes, optimizations, and minor API improvements.
The URILocator(File) constructor was added to make it easy to create URI locators from File objects.
The StoreRegistry.isStoreOpen(Object txnuser, String refkey) method was added so that it was possible to figure out if a store for a reference key was open for the specified transaction user.
The UserStoreRegistry class was added to make it easier to use the StoreRegistry in situations where there was only a single transaction user.
The utility class NullResolvingExternalReferenceHandler was added, as a default reference handler that does not resolve any external references.
Added 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.
Added net.ontopia.topicmaps.entry.UserStoreRegistry, a wrapper class for StoreRegistry instances and a single transaction user.
The scope processing code has been optimized.
Bug #545: An exception was thrown when an XTM <topicRef> URI didn't not contain a fragment ("#"). This has now been fixed.
Bug #533: The tm-sources.xml now produces better error messages for certain errors.
The full-text integration has been upgraded to use Lucene 1.2 final. The Lucene change log is available here.
Added net.ontopia.topicmaps.query.core.QueryResultIF.close() which lets query results release its underlying resources.
Added 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.
The syntax of the URI locator returned by 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.
Added 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:
The generation of topic map IDs in links is now improved. It no longer depends on the logic:context tag.
The getTopicMapById(Object txnuser, String topicmapId) method on NavigatorApplicationIF has been deprecated. It will eventually be removed.
The 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:
Bug #538: A weakness in 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.
Some unreported problems with the importInto method in XTMTopicMapReader and LTMTopicMapReader have been fixed.
The following bugs have been fixed:
Bug #540: The positions of the two parameters to lookup by source locator were reversed in 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.
Bug #539: The developer's guide had some out-of-date code exaaples.
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 section 46.3.
If the topic map has a reifying topic with a description occurrence (using the Ontopia description PSI) that description is now displayed on the topic map start page.
The tolog plug-in now lets you specify inference rules.
The Omnigator now displays the source locators of topics at the bottom of the page.
The Omnigator now produces stable links to topics, by using the symbolic IDs from the source files instead of object IDs.
The Omnigator now displays its version number, build details, and expiry date on the welcome page.
The functionality has been extended/changed in the following ways:
The 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:
Bug #513: The output:treediagram tag did not use the user context filter when labelling nodes in the tree.
Bug #489: The 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:
The OntopiaRuntimeException now provides more information, which leads to better error messages in a number of situations.
The 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.
The engine (and the rest of the OKS) has been upgraded to the new log4j 1.2 release. This should have no impact on users in any way.
There have also been a number of API changes:
The 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.
The net.ontopia.topicmaps.entry package has been considerably reworked and expanded, making it much more powerful and usable than it was before.
The 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.
The TopicStringifiers utility class now has a method that lets the user specify desired base name and variant name scope.
The following bugs were fixed:
Bug #524: In some cases subject indicator merges when importing from XTM would result in broken topic maps.
Bug #516: Empty xml:base attributes caused XTM loading to fail.
Bug #457: When importing XTM topic maps, merged-in topic maps would add their source locators to that of the master topic map, which was wrong, and caused problems with reification.
Bug #511: Using scope on an occurrence or association in LTM would give a parse error if an association followed directly after. This was solved by increasing lookahead in the parser.
Bug #523: relative URIs inside XML entities in XTM documents are now resolved relative to the URI of the entity.
Bug #533: Bad error message when entering file as path in tm-sources.xml.
Bug #530: Bad error message from LTM parser when syntax name in #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:
Bug #476: Association predicates where the same role type was used more than once gave wrong results.
The documentation of the player element type in OSL was extended somewhat. The only other change was a bug fix:
Bug #494: NullPointerException on undefined otherClasses.
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 export plug-in can now generate OSL schemas from existing topic maps.
The merge plug-in no longer does name-based merging by default. The option now has to be turned on explicitly.
The following bug was fixed:
Handling of associations with empty (un-specified) roleType fixed. See bug 413.
The behaviour of one tag has changed:
The logic:if tag now treats non-existent variables as being false. This makes it much easier to use the if tag.
The following bugs were fixed:
In some cases equals comparisons done with logic:if would give incorrect results. Now fixed. See Bug #503
The following bugs were fixed:
Runtime license no longer expire after 24 hours. See bug 488.
Class loader license key problem fixed. See bug 484.
Compiling the OKS under JDK 1.4 caused problems with running it on 1.3. This is now fixed.
Security exceptions thrown by the getProperty() calls in applets are now caught. See bug 500.
New features:
The subject index now shows the class hierarchy structure.
The class hierarchy structure can also be displayed as an image with links.
A new default stylesheet has been introduced.
Two new plug-ins were added: the tolog query plug-in, and the OSL schema validator plug-in.
The following bugs were fixed:
Bug #354: Statistics printer didn't use user context.
Bug #399: The CSS stylesheets now uses relative fonts sizes.
Bug #427: The statistics plug-in incorrectly counted topic types with no names.
Bug #448: The statistics plug-in didn't sort occurrences by type correctly.
Bug #459: The statistics plug-in association structure summary failed when association types had no name.
Changes:
The Acme GIF encoder has been replaced by better JGME encoder.
The TreeDiagramTag now produces transparent GIFs.
Multiple values are now allowed for object ids in context tag (bug #330). The navigator test framework has been extended to support this.
"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:
Bug #458: framework:setcontext would throw a NullPointerException when there was no user object in the session.
Bug #455: logic:if would silently accept testing on undefined variables. It now throws an error in this case.
Bug #464: logic:foreach would throw a NullPointerException when there was no user object in the session.
Bug #353: The "logic:set" tag didn't take the user context into account when sorting.
Bug #363: It was not possible to override the default comparator.
Bug #449: Maximum list lengths can now be specified in the navigator configuration file.
Notable changes in this release are:
All Ontopia Knowledge Suite components now support Java2 version 1.4.
Memory consumption has been reduced by, on average, 30%.
Support for LTM version 1.2 has been added. This new version contains some changes that break backwards compatibility. A python script for updating LTM topic maps to the new version is included in the distribution (${basedir}/utils/ltmfix.py). Usage: python ltmfix.py <oldfile> <newfile>
Added support for the ".hytm" file suffix in net.ontopia.topicmaps.utils.ImportExportUtils, because ISO recently renamed its old HyTime-based topic maps syntax to HyTM. See bug 419.
Data URLs used in HyTM topic maps are now being resolved into inline occurrences on import. HyTM export map inline occurrences back into data URLs. Note that this only apply to data URLs with the text/plain content type. See bug 355.
TopicTreeBuilder has been made more robust.
The test suite has been upgraded to use JUnit version 3.7.
The ReificationUtils class has two new methods: getReifyingTopics and getReifiedObjects.
The AssociationBuilder class now has new methods for building ternary associations.
The OntopiaRuntimeException has a new method getCause, which replaces the now deprecated getException, in order to be more in line with JDK 1.4 exceptions.
The TopicMapBuilderIF has a new method makeAssociationRole, which can also set the player of the role.
The following bugs were fixed:
Bug #269: The developer guide did not include documentation of topic map builders and factories.
Bug #300: The ordering of topic map objects in XTM canonicalization in some cases caused object to have the same sort key. The canonicalization specification was updated (version 1.1) to guarantee consistent ordering of objects with different properties. The canonicalizer has been updated according to the new specificiation.
Bug #432: <topicRef> elements occurring inside <subjectIdentity> and referring to external topic maps didn't cause those topic maps to be loaded. They should since the XTM specification clearly states that they should.
Bug #435: Resolving relative URI locators sometimes failed.
Bug #439: Error messages produced by the LTM processor has been made more readable.
Bug #461: The test suites produced lots of namespace-prefix related errors. These errors are now being filtered out by default, since they are of no importance.
Bug #442: The documentation of the MergeUtils.shouldMerge method was inaccurate. This has now been cleared up.
Changes:
The Lucene integration can now work with instances of org.apache.lucene.store.Directory directly. This will for example let you to create and search indexes in-memory using the RAMDirectory class.
The default token stream analyzer is now org.apache.lucene.analysis.standard.StandardAnalyzer, replacing StopAnalyzer.
Token stream analyzers can now be configured for use with the Lucene fulltext engine. This will let you plug your own analyzers. See the classes LuceneIndexer and LuceneSearcher for more information.
The following bugs have been fixed:
Bug #198: The IndexerIF.delete() method has been added. It lets you delete a fulltext index.
Bug #436: The fulltext plug-in didn't take the user context into account when displaying topic names.
Bug #437: The fulltext plug-in didn't process requests with extended characters properly.
Bug #440: The fulltext plug-in displayed long traceback when invalid queries was issued.
The following bugs have been fixed:
Bug #387: Adding objects that had been deleted earlier caused some of the object values to not be included.
Bug #317: Big imports ran out of memory.
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:
The ontojsp JSP execution environment has been updated to support JSP 1.2.
The web application and tag library descriptors were updated to conform to the Servlets 2.3 and JSP 1.2 specifications.
The <framework:setcontext> and <framework:getcontext> tags were added.
The methods 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:
Bug #405: fixing the behaviour of the <tm:superclasses> and <tm:subclasses> tags.
Bug #408: the sequence-first and sequence-last variables were not set correctly by the <logic:foreach> tag.
Bug #376: order of roles within each association in a list of associations was inconsistent.
Bug #238: fixed in September 2001, now officially closed.
In addition, some bugs were also fixed in the Omnigator:
Bug #376: in n-ary associations, topics playing the same role as the current topic were not displayed.
Bug #407: associations with no type caused page display to crash.
Bug #304: order of roles within each association in a list of associations was inconsistent.
Bug #406: binary associations where the same topic plays both roles were displayed as empty.
There were few significant changes in the engine in this version.
Added the getSubclasses(class, level) and getSuperclasses(class, level) methods on net.ontopia.topicmaps.utils.TypeHierarchyUtils.
Added the getBaseAddress and setBaseAddress methods on the net.ontopia.topicmaps.entry.AbstractPathTopicMapSource class.
Three bugs were fixed in this release:
Bug #300: in some cases canonicalization of topic maps would give topics the same sort keys, thus giving random ordering of some topics.
Bug #410: when importing LTM files which had a topic with the sort name PSI and when that topic itself had a sort name the LTM parser would produce bad topic map object structures.
Bug #397: ISO exporter would fail when exporting association roles with no player.
The following bugs have been fixed:
Bug #378: Fulltext testsuite failed on default install (Windows only)
Bug #390: The Ontopia Full-text Integration - A Developer's Guide document has been updated to include information about the RDBMS URL scheme.
The following public class has been added::
RDBMSTopicMapReader
The following bug has been fixed:
Bug #390: The RDBMS Backend Connector - A Developer's Guide has been updated to include information about the RDBMS URL scheme.
This release has seen a number of minor improvements in the navigator framework. The changes in the tag libraries are:
The <output:treediagram> tag no longer uses Batik, but instead uses an open source GIF encoder. This makes the distribution a lot smaller.
The <tm:names> tag now rejects duplicate name objects.
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:
net.ontopia.topicmaps.utils.TopicTreeRendrer.renderImage()
net.ontopia.topicmaps.utils.ImportExportUtils.getReader(String propfile, String filename_or_url)
net.ontopia.topicmaps.utils.ImportExportUtils.getReader(Map properties, String filename_or_url)
The following features has been added:
The LuceneIndexer command line tool can now index topic maps via the RDBMS Backend Connector. Such topic maps can be referenced using URLs of the following type "x-tm:rdbms:<topicmapid>", e.g. "x-tm:rdbms:5001".
The LuceneIndexer now accepts the --props=propfile option, which references the topic map store properties file.
The following constructors has been added - all to make it possible to pass topic map store properties as a Map instance:
RDBMSTopicMapStore(Map properties)
RDBMSTopicMapStore(Map properties, long topicmap_id)
RDBMSTopicMapSource(Map properties)
This release adds some new tags, and fixes a large number of bugs. The changes in the tag libraries are:
The <tm:topics> tag can now have other tags as content.
The <tm:lookup> tag has two new attributes: basename and variant.
The <output:name> tag has a new attribute 'stringifier', which can be used to control the rendering of names.
The <logic:if> tag has a new attribute 'sizeEquals', which can be used to test the size of a collection.
The following bugs were fixed in the Navigator Framework in this release:
Bug #371: <tm:lookup> does not work with relative URIs.
Bug #369: <logic:foreach> does not set up context correctly.
The following bugs were fixed in the Omnigator in this release:
The following method has been added:
net.ontopia.topicmaps.utils.ClassInstanceUtils.resolveAssociations()
One old bug has been fixed:
Bug #67: Class-instance associations not recognized
The following features has been added:
Support for JDBC batch writing. This option boosts performance with large transactions and in environments where network lag is an issue, since the number of network requests needed is significantly lower and the database may provide optimizations for performing lots of similar database modifications in batches.
JDBC Connection pooling. Note that this features requires the JDBC 2.0 Optional Package API to be installed. See the requirements section in the installation guide for more information.
Ability to disable conforming queries via configuration property, i.e. no longer guaranteeing that database query results matches changes in the current transaction. In this case there may be outstanding transaction changes that have not been written to the database to the time the query is issued. Be careful when disabling conforming queries.
Subject identity lookup in the database can be disabled via a configuration property. Warning: This option should only be used when it is known that topic map objects in the database with requested identities does not exist.
Changes in the database schema:
The following changes were done in the database schema because of the column name 'value' sometimes conflicting with the 'VALUE' SQL keyword. If you have database instances using the old database schema you need to perform the following changes the database schema:
Rename TM_BASE_NAME.value to TM_BASE_NAME.content
Rename TM_VARIANT_NAME.value to TM_VARIANT_NAME.content
Rename 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:
The new <tm:sourceLocators> tag for retrieving the source locators of a topic map object has been added.
The new <tm:reified> tag for retrieving the object reified by a topic has been added.
The <tm:filter> tag has a new attribute 'is', which can be used to filter objects according to whether they are topics, base names, occurrences, associations, or something else.
The <tm:filter> tag can now use instances of DeciderIF and not just NavigatorDeciderIF.
The 'sequence-index' variable set by the <logic:foreach> tag now begins with 1, rather than 0, as it used to.
The following bugs were fixed in the Navigator Framework in this release:
Bug #334: <logic:call> does not work inside modules.
Bug #335: <logic:externalFunction> should not call the function, just register it.
Bug #339: <output:name> and <tm:name> do not support variant name selection.
Bug #342: Navigator framework should support more than one content-type in the same web application.
Bug #350: Plug-ins are hardcoded to 'omnigator' directory.
The following bugs were fixed in the Omnigator in this release:
Bug #320: Reified topic map objects not displyed on topic.
Bug #349: Make Omnigator display better in Netscape 4.
The following method has been added:
net.ontopia.topicmaps.core.TopicMapTransactionIF.getBuilder()
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:
when importing XTM documents, unknown elements in the XTM namespace are now warned about, and
MergeUtils did not copy source locators from source objects to target objects, but this is now fixed.
Four new classes have been added:
net.ontopia.topicmaps.utils.ImportExportUtils,
net.ontopia.topicmaps.utils.ReificationUtils,
net.ontopia.topicmaps.utils.AssociationBuilder, and
net.ontopia.topicmaps.utils.DuplicateSuppressionUtils.
Only one bugs were fixed in this release:
Bug #259; misspelling the name of the topicMap element causes NullPointerExceptions.
Bug #305; topic map ID sometimes set to file URI on export.
Bug #308; LTM reader did not handle duplicate subject indicators.
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:
Bug #237 fixed; export of empty and null strings generally improved,
Bug #241 fixed; XTMContentHandler and internal class ContentHandler of XMLConfigSource now use qualified name of element instead of local name in methods startElement and endElement,
Bug #244 fixed; subject indicator references from topics to reified topic map objects are no longer broken on export to XTM format, and
Bug #245 fixed; the ISO export can now handle the case where the PSI for display or sort name appears as a source locator instead of as a subject indicator.
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.
The tomcat version bundled with the navigator was upgraded from version 3.2.1 to 3.2.3. This makes the navigator start much faster, and also closes a serious security hole in tomcat.
Bug #225 (Plug-ins don't work in Netscape 4.x) has been fixed.
Bug #226 (Statistics table display problems in Netscape 4.x) has been fixed.
The 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:
Bug #219 (Obscure merging bug) has been fixed.
Bug #222 (Problem with null role players in merging) has been fixed.
The XMLConfigSource class was made more robust. It now gives much better error messages when problems occur.
Some new test cases have been added. Some of these test for the fixed bugs, others test new things.
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 Navigator framework has been extended to support a user context filter, which users can use to apply scope filtering to topic maps, in order to filter out unnecessary information or, for example, switch the language they are navigating in. The user context filter is described in more detail in The Ontopia Omnigator User Guide.
The Navigator has been extended with the concept of plug-ins, which are encapsulated functionality that can be dropped into Navigator applications. This concept is described in the Ontopia Navigator Plug-ins Developer's Guide.
The Navigator 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 loaded directly into Navigator applications.
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:
DescriptionOccurrencesTag
FacetValueTypesTag
IndexScopesTag
ResourceFacetValuesTag
SubjectIndicatorsParentTopicsTag
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.
Added the 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.
Added the TopicCharacteristicsGrabbers class as a generalization of DisplayNameGrabber. DisplayNameGrabber was deprecated accordingly.
Added the UnconstrainedScopeDecider class as an easy way to make other scope deciders accept all objects in the unconstrained scope.