Implementatie

Opbouw van het pakket

Het uitwisselpakket is een gecomprimeerd (zip) bestand met als extensie .stop in plaats van .zip. De inhoud van het pakket bestaat uit:

  • Een bestand met de vaste naam pakbon.xml waarin de inhoud van het pakket beschreven wordt. Het specifieke XML-formaat is gedefinieerd en beschreven in imop-uitwisseling.xsd.

  • Een of meer XML-bestanden. Elk uit te wisselen STOP-module is opgenomen in een apart XML-bestand.

  • Bestanden die door de STOP-modules gebruikt worden, zoals plaatjes of informatieobject-bestanden.

  • Bestanden met gerelateerde informatie als beschreven in andere standaarden (zoals IMOW).

Bij de bestandsnamen in het zip-bestand is het gebruik van hoofd- en kleine letters van belang: PAKBON.xml is een ander bestand dan pakbon.xml. Uit oogpunt van interoperabiliteit wordt geëist dat er geen bestandsnamen gebruikt mogen worden die slechts in hoofd- of kleine letters van elkaar afwijken. Het gebruik van een mapstructuur in het zip-bestand is wel toegestaan. De bestandsnamen moeten per map uniek zijn.

Een voorbeeld van de inhoud van een zip-bestand is:

Bestand in zipInhoud
pakbon.xmlXML-bestand met de beschrijving van de inhoud van het pakket
Gegevens van een versie van de regeling
Regeling-Identificatie.xmlXML-bestand van de STOP-module ExpressionIdentificatie die een versie van een (geconsolideerde) regeling identificeert
Regeling-Tekst.xmlXML-bestand met de STOP-module tekst van de RegelingCompact
img/baksteen.pngPlaatje dat in de tekst van de regeling gebruikt wordt
Regeling-Metadata.xmlXML bestand van de STOP-module RegelingMetadata
Regeling-VersieMetadata.xmlXML-bestand van de STOP module RegelingVersieMetadata
MomentOpname.xmlXML-bestand van de STOP-module Momentopname
Annotaties bij de regeling volgens een andere standaard (IMOW)
manifest-ow.xmlXML-bestand met de beschrijving van annotaties volgens een andere standaard dan STOP (in dit geval IMOW)
owLocaties.xmlXML-bestand met gegevens volgens een andere standaard dan STOP (in dit geval IMOW locaties)
owRegeltekst.xmlXML-bestand met gegevens volgens een andere standaard dan STOP (in dit geval IMOW objecten voor juridische regels)
Gegevens van een geo-informatieobject dat door de regeling gebruikt wordt
Vuurwerkverbodsgebied-Identificatie.xmlXML-bestand van de STOP-module ExpressionIdentificatie die een versie van een (geconsolideerd) geo-informatieobject identificeert
Vuurwerkverbodsgebied.gmlGML-bestand van de STOP-module GeoInformatieObjectVersie die het (geconsolideerd) geo-informatieobject bevat als GeoInformatieObjectVersie
Vuurwerkverbodsgebied-Metadata.xmlXML-bestand van de STOP-module InformatieObjectMetadata
Vuurwerkverbodsgebied-VersieMetadata.xmlXML-bestand met de STOP-module InformatieObjectVersieMetadata die het GML-bestand aanroept

De pakbon beschrijft de inhoud en samenhang

De inhoud van een uitwisselpakket wordt beschreven in pakbon.xml. Dit bestand vervult verschillende functies. In de pakbon is opgenomen:

  • Welke bestanden met STOP-modules en aanvullende bestanden in het uitwisselpakket zitten.

  • Welke informatie bij elkaar hoort

  • Hoe een STOP-module (of een bestand volgens een andere standaard) gelezen en gevalideerd moet worden

Samenhangende informatie staat in één component

In bovenstaand voorbeeld bevat het uitwisselpakket twee groepen informatie: voor een versie van een regeling en voor een geo-informatieobject. De bijbehorende pakbon.xml heeft voor elk van deze groepen een <Component> met de STOP-identificatie van de instrumentversie en het soort work:

<?xml version="1.0" encoding="UTF-8"?>
<Pakbon schemaversie="1.3.0"
  xmlns="https://standaarden.overheid.nl/stop/imop/uitwisseling/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="https://standaarden.overheid.nl/stop/imop/uitwisseling/
  https://standaarden.overheid.nl/stop/1.3.0/imop-uitwisseling.xsd">
  
  <Component>
    <FRBRWork>/akn/nl/act/gm9999/2020/REG0001</FRBRWork>
    <FRBRExpression>/akn/nl/act/gm9999/2020/REG0001/nld@2020-01-20;1</FRBRExpression>
    <soortWork>/join/id/stop/work_019</soortWork>
    <heeftModule>
        ... Informatie over XML-bestanden voor de regelingversie ...
    </heeftModule>
    <heeftBestand>
        ... Informatie over de overige bestanden voor de regelingversie ...
    </heeftBestand>
  </Component>
  
  <Component>
    <FRBRWork>/join/id/regdata/gm9999/2019/gio993859238</FRBRWork>
    <FRBRExpression>/join/id/regdata/gm9999/2019/gio993859238/nld@2019-12-20;1</FRBRExpression>
    <soortWork>/join/id/stop/work_010</soortWork>
    <heeftModule>
        ... Informatie over XML-bestanden voor het geo-informatieobject ...
    </heeftModule>
  </Component>

XML bestanden worden als module beschreven

Elk bestand waarin de XML-codering voor een STOP-module is opgenomen wordt apart beschreven:

<Module>
  <localName>RegelingCompact</localName>
  <namespace>https://standaarden.overheid.nl/stop/imop/tekst/</namespace>
  <bestandsnaam>Regeling/Tekst.xml</bestandsnaam>
  <mediatype>application/xml</mediatype>
  <schemaversie>1.1.0</schemaversie>
</Module>

De <localName> en <namespace> identificeren de STOP-module (zie het overzicht), de <schemaversie> geeft aan welke IMOP-versie gebruikt is voor de XML-serialisatie.

Het systeem van modules is uitbreidbaar. Naast STOP-modules kunnen andere standaarden de inhoud van een XML-bestand voorschrijven die ook als een Module in de pakbon opgenomen kan worden. In zo'n XML bestand kan informatie staan gecodeerd volgens de andere standaard, maar het is ook toegestaan dat het XML-bestand een pakbon of manifest is waarin beschreven staat hoe de informatie uit de andere standaard in het zip bestand is opgenomen. IMOW-modules kunnen op deze manier uitgewisseld worden. Voor meer informatie zie de IMOW specificaties.

Overige bestanden worden gebruikt door XML modules

Bestanden die door een XML-module gebruikt worden maar die zelf niet als XML gecodeerd zijn, worden ook bij de component vermeld. Als bijvoorbeeld de XML-tekst van de regeling een plaatje van vuurwerk gebruikt, dan wordt dat aangegeven als:

<Bestand>
  <bestandsnaam>Regeling/img/consumentenvuurwerk.jpg</bestandsnaam>
  <mediatype>image/jpeg</mediatype>
</Bestand>

Hiervoor gelden een aantal regels:

  • Naar elk Bestand wordt vanuit tenminste één XML-module van de component verwezen.

  • Elk bestand dat door een XML-module wordt gebruikt moet als Bestand voorkomen.

  • De bestandsnaam van het bestand is gelijk aan de map waarin de XML-module staat, plus de bestandsnaam van het bestand als gebruikt in de XML-module. Als de tekst van de regeling bijvoorbeeld in regeling/regelingtekst.xml staat en daarin wordt een plaatje gebruikt dat ans naam img/baksteen.png heet, dan moet het plaatje met de bestandsnaam regeling/img/baksteen.png opgenomen worden in het zip bestand.

Gebruik van Bestand/Module bij informatieobjecten

Voor een informatieobject moet tenminste de InformatieObjectVersieMetadata module (en meestal ook InformatieObjectMetadata) onderdeel zijn van de component. In die module staan de bestanden genoemd waaruit het informatieobject bestaat. Bijvoorbeeld:

<?xml version="1.0" encoding="UTF-8"?>
<InformatieObjectVersieMetadata schemaversie="1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns="https://standaarden.overheid.nl/stop/imop/data/" xsi:schemaLocation="https://standaarden.overheid.nl/stop/imop/data/ https://standaarden.overheid.nl/stop/1.3.0/imop-data.xsd">
  <heeftGeboorteregeling>/akn/nl/act/gm9999/2020/REG0001</heeftGeboorteregeling>
  <heeftBestanden>
    <heeftBestand>
      <Bestand>
        <bestandsnaam>Vuurwerkverbodsgebied.gml</bestandsnaam>
        <hash>ca2d23c1776b15cbc83bd9031c70e3acf745d2f1f0c12c78c3b5325c7b81b69d4a95dacdd30238721fdba73a02151110f005d144d27c0fc82e3f7cb8d415e09f</hash>
      </Bestand>
    </heeftBestand>
  </heeftBestanden>
</InformatieObjectVersieMetadata>

Hoe die bestanden in de pakbon vermeld worden hangt af van het formaat van het informatieobject. Voor informatieobjecten waarvan de bestanden (volgens IMOP) als XML bestand worden gecodeerd staat het bestand als Module vermeld:

<Module>
  <localName>GeoInformatieObjectVersie</localName>
  <namespace>https://standaarden.overheid.nl/stop/imop/geo/</namespace>
  <bestandsnaam>GIO993859238/Vuurwerkverbodsgebied.gml</bestandsnaam>
  <mediatype>application/xml+gml</mediatype>
  <schemaversie>1.0.4</schemaversie>
</Module>

Als dat niet het geval is, zoals bij PDF-informatieobjecten, dan staat het als Bestand vermeld:

<Bestand>
  <bestandsnaam>MER.pdf</bestandsnaam>
  <mediatype>application/pdf</mediatype>
</Bestand>

STOP schrijft niet alle beperkingen aan het uitwisselpakket als expliciete bedrijfsregels voor

Het uitwisselpakket is zo generiek mogelijk ingestoken, voor een zo breed mogelijk scala aan scenario's waarin STOP-informatie wordt uitgewisseld. Er is een klein aantal bedrijfsregels voor de Pakbon geformuleerd met als doel:

  • Consistentie van de pakbon, de informatie per component en de bestanden in het uitwisselpakket;

  • Aanwezigheid van de minimaal noodzakelijke informatie voor een component;

  • Reductie van de implementatie-eisen bij import van een uitwisselpakket.

STOP stelt geen striktere eisen, hoewel dat voor sommige toepassingen denkbaar en werkbaar zou zijn. Zo kent STOP geen expliciete bedrijfsregels over welke Moduletypes in welke Componenten kunnen voorkomen. Deze toekenning is versieafhanklijk en kan beter uit een relatietabel als versiecompleet.xml worden afgeleid.

Ook stelt STOP geen regels over welke informatie wanneer kan en moet worden uitgewisseld. Een voorbeeld hiervan zou kunnen zijn: "Een module mag niet worden uitgewisseld middels een uitwisselpakket als dezelfde module van hetzelfde instrument ongewijzigd is ten opzichte van het meest recente uitwisselpakket tussen dezelfde verzender en ontvanger." De verwachting is dat er dergelijke afspraken tussen zender en ontvanger zullen worden opgesteld, afhankelijk van het scenario.