Profile Plugins¶
Overview¶
pycsw allows for the implementation of profiles to the core standard. Profiles allow specification of additional metadata format types (i.e. ISO 19139:2007, NASA DIF, INSPIRE, etc.) to the repository, which can be queried and presented to the client. pycsw supports a plugin architecture which allows for runtime loading of Python code.
All profiles must be placed in the pycsw/plugins/profiles
directory.
Requirements¶
pycsw/
plugins/
__init__.py # empty
profiles/ # directory to store profiles
__init__.py # empty
profile.py # defines abstract profile object (properties and methods) and functions to load plugins
apiso/ # profile directory
__init__.py # empty
apiso.py # profile code
... # supporting files, etc.
Abstract Base Class Definition¶
All profile code must be instantiated as a subclass of profile.Profile
. Below is an example to add a Foo
profile:
from pycsw.plugins.profiles import profile
class FooProfile(profile.Profile):
profile.Profile.__init__(self,
name='foo',
version='1.0.3',
title='My Foo Profile',
url='http://example.org/fooprofile/docs',
namespace='http://example.org/foons',
typename='foo:RootElement',
outputschema=http://example.org/foons',
prefixes=['foo'],
model=model,
core_namespaces=namespaces,
added_namespaces={'foo': 'http://example.org/foons'}
repository=REPOSITORY['foo:RootElement'])
Your profile plugin class (FooProfile
) must implement all methods as per profile.Profile
. Profile methods must always return lxml.etree.Element
types, or None
.
Enabling Profiles¶
All profiles are disabled by default. To specify profiles at runtime, set the profiles
value in the Configuration to the name of the package (in the pycsw/plugins/profiles
directory). To enable multiple profiles, specify as a comma separated value (see Configuration).
Testing¶
Profiles must add examples to the Testing interface, which must provide example requests specific to the profile.
Supported Profiles¶
ISO Metadata Application Profile (1.0.0)¶
Overview¶
The ISO Metadata Application Profile (APISO) is a profile of CSW 2.0.2 which enables discovery of geospatial metadata following ISO 19139:2007 and ISO 19119:2005/PDAM 1.
Configuration¶
No extra configuration is required.
Querying¶
typename:
gmd:MD_Metadata
outputschema:
http://www.isotc211.org/2005/gmd
Enabling APISO Support¶
To enable APISO support, add apiso
to profiles
as specified in Configuration.
Testing¶
A testing interface is available in tests/index.html
which contains tests specific to APISO to demonstrate functionality. See Testing for more information.
INSPIRE Extension¶
Overview¶
APISO includes an extension for enabling INSPIRE Discovery Services 3.0 support. To enable the INSPIRE extension to APISO, create a [metadata:inspire]
section in the main configuration with enabled
set to true
.
Configuration¶
INSPIRE configuration is specified within metadata.inspire
:
inspire
enabled: whether to enable the INSPIRE extension (
true
orfalse
)languages_supported: supported languages (see http://inspire.ec.europa.eu/schemas/common/1.0/enums/enum_eng.xsd, simpleType
euLanguageISO6392B
)default_language: the default language (see http://inspire.ec.europa.eu/schemas/common/1.0/enums/enum_eng.xsd, simpleType
euLanguageISO6392B
)date: date of INSPIRE metadata offering (in ISO 8601 format)
gemet_keywords: list of GEMET INSPIRE theme keywords about the service (see http://inspire.ec.europa.eu/schemas/common/1.0/enums/enum_eng.xsd, complexType
inspireTheme_eng
)conformity_service: the level of INSPIRE conformance for spatial data sets and services (
conformant
,notConformant
,notEvaluated
)contact_organization: the organization name responsible for the INSPIRE metadata
contact_email: the email address of entity responsible for the INSPIRE metadata
temp_extent: temporal extent of the service (in ISO 8601 format). Either a single date (i.e.
yyyy-mm-dd
), or an extent (i.e.yyyy-mm-dd/yyyy-mm-dd
)
CSW-ebRIM Registry Service - Part 1: ebRIM profile of CSW¶
Overview¶
The CSW-ebRIM Registry Service is a profile of CSW 2.0.2 which enables discovery of geospatial metadata following the ebXML information model.
Configuration¶
No extra configuration is required.
Querying¶
typename:
rim:RegistryObject
outputschema:
urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0
Enabling ebRIM Support¶
To enable ebRIM support, add ebrim
to profiles
as specified in Configuration.
Testing¶
A testing interface is available in tests/index.html
which contains tests specific to ebRIM to demonstrate functionality. See Testing for more information.