Proposal title
Date | 2009/12/17 |
Contact(s) | Timo Proescholdt <timo_AT_proescholdt.de> |
Last edited | Timestamp |
Status | draft |
Assigned to release | Release number, to be determined |
Resources |
Overview
Currently Geonetwork has only basic Z39.50 support and no support for SRU. The current Z39.50 implementation is based on the JZKit library version 1, dating from 2002, which is no longer maintained (sourcecode is not even longer officially available). The current version of JZKit is 3. It offers support for SRU and addresses many of the issues that have only basic support in version 1. Among others these are
- configurability (e.G error behaviour if server does not support a requested index, mapping between context-sets)
- session and request-set caching (important for performant web-based SRU).
- result-record and query transformation
- possibility to mix local and remote targets
- more mature Z39.50 support
Moreover, the current Z39.50 interface does not seem to be well maintained. (no date search support, improved geospacial indexing not applied to this part of the software)
The proposal is thus to undertake an overhaul of the Z39.50 part of the code, to update the JZKit library to version 3 and to implement a SRU webinterface in the process.
Proposal Type
- Type: Core Change, Module Change
- App: GeoNetwork
Voting History
- Vote proposed by X on Y, result was +/-n (m non-voting members).
Motivations
- More complete Z39.50 interface support, especially concerning error conditions.
- Support for web-based Z39.50 (SRU) adds an additional search interface.
- Clean up of the Z39.50 code.
- possibility to overhaul the Z39.50 remote search (perhaps also harvesting)
Proposal
Update the JZKit library to version 3, adding SRU support in the process.
Backward-compatibility is important. The traditional Z39.50 interface should not be affected, although using the new library. Some work needs to be done for the Z39.50 remote-search.
A preliminary jzkit3 port and implementation of SRU for trunk exist. Should be evaluated and discussed by the community.
SRU interface implemented as jeeves service. (http://127.0.0.1:8080/geonetwork/srv/en/portal.sru?operation=searchretrieve&version=1.2&query=title%20any%20WMO ).
The spring application-context had to be loosely integrated into Geonetwork, since JZKit makes extensive use of it. A ApplicationContext reference was added to the GeonetworkContext to make the Spring ApplicationContext available. Initialization in Geonetwork.java uppon Z39.50 initialization.
JZKit configuration files need a directory in the classpath and have to be tweaked to support a "Geonetwork" context-set. This is currently being done by creating a "virtual" context-set "geonet", which defines the indices that are searchable. Queries that contain unsupported indices (and relations) are rejected (this can be configured). Currently this is hard-wired in a configuration file, but this could be dynamically configured by Geonetwork if the set of searchable indices was available.
JZKit is dependent on the following libraries
1) JZkit libraries (remove old ki-*.jar)
- a2j-2.0.4.jar
- jzkit_core-3.0.0.jar
- jzkit_service-3.0.0.jar
- jzkit_z3950_server-3.0.0.jar
- jzkit_z3950_plugin-3.0.0.jar
2) spring
- spring-beans-2.5.3.jar
- spring-context-2.5.3.jar
- spring-core-2.5.3.jar
3) apache commons
- commons-digester-1.6.jar
- commons-beanutils-1.7.0.jar
- persistence-api-1.0.jar
- hibernate-annotations.jar
4) SRU query language parser
- cql-java-0.0.7.jar
5) update of libs contained in GN (remove old versions from classpath)
- marc4j-2.3.1.jar
- jdbm-1.0.jar
Backwards Compatibility Issues
The z39.50 remote search depends on JZKit3. Since JZKit has no backwards compatibility the Z39.50 remote search has to be re-implemented. Support for remote-searching has been officially dropped(?) since 2.4 but proprietary extensions have been built to which compatibility has to be maintained.
Risks
JZKit is not well documented at the moment, although documentation will be provided in the course of a World Meteorological Organization project on Z39.50.
Participants
- Timo Proescholdt (developer)
Attachments (4)
-
SRUattributes_1.docx
(13.7 KB
) - added by 15 years ago.
SRU attribute mappings
-
patch.txt
(150.6 KB
) - added by 15 years ago.
SRU patch
-
libs.txt
(552 bytes
) - added by 15 years ago.
needed libraries
-
SRUattributes_1x.pdf
(8.5 KB
) - added by 15 years ago.
SRU attributes in non proprietary format
Download all attachments as: .zip