INSPIRE heeft vorige week op 22/07/2009 een nieuwe versie van zijn Technical Guidance document voor Discovery Services gepubliceerd. Blijkbaar hebben ze de opmerkingen in mijn vorige post gelezen, want wat blijkt, INSPIRE gaat weer volledig voor OGC. Hoera! Het is natuurlijk erg jammer dat er niet echt lijn zit in hun aanbevelingen. De allereerste draft die ik ooit gelezen heb was redelijk OGC conform, de volgende week daar nogal vanaf en nu zitten ze weer volledig op de OGC lijn. Dit is vervelend, zeker als je een Discovery Service hebt gebouwd die gebaseerd is op een nu achterhaalde versie van een technische aanbeveling. Bovendien zijn er nog steeds conflicterende documenten te vinden op de INSPIRE website. Het document “INSPIRE SOAP primer for INSPIRE Discovery and View Services” bijvoorbeeld, is gebaseerd op de eerste versie van de technische aanbeveling en die wijkt dus nogal af van het nieuwe document. Het zou handig zijn mocht INSPIRE de documenten op zijn website (en dat zijn er veel) ordenen volgens geldigheid en status net zoals OGC dat doet.
Ik denk dat de kans groot is dat er hierna nog een versie van het Technical Guidance document zal verschijnen. En wel hierom:
- De “OpenGIS Catalogue Services Specification 2.02 – ISO Metadata Application Profile for CSW 2.0 [CSW ISO AP]” dient als basis specificatie voor de technische aanbeveling. Volgens mij kan je een standaard uitbreiden of verstrengen, maar moet je wel conform zijn met de minimum vereisten die in de standaard opgesomd worden, anders kan je niet beweren dat je conform bent met de standaard. Deze versie van het Technical Guidance document schendt dit principe nog steeds:
- Een beschrijving van de CSW Discovery.GetRecordById operatie is nergens meer terug te vinden. Nochtans is deze operatie niet alleen verplicht volgens [CSW ISO AP], maar ook volgens de INSPIRE draft implementing Rules for Discovery Services. Vergeten?
- AnyText is één van de drie verplicht te implementeren queryables volgens [CSW ISO AP]. De bedoeling van AnyText is full-text search queries mogelijk te maken. Lijkt me een interessante queryable. AnyText is niet opgenomen in het Technical Guidance document. Nochtans zijn er wel 21 (!) andere queryables verplicht te implementeren.
- Volgens [CSW ISO AP] zijn KVP bindings verplicht voor de GetCapabilities en GetRecordById operaties. Het technische document zegt dat enkel SOAP bindings geïmplementeerd moeten worden.
- [CSW ISO AP] zegt dat SOAP berichten conform SOAP 1.2 moeten zijn (p60). Volgens INSPIRE moeten de Discovery Service interfaces beschreven worden in WSDL 1.1 (p14). Waarom volgt INSPIRE de OGC standaard niet. Als SOAP 1.2 goed genoeg is voor het OGC, waarom dan niet voor INSPIRE?
- De Harvest operatie. Op p9 staat “Within the context of INSPIRE an INSPIRE Discovery Service is at least able to harvest single metadata documents that are provided through some online location.” Elke Discovery Service met dus kunnen oogsten, dat begrijp ik daar uit. Op p5 nochtans staat dat de harvest operatie conditioneel is met de Transaction operatie. Je moet dus maar één van de twee implementeren. Verwarrend.
- De Link Discovery Service operatie. Deze operatie moet verplicht geïmplementeerd worden. Waarom wordt “Link Discovery Service” voorgesteld als een extra operatie? Deze operatie bestaat niet in [CSW ISO AP]. Dit zorgt voor verwarring. Waarom wordt de distributed search functionaliteit niet beschreven net zoals OGC dat doet, nl. door het specificeren van de DistributedSearch en HopCount paramaters in de GetRecords operatie?
- Meertaligheid. Is het noodzakelijk om de taal op te geven bij elke GetRecords request? Zelfs als de catalogus maar één taal ondersteunt? Dit is niet duidelijk. Het zou mij logischer lijken mocht dat maar noodzakelijk zijn indien de catalogus meer dan één taal ondersteunt.
- Queryables. In [CSW ISO AP] moeten slechts 3 queryables verplicht geïmplementeerd worden (Title, AnyText, Identifier). In het INSPIRE Profile of CSW ISO AP zijn 21(!) queryables verplicht. Waarom zo veel? Het zou mij logischer lijken mochten enkel de meest relevante verplicht zijn en de rest optioneel te implementeren. Bovendien ontbreekt dan nog een zeer interessante (AnyText).