Basic Extension Package Model
author: Heikki Doeleman
This page describes GeoNetwork's implementation of CSW-ebRIM Registry Service specification's Basic Extension Package (OGC 07-144 r2).
Introduction
The ebXML Object Model is specified in "CSW-ebRIM Registry Service – Part 2: Basic extension package" wich can be found here. The Basic package concentrates on the provision of service-related information in support of geospatial applications. It adopts concepts from a variety of sources, including the ISO 19100 series of geomatics standards. The specification is the basis for an XML Schema for this model, which you can find inside this zip file. I have put a copy on this Wiki here, with slight modifications so as to include the GML namespace, without which some examples in the specification would render invalid.
GeoNetwork has implemented the Basic Extension Package in Java. The implementation is capable of marshalling, unmarshalling and validating XML documents that conform to the XSD mentioned above. The implementation will be loosely coupled to the Persistence Layer for storage and retrieval.
Implementation
The implementation of the Basic Extension Package is referred to as Basic Extension Package Model. It consists of a set of Java Beans representing the objects in the specification mentioned above.
The implementation is structured in the following packages, largely corresponding to the specification:
- org.geonetwork.domain.ebxml.extensionpackage.basicextension.association
- org.geonetwork.domain.ebxml.extensionpackage.basicextension.datatype
- org.geonetwork.domain.ebxml.extensionpackage.basicextension.extrinsicobject
- org.geonetwork.domain.ebxml.extensionpackage.basicextension.slottype
- org.geonetwork.domain.ebxml.extensionpackage.basicextension.storedquery
- org.geonetwork.domain.ebxml.extensionpackage.basicextension.xsd
All of these packages correspond to a section in the specification except the org.geonetwork.ebxml.informationmodel.xsd package, which contains Java Beans to assist in representing XSD datatypes that have no equivalent in the Java language, such as xsd:duration.
The implementation is complemented with a suite of unit tests, for each of the objects that may be used as a top-level element in an ebXML document. The unit tests are written in the well-known Junit framework. For each of these objects there is a testcase for marshalling and a testcase for unmarshalling. As we're dealing with XML the tests use the complimentary test library XML Unit. This allows a.o. to ignore differences in whitespace and the ordering of elements and attributes in the XML where that should be ignored. An automatic run of the test suite has been incorporated into the Maven build script and has been made part of the Continuous Integration build process.
Remarks
Blah blah