Metadata store configuration (workspace/datasources/metadata)
First ideas on the configuration concept for all types of datasources and datastores are described in the deegree3/DatastoreConfigurationConcepts.
1. Basics
- Metadata store configurations are defined independant of the application using it.
- Each metadata store configuration may be used by multiple deegree 3 applications.
- Each metadata store configuration has its own configuration file.
- Each configuration file contains exactly one metadata store configuration.
Metadata store configuration files are located in the datasources/metadata/ directory of the deegree workspace. See the workspace directory layout for details.
- The name of the configuration file (without the file ending) determins the identifier for this metadata store configuration.
- Configuration files need to refer to a specific schema version.
2. Schema location
The schemas for defining deegree 3 metadata store data sources may be found at http://schemas.deegree.org/datasource/metadata/. Each kind of metadata store has its own schema definition. It is mandatory to refer to a specific version of the schemas, as the schema may change over time.
3. Configuration details
3.1. ISO Metadata store
(formerly known as record store)
This <ISOMetadataStore> is a metadata store that is backed by a PostgreSQL/PostGIS database.
Current Version: 3.0.0 (valid since 2010-11-12)
Attributes for <ISOMetadataStore>
- configVersion
- mandatory
- needs to match the version of the referenced schema.
Elements and their attributes for <ISOMetadataStore>
- JDBCConnId
- mandatory
value: the identifier (file base name) of the database connection as string
(see JDBC configuration)- Inspectors
- optional
value: see below
- AnyText
- optional
value: see below
Elements and their attributes for <iso19115ns:Inspectors>
- FileIdentifierInspector
- optional
- attribute: rejectEmpty
- mandatory
- possible values: true, false.
true = the metadata will be rejected if it has no fileIdentifier
false = the metadata will be passed through no matter if it has a fileIdentifier or not.
- InspireInspector
- optional
- attribute: generateMissingResourceIdentifier
- mandatory
- possible values: true, false.
true = the resourceIdentifier will be generated by the metadataStore
false = if there is no resourceIdentifier available the metadata will be rejected to cope with INSPIRE
- CoupledResourceInspector
- optional
- attribute: throwConsistencyError
- mandatory
- possible values: true, false.
true = the metadata will be rejected if there is no coupling with the service-metadata and its bounded data-metadata possible
false = the metadata will be passed through no matter if there is a coupling possible or not
- SchemaValidator
- optional
- validates the metadata against the schema
Elements and their attributes for <iso19115ns:AnyText>
- All
- optional
stores every value into the AnyText-element
- Core
- optional
stores the core queryable properties into the AnyText-element
- Custom
- optional
stores values into the AnyText-element that match against XPath-expressions.
3.1.1. ISO Examples
3.1.1.1. Very minimal example
Minimal example with conn1 as the JDBC connection, no Inspectors (so there are no restrictions concerning a metadata set). As a result of skipping the AnyText element the behaviour of the MetadataStore is the same as when using All.
<ISOMetadataStore
configVersion="3.0.0"
xmlns="http://www.deegree.org/datasource/metadata/iso19115"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.deegree.org/datasource/metadata/iso19115 iso19115.xsd">
<!-- [1] Identifier of JDBC connection -->
<JDBCConnId>conn1</JDBCConnId>
</ISOMetadataStore>
3.1.1.2. Inspector example
Example with a JDBC connection and three activated Inspectors.
The metadata must have a fileIdentifier-element.
The metadata needs no resourceIdentifier -> if not provided in the data it will be generated automatically.
The MetadataStore will throw an exception, when inserting a service-metadata with elements that need data-metadata is attempted.
The Behaviour when skipping the AnyText element is the same as in the Very minimal example.
<ISOMetadataStore
configVersion="3.0.0"
xmlns="http://www.deegree.org/datasource/metadata/iso19115"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.deegree.org/datasource/metadata/iso19115 iso19115.xsd">
<!-- [1] Identifier of JDBC connection -->
<JDBCConnId>conn1</JDBCConnId>
<!-- [0..1] Definition of the Inspectors for checking the metadata for insert or update transaction -->
<Inspectors>
<!-- [0..1] Checks the fileIdentifier -->
<FileIdentifierInspector rejectEmpty="true"/>
<!-- [0..1] Checks the INSPIRE compliance -->
<InspireInspector generateMissingResourceIdentifier="true"/>
<!-- [0..1] Checks the coupling of service-metadata and data-metadata -->
<CoupledResourceInspector throwConsistencyError="true" />
</Inspectors>
</ISOMetadataStore>
3.1.1.3. Inspector example with AnyText
Example with a JDBC connection and with one activated Inspector.
The metadata must have a fileIdentifier-element.
The AnyText-element is set to Custom and there are two XPath-expressions that get the values from:
- all the keywords found in the metadata AND
- the individual name of the responsible party
and stores them into the AnyText-queryable property.
<ISOMetadataStore
configVersion="3.0.0"
xmlns="http://www.deegree.org/datasource/metadata/iso19115"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.deegree.org/datasource/metadata/iso19115 iso19115.xsd">
<!-- [1] Identifier of JDBC connection -->
<JDBCConnId>conn1</JDBCConnId>
<!-- [0..1] Definition of the Inspectors for checking the metadata for insert or update transaction -->
<Inspectors>
<!-- [0..1] Checks the fileIdentifier -->
<FileIdentifierInspector rejectEmpty="true"/>
</Inspectors>
<!-- [0..1] Specifies the content of the queryable property 'anyText' -->
<AnyText>
<!-- [0..1] Set of XPath-expression -->
<Custom>
<XPath>/gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString</XPath>
<XPath>/gmd:MD_Metadata/gmd:contact/gmd:CI_ResponsibleParty/gmd:individualName/gco:CharacterString</XPath>
</Custom>
</AnyText>
</ISOMetadataStore>
4. Further workspace configuration
For other parts of the workspace configuration please consult the following pages: