Alignment API: Release notes

# Alignment API, release notes

Release numbers: major release numbers are for majors redesign that will modify the API and may lead you to change your code; minor release numbers bring bug fixes and new functionnalities but should not require change in existing code.

## Plan for release 5 (you can comment)

The next major release, release 5, is now in sight due to various constraints and needs that have arousen in the past months. Here are the main ruptures that will appear:

- The use of Java 1.5 parametrization facilities for refining the API: Hence we will define `Alignment<Ontology,Ontology,Relation,Confidence>`. This will provide the opportunity to define everyone owns relation (and generalise the use of relation algebras). (api/impl)

Other less radical changes include:

- Implementation of `Relation` and `Confidence` interfaces

Currently the development and maintainance of 3 versions continue.

## Under development (you can contribute)

- Integration of SKOS API (ontowrap)
- Implement full OWL rendering of EDOAL (impl)
- Adding type checking to EDOAL paser (parser)
- Implement fully relaxed precision and recall (impl)
- Implement database store for EDOAL (server)
- Integrate some basic reasoning.
- Complete tutorial4 with reasoning.
- Genericize evaluators in `GraphEvaluator` and `GenPlot` (eval)
- Implementation of a provenance metadata tag (server/impl)
- Online evaluation (server)
- Providing a `DiffAlign( al1, al2 )` operation and interface (util)
- Replace `DistanceAlignment` with a version more in line with OntoSim (impl)
- Improve HTML interface layout and usability (server)
- Implement metadata edition (server)
- Implement correspondence selection (server)
- Implement `ontowrap` support in database store (server)
- Render alignments as module descriptions (impl)
- Implement extensive evaluation framework (impl)
- Implement debug options with log4j
- Add more tests

## Current SVN trunk version

## Version 4.0 (1415): 31/03/2010 - Rouquine carmélite

The Alignment API is now compiled in Java 1.6 (older versions should still be able to run it). All imported libraries have been upgraded to their current versions. Only the upgrade from Jena 2.5 to 2.6 required a minor change (due to parameterised declarations: the API still works with 2.5 but needs 2.6 to compile).

This is still a major release, so see the (small) instructions if you need to upgrade your codebase.

- Integration and reengineering of OMWG alignments as the new EDOAL language (edoal)
- Separated the Alignment API from OntoSim (impl/ling)
- Replacement of `Parameters` by Java `Properties` (api/impl)
- Reintegrated `JWNLAlignment` in implementation (procalign)
- Separated `ontowrap` (previously `onto`) as a distinct library (ontowrap)
- Migrated to OWL API 3 as the default Ontology implementation (ontowrap)
- Lifted OWL API 3 as `HeavyLoadedOntology` (ontowrap)
- Added cache management to `JENAOntology` (ontowrap)
- Addition of advanced tutorial and reengineered tutorials (doc)
- Implemented semantic precision and recall (impl)
- Implemented ROC curve computing and reimplemented the plotting structure. Now they are based on harmonic means instead of average. (eval)
- Fully implemented `find` to interface (server)
- Completely modified the web service interface so that SOAP and REST are fully aligned. This is now documented (serv)
- Added a `listevaluators` primitive to the service interface (serv)
- Added computation of MAP (Mean Average Precision) in `PRGraphEvaluator` (impl).
- Added pretty-printing of names in server (server)
- Added provenance tracking in server (server)
- Added initialisation through initial alignment in `MatrixMeasure` (impl)
- Added a parameter to the `OWLAxiomsRendererVisitor` so that it could render heterogeneous axioms, like Class sameAs Property (impl).
- Upgraded NeOn plug-in to work with NeOn toolkit 2.3.0 (plugin)
- Rewritten NeOn Alignment plug-in interface so that it works on more platforms (plugin)
- Added documentation for the NeOn Alignment plug-in (plugin)
- Suppressed `OWLAPICell` and `OWLAPIAlignment` (deprecated since version 3.3) (impl)
- Changed the signature of `` from `Enumeration` to `Collection<Alignment>` (server)
- Reorganised the lib directory hierarchically (build)
- Corrected missing `hashCode()` (bug #9680) (impl)
- Corrected a bug when the server is launched without -S (server)
- Fixed error message in server (#8502: org.apache.xml.resolver.readers.CatalogReader: deprecated) by upgrading resolver.jar (server)
- Corrected a bug in `HTMLRendererVisitor` that made the display of alignments, especially stored, to break (server)
- Corrected the README.TXT of examples/wservice (serv)
- Corrected a bug in retrieving alignments from ontologies when the two ontologies are the same (server)
- Corrected a bug in triming, which left one item too much (impl)
- Corrected a bug when `StringDistAlignment` fails to raise exception when unknown method is given (impl)
- Corrected a problem due to parser reentrance which led two alignment parsed by the same parser to go into the same alignment (parser)
- Corrected a bug introduced in 3.6 which prevented from storing the "stored" date of alignments (server)
- Corrected a bug in the "find" primitive of service (server)
- Corrected a bug that prevented proper search of `aserv.wsdl` file in all imported jars (server)
- Corrected a bug in tests that did not force to clean-up the state after `OntoTest` (test)
- Corrected a (commented) error in the `wine.xml` OMWG example (edoal)

## Version 3.6 (988): 27/05/2009 - Sabai sabai

BEWARE: Java WordNet Library (JWNL) has been upgraded to version 1.4.1rc2 (from 1.3rc3). This is included in the lib directory. Hence, it is necessary to use WordNet-3.0 (the jwnl part will not work anymore with 2.0). If you want to stay with WordNet-2.0, you need to replace the jwnl.jar library by the older one and this will work. However, using WordNet with the Alignment API is not compulsory.

- `tokenize` has been moved from `JWNLDistances` to `StringDistances` (ling)
- Added REST interface to the HTML interface (server)
- Addition of the notion of `OntologyNetwork` made of a set of ontologies and alignments within the API (api/impl/test).
- Added new gap based (hardgap and propgap) methods in `BasicAlignment.cut()` (impl)
- Added new methods (Cosynonymy, Wu-Palmer) in JWNLDistances (ling)
- Added tests for ling and set noling as default in build (test)
- Added the possibility for `OWLAxiomsRendererVisitor` to output relations between individuals (renderer)
- Added JDBC drivers for Postgress and improved mySQL code for genericity (server)
- Improved renderers with more metadata (renderer)
- Completed individual alignment and extraction in `DistanceAlignment` (impl)
- Completed matrix printing in `MatrixMeasure` (impl)
- `ConcatenatedIterator` is now parameterised and iterable (impl)
- Corrected a bug in `XMLMetadataRendererVisitor` (renderer)
- Corrected a bug in `RDFRendererVisitor` that output rdf:ID="" (renderer)
- Corrected a bug in `OWLAxiomsRendererVisitor` for generating disjointWith statements (renderer)
- Corrected a (rare) bug in server which was not able to recognise URIs (server)
- Corrected a bug in `BasicAlignment.cut("best")` (impl)
- Prevented `OWLAxiomsRenderer` from returning equivalence between Data and Object properties and, in general, heterogeneous equivalences (impl)
- Cleaned up the wservice example (examples)

## Version 3.5 (886): 21/10/2008 - La granja

- Deprecated `Alignment.init(onto,onto,cache)` in favour of `Alignment.init(onto,onto)`, see below (api)
- NeOn plug-in compatible with NeOn toolkit 1.2 (plugin)
- `OntologyCache` is now local to each `OntologyFactory`, it does not need to be manipulated from outside (onto)
- Implemented `owlapi10` as `HeavyLoadedAlignment` (ontowrap)
- Completed the integration of Jena ontologies (ontowrap)
- Implemented basic algebraic operations (impl)
- Added diff algebraic operation (api)
- Reengineered parameter passing for web service interface (server)
- Updated `SKOSRendererVisitor` to work with 2008 version of SKOS, old version can be obtained by parameter `pre2008` (impl)
- Suppressed `GenTriangle` (util)
- Corrected an error preventing DistanceAlignment to consider individuals (impl)
- Corrected SWRL format missing rdf namespace (impl)
- Corrected an error transmitting the DBMS coordinates on the web (server)
- Corrected a bug in `SKOSRendererVisitor` and `XSLTRendererVisitor` (impl)
- Started to put copyright notices to INRIA instead of INRIA Rhône-Alpes (misc)
- Used Java 1.5 print Formatter instead of our printFormat (impl)
- Unit tests for onto and owlapi10 (ontowrap)

## Version 3.4 (815): 31/08/2008 - Barbare

- Implemented WSAlignment connecting to remote web service for matching (server)
- Deprecated `Cell.getObjectXAsURI()` in favour of `Cell.getObjectXAsURI(Alignment al)` (api)
- Upgraded NeOn plug-in for working with NeOn toolkit 1.1 (plugin)
- Implemented OWL API 2 support [not shipped] (ontowrap)
- Added `init( Parameters )` arguments to visitors (api)
- Implemented `embedded` parameter allowing to avoid ?xml declaration when embedded (renderer)
- Added `derivedFrom` standard annotation and implemented it (impl)
- Added `method` annotation for `clone()` and `inverse()` (impl)
- Added `initAlignment(URIAlignment)` to parser (parser)
- Added `parse(InputStream)` to parser (parser)
- Parser now ignore SOAP envelops (parser)
- Implemented a better recovery in case of database connection loss (server)
- Implemented cache flushing functions (server)
- Provided better return forms in `HTMLAServManager` (server)
- Catched `init()` errors in server (server)
- Reorganised HTML interface (server)
- Added indentation and namespaces in the Web service interface (server)
- Implemented WebContent plug-in (plugin)
- Improved NeOn plug-in documentation (html)
- Increased the size of relation id to 25 char (server)
- Corrected `MyAlign` example which was not adapted to the new onto structure (examples)
- Corrected tutorial so that it works with new code (tutorial)
- Corrected an error of the `Cell.inverse()` method (impl)
- Corrected an error in storing alignments (server)
- Corrected an error in the MANIFEST of the NeOn plug in (plugin)
- Corrected an error that prevented the server to work on Windows (server)

## Version 3.3 (710): 24/04/2008 - O sole mio

- Suppressed language dependent (OWLAPI) alignments (impl)
- Deprecated `OWLAPIAlignment` to be replaced by `ObjectAlignment`
- Reimplemented the whole API in function of the onto package (impl)
- Added an abstract ontology package allowing to change API (ontowrap)
- Added Jena 2.5 ontology plug-in (ontowrap)
- Changed HTML renderer to XHTML+RDFa (impl)
- Made `Alignment` iterable<Cell> (api/impl)
- Improved NeOn plug-in and upgraded to NeOn toolkit 1.0 (plugin)
- Corrected a bug in Web service when the content was XML (server)
- Corrected a bug when loading an alignment with id (server)
- Corrected a bug in AlignmentParser that overlooked formalism URI (parser)
- Passed to Java 1.5 generics [incl. API modif] (dev/api)
- Added first unit tests (TestNG) (dev)
- Passed all code through lint (dev)
- Corrected link to documentation (doc)

## Version 3.2 (666): 29/02/2008 - Blejsko jezero

- Connection to Oyster directory (server)
- Added the opportunity to run matchers asynchronously (server)
- Made sure that http server is launched when wsdl option is chosen (server)
- Moved NeOn toolkit plugin in the plugins/neon (plugin)
- Cleaned-up working NeOn plug-in for NeOn toolkit (plugin)
- Introduced abstract directories (server)
- Improved the WordNet interface by introducing version. 3.0 is default (ling)
- Reinstated the possibility to use the old namespace in the parser (parser)
- Corrected a bug that prevented to store alignments in Web service interface (server)
- Passed command line parameters to `align()` (server)
- Created an Annotation class for storing static strings (impl)
- Enriched Ontology objects (impl)
- Progressed in the implementation of alignment composition (impl)
- MANIFEST generation in buildfile (distrib)
- Improved version number management
- Javadoc generation flawless in buildfile (distrib)
- Revised reference manual (doc)

## Version 3.1 (614): 05/02/2008 - Klippekort

BEWARE: For better conforming with RDF practice, we have

- Changed the Alignment namespace by adding a '#' at its end (format).
- Modified the extension mechanism so that getExtension and setExtension take a namespace URI as first argument (api).
- Modified the service database extension format for recording this URI (server).

Other improvements include:

- Implement level 2OMWG alignments by using OMWG Mapping API (impl/omwg)
- Integrated first NeOn toolkit plugin (plugin)
- Added a `parseString( String )` method in `AlignmentParser` (parser)
- Implemented parsing of relations named by class name (parser)
- Added more ontology information in format, changed the implementation of ontology descriptions (format/parser/impl)
- Modified the Alignement namespace by adding a '#'(format)
- Separated namespace from pName in extension keys
- Added Web Service Alignment server profile (server)
- Multithreaded matching in Services (server)
- Got rid of the property file for wordnet (ling)
- In Server/FIPA, suppressed generated files on `close()` (server)
- Suppressed all printouts (Jade or Jetty logging) (server)
- Added file logging option (server)
- Added the inverse operation (server)
- Completely rewritten autodetection of renderers and methods in server (server)
- Modified interface of embedded methods
- Added guarantee that results displayed by `GroupEval` be sorted (thanks Vassilis Spiliopoulos) (util)
- Added namespace support in BasicAlignment (impl)
- Forced trailing slash in HTML menu URLs (server)
- Added fetching alignments from URIs (server)
- Changed for Jetty as an embedded HTTP server (server)
- Implemented alignment upload (server)
- Corrected an error on "force"-ing alignment in Server/HTML (was inverted) (server)
- Corrected a bug concerning extension namespaces (impl)
- Corrected a bug in the DistanceAlignment Hungarian method extraction (impl)
- Corrected bugs in relation writing/parsing (parser)
- Corrected a bug in `SubsDistanceAlignment` when URI have no fragments (method)
- Improved web pages (reorganisation) (html)
- Transferred the TODOs to gforge (html)
- Updated tutorial sh and bat scripts, thanks to Angel Lopez Cima (tutorial)
- Added a server-based tutorial (tutorial)

## Version 3.0 (436): 25/02/2007 - Hyderabad

BEWARE: The main modification in this version is more independence from the OWL API which is not anymore compulsory. Consequently, the existing implementation of matching methods with Alignment API should undergo some modifications: Here is how to do (this document has been updated to help migrating directly to version 3.3 if necessary).

The Alignment API is now compiled in Java 1.5 (older versions should still be able to run it).

- Separated `BasicAlignment` from `OWLAPIAlignment`
- Implemented `URIAlignment`
- `AlignmentParser` returns an `URIAlignment`, for obtaining an `OWLAPIAlignment`, use `OWLAPIAlignment.toOWLAPIAlignemnent(URIAlignment)`.
- Introduced an abstract notion of `OntologyCache` object in place of the previous `Hashtable` (this is independent from the OWL API)
- Based all implemented methods on `OWLAPIAlignment`
- Implemented all renderer methods for `URIAlignments` (but those requiring `OWLAPIAlignment`)
- Adapted all util functions to the relevant methods
- Added autodetection of renderers and methods in server
- Added menu of available alignments when possibles
- Added cut method in server
- Added JADE (FIPA/ACL) Alignment server profile
- Added correspondence annotations
- Revised server database structure, implemented automatic creation of the database
- Protected database insertion with safe-quoting function
- Suppressed all useless import and imprecise catch
- Suppressed "localhost" from local URL in README, tutorial and documentation
- Reorganised the root directory (renamed samples into examples, deleted rdf and aligns);
- Redefined the example suite in README.TXT;
- `PRecEvaluator` now counts as false in precision and recall, cells which previously were not acounted because they raised an exception. This is because, alignments are judged based on URI and not OWLAPI entities anymore.

## Version 2.5 (375): 30/12/2006 - Thalia

- Added Alignment server
- Added SQL storage support
- Added HTML Alignment server profile
- Added new output of algorithms strength in OAEI (GroupOutput)
- Suppressed outdated "tutorial" from repository (see html/tutorial)
- Corrected Cell id rendering/parse in RDF/XML (rdf:about)
- Improved Precision/recall graph rendering in LaTeX
- Improved Weighted harmonic means computation in GroupEval

## Version 2.4 (302): 10/07/2006 - Cercedilla noches

- Added a tutorial in the html pages.
- Integrated first implementation of HTTP Alignment Server
- Slightly changed GroupAlign for accomodating "DOS-based" C:
- Made Alignment an extension of Cloneable
- Put more conformity to the actual practice of DTD
- Corrected output format of some evaluators
- Corrected XSLTRenderer for working with RDF/XML output
- Corrected ParserPrinter so that inverse() be recorded
- Suppressed a printout in MatrixMeasure

## Version 2.3 (271): 15/06/2006 - OAEI-2006 ready

- Added `HTMLRendererVisitor`
- `ProcAlign` and `GroupAlign` automatically store "time" tag;
- `StringDistAlignment` and `RDFRenderer` protect the instances without URIs;
- `GroupAlign` default matcher becomes `StringDistAlignment`.

## Version 2.2 (263): 05/06/2006 - Onyeari's version a.k.a. may GForge be with you

Upgraded to OWL-API 06-04-12 (1.4.3)
No problem encountered.

New version featuring:

- Moved sources to gforge.inria.fr
- Moved web site to alignapi.gforge.inria.fr
- Updated documentation to reflect new source location
- Revisited the release target of the build file for svn compatibility
- Added service directory, alignsvc.jar and QueryMediator class
- Reengineered StringDistances (only return normalized values) and StringDistNameAlignment (replaces all the others). This fully implement individual alignment;
- Added similarity matrix printer (-DprintMatrix=1)
- Added Hamming, N-gramms, Needleman-Wunch distance, Jaro and Jaro-Winckler measures on strings
- Added -r option for changing reference name in GroupEval
- Corrected bug in SymMeanEvaluator
- Corrected cut behavior (did not cut the last item, best did not work)
- GenPlot generates directly gnuplot output and LaTeX/PGF inclusion.

## Version 2.1: 17/02/2006 - pre GForge

New version featuring:

- Fixed SEKT renderer problem;
- Further fixed ingest and addAlignCell methods that were not 1-1 ready;
- Fixed unicity problem in cell sets;
- Reintroduced hash indexing by objects in BasicAlignment;
- Added PRExtEvaluator implementing Ehrig/Euzenat extended precision and recall;
- Added CERTH string comparison method;
- Added SKOSRendererVisitor;
- Corrected OWL/RDF mistakes in some example files;
- Corrected mistakes in align.owl and align.rdfs (thanks to Antoine Isaac);

## Version 2: 1/10/2005 - Raphael's version a.k.a. AC385 version

BEWARE: `Alignment` methods `getAlignCell1`, `getAlignCell2`, `getAlignedObject1`, `getAlignedObject2`, `getStrength1`, `getStrength2`, `getRelation1` and `getRelation2` deprecated (implementation is still provided however).

New version featuring:

- Fixed all implementation that assume 1-1 alignments;
- Deprecated accessor from the Alignment to the cell of an object;
- Implemented the deprecated with a compile-time tag;
- Implemented the Hungarian method for maximal pairing in building 1-1 alignments;
- Added equals() method to Cell and Relation;
- Added Precision-recall graph generators (GenPlot,PRGraphEvaluator);
- Computation of aggregated precision and recall rather than average (GroupEval);
- Added options for avoiding the alignment on some namespaces;
- Added timing in Procalign and Groupalign;
- Added extension mechnism for alignments (any extra-annotation stored).

## Version 1.4: 04/07/2005 - OAEI 2005 facilities

New version featuring:

- Many new parameters on GroupAlign (target/source/prefix) for accomodating new test sets
- Added freeing of ontology from memory between tests in GroupAlign

## Version 1.3: 15/06/2005 - Ready for OAEI 2005

Upgraded to OWL-API 05-03-21 (1.4.2)
BEWARE: if you experience problems recompiling after upgrading to this version of the OWL-API, this is because it requires and additional method: `owlFullConstruct(int code, String message, Object o)` in the `OWLRDFErrorHandler` (see Procalign.java for the fix).

Compatible with Java 1.5

New version featuring:

- Full implementation of parameters (reader included)
- Separated the API from its implementation (align/procalign)
- Separated the WordNet from the implementation (alignwn)
- Corrected XML header of some examples (necessary for Java 1.5)
- Fixed usability of Wordnet (on Mac OS X)
- Added a (necessary) SubsumedRelation!
- Added a sample embedding of main functions
- Added three replicas of align(A,p) -> align(), align(A) and align(p)
- Added SEKTMapping renderer
- Added method and semantics tags to format
- Added -p parameter for reading parameter file on most util classes
- Added alignment method name output in the output format
- Implemented GroupAlign allowing to batch-align several ontologies
- Started reengineering matrix-based distance alignments

## Version 1.2: 23/11/2004 - ISWC suggestions and improvements

New version featuring:

- Added multiple cut implementation (hard/perc/prop/best...)
- Added COWL renderer
- Added warning about the need of log4j and getopts
- Forced the RDFRenderer to generate UTF-8 (the parser does only accept UTF-8 in element names). All renderers take PrintWriters as arguments.
- Fully implemented the parser and the printer so that onto tags contains file info and uri tags contain URI info.

## Version 1.1: 5/11/2004 - Lessons from EON

New version featuring:

- Fixed the format output and parsing to true RDF
- Implemented GroupEval
- Added WordNet method
- Fixed two bugs in methods ()
- Divided impl directory into method/rendered...
- Implemented the inverse method
- Added RDFS Format
- Added an "id" to each cell (in API, Renderer and Parser);
- Provided an XSLT stylesheet for alignments;

## April 19th, 2004

New version featuring:

- Corrected the problem of putting directly distances into strength ({get/set}Measure{1/2} are now called Strength, new class DistanceAlignment which takes care of converting distances into strength);
- Implemented effectively SymMeanEvaluator with a dispatch per elements;
- Added correct 1:1 tags to all implemented OWL alignments
- Used Object in API: no OWL in the format (all API methods which returned OWL... now returns Objects, dynamic typecheckking of the basic methods: maybe not the best idea)
- Implemented parameters (align() and eval() take an additionnal Parameters parameter, new Parameters interface and BasicParameters class);
- Corrected the visitor for the Renderer (now robust to subclassing);
- Built a renderer for RDF and use it (suppression of the write method in Cell and Alignment, Procalign uses the same code for rendering);
- Added a StringDistance class providing substring and editstriung distances;
- Reviewed all catch with a printStackTraces (parser still unsatisfactory);
- Cleaned-up traces;
- Provided a full-fledged example illustrated with a paper;
- Corrected StrucSubsDistNameAlignment;
- Changed name: Evaluator.evaluate() --> Evaluator.eval();

## Version 1.0: 4/4/2004 - First complete version

This uses the 090304 (1.2.0) version of the OWL API.

New version featuring:

- Added the Evaluator interface and implementation (PRecEvaluator and SymMeanEvaluator).
- Added Exceptions
- Added Renderer as visitors
- Added a simple structural algorithm (StrucSubsDistNameAlignment).
- Added a number of alignment based on substring distance;
- Various improvements.

## January 2004

Put under CVS at Sophia-Antipolis

New version featuring:

- Added a number of alignment implementations (EditDistAlignment);

## Version 0.1: 12/12/2003 - First release