|
This document describes what has changed in Ontopia between releases, both at a higher level, and in more detail.
This release is a bug fix and cleanup release and adds the new NameIF interface.
The following changes have been made:
Added NameIF interface to support operations that can return any name.
More generics were added to the Ontopia interfaces
The dependencies to patched artifacts hosted by the Ontopia repository (jing, trove and touchgraph) have been refactored to their respected pulic counterparts. This means the Ontopia repository is no longer present in the POM.
Removed the PoolableSetFactoryIF, PoolableSetIF and SetPoolIF interfaces and their implementing classes.
Improved the closing of TopicMapSourceIF objects when closing a TopicMapRepositoryIF object fixing possible memory leaks and clustering issues.
Added missing implementations for persisting reference title and base address changes in an RDBMS environment
Added functionality to LTM parser that allows reification based on a prefixed PSI
Added functionality to LTM parser that allows predefined PSI prefixes to be used when exporting a topic map
A long standing issue regarding difference of topic map loading in Navigator and Engine has been resolved. (issue 392)
Added fallback-value functionality to tolog:id, tolog:oid and tolog:oid
Improved tag pool handling in navigator tags, also added tests for this.
Fixed the export of topic maps within Ontoploy (issue 466)
Fixes missing classes in the Vizlet (issue 450)
Upgraded to SLF4J 1.7.5
Fixed issues in the TMRAP-webapp that were blocking the Axis SOAP service. Note that the presence of Crimson on the classpath will still stop TMRAP from working as a SOAP service.
The following bugs have been fixed:
Issue 422: ontopia/pom.xml contains duplicate maven-javadoc-plugin dependency
Issue 446: Export in Ontopoly produces 0 byte file, Export in Ominigator produces correct result
Issue 452: LTM reification should support prefix:suffix notation
Issue 454: LTMTopicMapWriter should support user defined prefixes
Issue 457: Cannot create symmetric associations with the browse dialog
Issue 460: Omnigator documentation specifies incorrect path for topicmaps location
Issue 466: TMRAP webapp fails to start due to missing axis class
Issue 467: tolog:out, :oid and :id tags should support fallback value
Issue 468: RDBMSTopicMapSource should implement close() method
Issue 471: RDBMSTopicMapReference should implement methods to get and set base address
Issue 473: RDBMSTopicMapSource.refresh might leave references open
Issue 474: Documentation pages are missing tables of contents and section numbering
Issue 475: RDBMS clustering throws exception when shared cache is off
Issue 476: JGroups fails to include sub-dependency commons-logging
Issue 479: Ability to build Ontopia without need for port 8080
Issue 480: PoolableSet[Factory][IF] and SetPool[IF] classes are unused and should be removed
Issue 482: Ontopia distribution contains duplicate libraries
Issue 483: Revision r2338 exposes error in tolog SetTag when used with tag pooling
This release is a bug fix release and introduces some new API methods for TopicIF.
The following changes have been made:
TopicIF now has the new optimized methods getOccurrencesByType(), getTopicNamesByType(), getAssociations() and getAssociationsByType(). The RDBMS implementation uses SQL queries for these methods to increase performance.
A long standing issue regarding merging of occurrence and name types in RDBMS topicmaps has been fixed (issue 409)
Statistics of a topicmap can now be obtained from the new StatisticsIndexIF index
TMXMLWriter now supports setting prefixes beforehand
The following bugs have been fixed:
Issue 447: The PostgreSQL specific searcher implementation is broken due to deprecated function use
Issue 448: Topicmap statistics should be available though API
Issue 411: TopicIF should have a getOccurrencesByType(TopicIF type) method
This release is a minor bug fix release, which includes the fixed vizigator and omnigator vizlet.
The following bugs have been fixed:
Issue 439: TopicNameComparator might throw NullPointerException
Issue 440: bat file pointing to noneixisting jar file in 5.2.0
This is the first release in the new Maven structure. It includes the modularization of Ontopia along with bug fixes along with some new functionality.
The following changes have been made:
Ontopia is now divided into Maven modules based functionality. For developers working with Ontopia as a dependency this means that there is a more controlled way of including parts of Ontopia as a dependency. This change does not affect Ontopia distribution users.
The distribution has been updated to include Tomcat version 6.
The DB2TM functionality has been extended and improved.
Ontopoly had several outstanding bugs. Support for exporting TM/XML and schema without data was added.
Tolog now supports negative integer values and some basic numeric operations through the numbers module.
Ontopia now uses Lucene 2.9.4 (up from 2.2.0).
The following bugs have been fixed:
Issue 60: Tweak the directory-structure to add initial Maven2 support
Issue 307: Omnigator doesn't show correct "untyped" name for topics
Issue 325: Ontopoly date and datetime fields don't allow user input
Issue 368: Ontopoly 5.1.3 fails to add Subject identifier Identity for Topic classes
Issue 369: Ontopoly - Removing fields from topic type definition
Issue 381: StreamUtils.readString might return incorrect result
Issue 383: Not all TMAPI2 test are ran in the trunk, and fail when enabled
Issue 384: LTM export of RDBMS readonly topicmap causes ClassCastException
Issue 385: tolog subject-locator predicate returns wrong costs iff topic is bound and IRI is unbound
Issue 387: Docs "The Built-in tolog Predicates" - Wrong example for the reifies predicate
Issue 389: coalesce() predicate in ontopia 5.1.3 doesn't allow unbound second argument
Issue 389: coalesce() predicate in ontopia 5.1.3 doesn't allow unbound second argument
Issue 391: QueryUtils circumvents query processor caching for non-tolog languages
Issue 393: JFlex is an unnecessary compile/runtime dependency
Issue 397: Documentation for Ontopia Web Editor framework is broken.
Issue 412: Ontopoly instances page takes very long to load on types with a lot of intsances
Issue 417: Ontopoly access right 'NONE' gives a user read-write rights
This is a minor bugfix release that mostly fixes bugs, but also adds some fairly minor new functionality.
The following changes have been made:
The TopicMapFragmentWriterIF interface has been added, providing a common interface to fragment exporters.
An RDF/XML fragment exporter has been added.
Major performance improvement in the retrieval of possible role players in Ontopoly.
The reordering of dynamic association predicates in tolog has been improved.
An Omnigator plugin for running DB2TM synchronization has been added.
Error reporting when DB2TM functions fail has been improved.
Several new utility methods have been added to the KeyGenerator and MergeUtils classes.
The following bugs have been fixed:
This is a minor bugfix release that fixes two issues in Ontopoly.
Issue 320: Geotagging in Ontopoly: failed searches give no response
Issue 322: Ontopoly: list of "other topic maps" in random order
The main new feature in this release is the support for geotagging in Ontopoly. Briefly, if the longitude and latitude occurrences are added to a topic type, all topics of that type will get a button to open a geotagging window. In this window a position on a map can be chosen, and this position will be written into the occurrences.
Further, pluggable support for authorization and authentication was added to Ontopoly, as described in the wiki.
Beyond that this release features mainly the following bug fixes:
Issue 48: Ontopoly repository out of sync with the underlying topic map repository
Issue 105: Instance list in Ontopoly no longer displayed as tree when there is no tree
Issue 240: Problem with character " (quotation mark) in Ontopoly
Issue 287: tolog updates in Omnigator had no effect on RDBMS
Issue 292: Topic selection in hierarchy didn't work in Ontopoly
Issue 302: Cost estimator in value-like predicate caused errors
Issue 305: Merging away sort and display topics in LTM caused errors
This release introduces some major new functionality in Ontopia:
The automated classification is now available through public APIs and a command-line client. See the automatic classification developer's guide in the documentation index for more details.
The INSERT, UPDATE, DELETE, and MERGE statements have been added to the tolog query language, allowing it to also perform updates. See the section on updates in the tolog language tutorial for more information.
Support for XTM 2.1 has been added, together with some new classes to support it. Note that the XTMVersion class has been introduced to provide identifiers for the different versions.
Support for JTM 1.0 import and export has been added.
The CTM importer has now been updated to the final CTM specification.
Ontopoly can now be embedded in other applications using jQuery, as shown in the [file: examples/embedded-jquery.jsp] example in the Ontopoly distribution.
The query plugin in Omnigator now supports pluggable query language implementations, and also supports tolog updates.
In addition, some API changes have been made:
The core API now uses generics, making it much easier to use.
TopicNameIF.getType() never returns null any more, since the default name type now is always represented by a topic.
The coalesce predicate has been added to tolog (see the predicate reference).
Some new methods have been added to the QueryWrapper class in the net.ontopia.topicmaps.query.utils package.
The makeKey(ReifiableIF r) method has been added to the KeyGenerator class in the net.ontopia.topicmaps.utils package.
mergeInto methods for all TMObjectIFs have been added to the MergeUtils class in the net.ontopia.topicmaps.utils package.
The getFastSortNameStringifier method has been added to the TopicStringifiers class in the net.ontopia.topicmaps.utils package.
The TMRAP add-fragment request now supports CTM input.
The following bugs are fixed in this release:
Issue 135: Omnigator: NullPointerException in getScopeDecider
Issue 264: Query plugin in Omnigator doesn't handle non-latin-1 characters correctly
Issue 254: tolog "reifies" predicate returns error on finding refiers of a topic
Issue 244: DB2TM schema disallows iid/slo prefixes, but they actually work
Issue 238: Exception on instance topic in Ontopoly
Issue 237: Interning of locators caused out of memory error in the engine even when there was more memory left
Issue 231: TopicType not serializable exception in Ontopoly
Issue 228: TMAPI TopicMap/TopicMapSystem.close() doesn't commit current transaction
Issue 214: TMAPI ScopedIndex throws NullPointerException
Issue 209: TMAPI Variants allow empty scope
Issue 208: Ontopoly should not clear field when cardinality is 0-1 or 1-1 and field has multiple values
Issue 193: DB2TM synchronization strips topic type
Issue 184: Cannot disassociate second topic type of an instance in Ontopoly
Issue 176: Omnigator: ClassNotFoundException when exporting to RDF
Issue 132: Copy assotiation type does not work correctly in Ontopoly
Issue 121: Ontopoly: field list updated incorrectly when subtyping
Issue 99: tolog should not count null values
Issue 93: tolog reordering optimizer makes query much slower
Issue 238: InvalidQueryException when viewing certain topics in Ontopoly
Issue 216: DB2TM makePSI function strips out chars 9 and z
Issue 208: Problem with hierarchy-walker optimization in tolog
Issue 207: tolog topic and association predicates do not filter correctly
Issue 143: Bad syntax error reporting in LTM reader
Issue 111: XTM 1.0 importer uses non-standard PSIs
Issue 267: Broader/narrower association type names in the wrong direction in MyThesaurus.xtm
Issue 252: Add update-topic method to SOAP version of TMRAP
Note that a minor modification has been made to the Ontopia database schema on MySQL in order to fix a failing test. See issue 163 for a description of the problem and how to upgrade older databases.
This is a bug fix release, specifically released in order to make the fix in revision 486 available to a customer who needed this fix. The fix solves performance problems with tolog inference rules parsed into DeclarationContextIF objects.
A few other very minor fixes are also included in this version, which is otherwise very similar to 5.0.1.
This is a micro release, containing bug fixes and minor improvements throughout the product. Please consult the lists below to see the actual changes.
The following changes have been made:
Ontopia now runs on Google AppEngine, thanks to two small fixes (118, 114)
Minor improvements in TologSpy to make reports more readable
tolog plug-in in Omnigator can show query plan without running query
New version of Italian Opera topic map.
The following bugs have been fixed:
The biggest change with this release is a business change: the product is now open source, and the name has changed from the Ontopia Knowledge Suite to just Ontopia. A consequence of this change is that the license key restrictions are now completely gone from the product. You no longer need a valid license key to run Ontopia.
The following changes have been made:
Ontopia now requires Java 1.5.
The old TMAPI 1.0 support has been removed, and support for TMAPI 2.0 added in its place.
The tolog query engine now has a new optimizer. See the blog for more details.
The net.ontopia.topicmaps.query.utils.TologSpy class has been added, providing a jdbcspy-like query profiler for tolog queries.
The net.ontopia.topicmaps.utils.QNameRegistry and QNameLookup classes have been added, providing convenient lookup of topics using qnames.
Ontopia now uses the Simple Logging Facade for Java (SLF4J), which makes it easy to switch logging tools, if desired.
The old net.ontopia.product classes have been removed, in favour of a single new class named net.ontopia.Ontopia.
The old net.ontopia.infoset.fulltext API is no longer supported and will be removed soon. The full-text search in tolog will continue to work.
The command-line tool net.ontopia.topicmaps.cmdlineutils.Canonicalizer has been updated to output ISO CXTM instead of Ontopia's old non-standard canonical format.
The following bugs have been fixed:
Issue 2: template definitions crash CTM parser
Issue 3: Name typing breaks on import into Ontopoly
Issue 9: Nontopoly model in Omnigator broken
Issue 17: Exception thrown in Ontopoly when clicking Add on "Add or remove topic type" when no topic type selected
Issue 20: Exporting topic maps without schema broken in Ontopoly
Issue 28: Merging lost item identifiers if they were the same as some subject identifier
Issue 36: Ontopoly export without schema loses description occurrence
Issue 37: TMSync does not synchronize reification
Issue 58: VizDesktop doesn't work with Sun 1.5 JRE under Gnome
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 25.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 25.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 32.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.