Record Subsystem Development
On this page there can be found some further implementation documentation regarding the record subsystem which is responsible for computing the results based on requests to the Catalogue Service.
1. Introduction
Conceptually the record subsystem computes the operation that is delegated from the CSW. There is a database underlying for this subsystem holding all the data needed to fulfill a request.
2. Architecture
There is a request coming in from the service layer in form of one of the subsequent described operations. The recordmanager identifies the profile that is requested an delegates to the responsible record-implementation. Because of the fact that the Dublin Core metadata elements are found in the ISO metadata profile definition - Dublin Core is a proper subset of the ISO profile - these two profiles are handled within one record-implementation. The backend holds all the data that is needed to fulfill the request. The circumstance that not all of the properties and elements of a sample record can be queried, each of the queryable properties has its own table in the backend. Every sample record that is inserted into the backend is splitted into its queryable components - which are then put into the specific table - and three BLOBs that hold the hole sample record in three different representations - brief, summary, full. So, every sample record is splitted into these representations, as well.
3. Operations
3.1. GetCapabilities & DesribeRecord
These two operations are different in completion the request. The GetCapabilities operation is defined in the OGC Web Services Common Specification 1.0 [OGC 05-008] and its stucture is equal in all the OGC Web Services. The capabilities are not specialized for any profile that can be defined or implemented. To display this operation there is no stored data needed and thus there is no computation in this subsystem necessary.
Though there is a completion in the record subsystem, the DescribeRecord operation is not attached with the database. The only thing to do is for displaying the xml schema for each requested record profile. At the moment the spanning of the implementation is the Dublin Core and ISO profile.
3.2. GetRecords
TBD
3.3. GetRecordById
The GetRecordById operation needs data in the backend. If there is no data available or there is a request on a record that is not in database, there should be displayed an exception regarding to the specification. In the positive case,
3.4. GetDomain
TBD, not implemented, yet.
3.5. Transaction
3.6. Harvest
TBD, not implemented, yet.