Skip to content

Instantly share code, notes, and snippets.

@arbakker
Last active June 1, 2023 13:36
Show Gist options
  • Save arbakker/cc0d56ec256491b881c187943aabfe0f to your computer and use it in GitHub Desktop.
Save arbakker/cc0d56ec256491b881c187943aabfe0f to your computer and use it in GitHub Desktop.

Metadata


Waarom publiceren we metadata

  • Context NSDI (National Spatial Data Infrastructure)
  • Geonovum is the National Spatial Data Infrastructure (NSDI) executive committee

An SDI is a coordinated series of agreements on technology standards, institutional arrangements, and policies that enable the discovery and use of geospatial information by users and for purposes other than those it was created for.1


Metadata standaard

Relatie ISO 19115, 19139, 19119

Pas-toe-of-leg-uit lijst Forum Standaardisatie. Overheden zijn verplicht de open standaarden, die op de lijst met 'pas toe of leg uit'-standaarden staan, toe te passen en bij aanschaf van ICT-systemen/-diensten te eisen ('pas toe'). Het gaat om standaarden waarvoor wel draagvlak bestaat maar die nog niet breed geadopteerd zijn. Afwijken mag alleen met zwaarwegende reden en hierover moet verantwoording worden afgelegd via het jaarverslag ('leg uit'). 2

Relatie ISO 19115, 19139, 19119

  • ISO 19115: Geographic information Metadata - het informatiemodel voor metadata
    • ISO 19139: Geographic information Metadata (datasets) - XML schema implementation
      • ISO 19119: Geographic information Metadata (services) - XML schema implementation

Validatie metadata

image

Schematron is a rule-based validation language for making assertions about the presence or absence of patterns in XML trees. 3


Data Catalog Vocabulary (DCAT)

  • DCAT - nieuwe metadatastandaard (Resource Description Framework (RDF) gebaseerd)
  • GeoCat ontwikkelt een DCAT2 plugin voor NGR/GeoNetwork voor het native kunnen opslaan van DCAT metadata in de catalogus - op dit moment slaat GeoNetwork alle metadata intern als ISO19139/19119 metadata documenten op

Ik verwacht data geo-specifieke metadata standaarden uitgefaseerd gaan worden, ten faveure van DCAT zodat alle metadata in dezelfde metadata standaard beschreven wordt, waardoor je niet meer tegen conversie problemen aanloopt en de de open-geo-data en de open-data wereld convergeren.

INSPIRE implementatie NGR

NGR heeft twee verschillende CSW service endpoints:

De "standaard" CSW service bevat alle records:

N.B. de Inspire categorie is een meta-gegeven over de metadata (dus metametadata), wat dus niet is vastgelegd in de metadata, maar wordt vastgelegd in de GeoNetwork database.

image

De harvester van Europa harvest periodiek het inspire-csw endpoint zodat onze datasets en service ook in het Europese dataportaal terecht komen.

CSW / API

Het Catalogue Service for the Web (CSW) protocol is een protocol voor het uitwisselen van metadata records. Het is onderdeel van de suite aan XML gebaseerde OGC protocollen zoals WMS, WFS en WCS. Het "spatial" aspect van dit protocol is dat je ruimtelijke queries kan uitvoeren, door bijv alle records binnen een bepaalde bounding box op te halen, zie 4.

Een interactie met een CSW service start vaak met een GetCapabilities request.

NB CSW service van NGR/GeoNetwork is case sensitive wat betreft query param waardes!

Ophalen records

type='service' AND organisationName='Beheer PDOK' AND protocol='OGC:WFS'

https://www.nationaalgeoregister.nl/geonetwork/srv/dut/csw?SERVICE=CSW&version=2.0.2&REQUEST=GetRecords&resultType=results&constraintLanguage=CQL_TEXT&constraint_language_version=1.1.0&constraint=type=%27service%27%20AND%20organisationName=%27Beheer%20PDOK%27%20AND%20protocol=%27OGC:WFS%27&elementSetName=full&outputSchema=http://www.isotc211.org/2005/gmd&typeNames=gmd:MD_Metadata&start=11

CRUD records

Er is een specifiek endpoint voor het updaten of creeeren van metadata records:

https://www.nationaalgeoregister.nl/geonetwork/srv/dut/csw-publication?service=CSW&request=GetCapabilities

Zie ook deze gist voor een Bash CSW client implementatie voor meer voorbeelden.

Authorisation

Als anonieme gebruiker zijn alle gepubliceerde records zichtbaart in de CSW. Als ingelogde gebruiker zijn alle gepubliceerde records + draft records waar je view rechten op hebt zichtbaar. Om een record te kunnen aanpassen via de CSW moet je edit rechten hebben op een record.

DELETE record request body

<?xml version="1.0" encoding="UTF-8"?>
    <csw:Transaction xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:ogc="http://www.opengis.net/ogc" version="2.0.2" service="CSW">
    <csw:Delete>
        <csw:Constraint version="1.1.0">
        <ogc:Filter>
            <ogc:PropertyIsEqualTo>
            <ogc:PropertyName>dc:identifier</ogc:PropertyName>
            <ogc:Literal>{metadata_identifier}</ogc:Literal>
            </ogc:PropertyIsEqualTo>
        </ogc:Filter>
        </csw:Constraint>
    </csw:Delete>
    </csw:Transaction>

INSERT record request body

<?xml version="1.0" encoding="UTF-8"?>
<csw:Transaction xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" service="CSW" version="2.0.2">
    <csw:Insert>
    <gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gmx="http://www.isotc211.org/2005/gmx" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:gsr="http://www.isotc211.org/2005/gsr" xmlns:gts="http://www.isotc211.org/2005/gts" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:geonet="http://www.fao.org/geonetwork" xmlns:srv="http://www.isotc211.org/2005/srv" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd">
      <gmd:fileIdentifier>
        <gco:CharacterString>14a76103-706b-4db2-92f3-6ef623747a99</gco:CharacterString>
      </gmd:fileIdentifier>
      <gmd:language>
      ...
    </gmd:MD_Metadata>
    </csw:Insert>
</csw:Transaction>

Applicaties


Novex tool

Code staat bij GeoNovum: https://github.com/Geonovum/novex-monitoring

Ik heb een eenvraag lopen bij PLS om dat repo te clone naar github.com/pdok

De webapp wordt automatisch gedeployed met Github Pages d.m.v. een Github action workflow on push op de main branch.

novex-dataset-set-diagram drawio(1)


Footnotes

  1. Kuhn, W. (2005) presentation "Introduction to Spatial Data Infrastructures". Presentation held on March 14, 2005.

  2. https://www.noraonline.nl/wiki/Lijst_Open_Standaarden_voor_Pas_Toe_of_Leg_Uit - NORA (NL Overheid Referentie Architectuur) Pas toe of leg uit lijst

  3. https://en.wikipedia.org/wiki/Schematron

  4. https://gist.github.com/kalxas/5ab6237b4163b0fdc930 - CSW request voorbeelden

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment