Publicatie:Formaten voor open data

Uit Cultureel Erfgoed Standaardentoolbox
Ga naar: navigatie, zoeken


Samenvatting

Steeds meer instellingen (bv. musea en bibliotheken) zetten hun collectiecatalogus niet alleen integraal op een website, maar publiceren de inhoud ervan ook als een downloadbaar databestand. Uitwisselbaarheid en het ter beschikking stellen van open data bestanden wordt in toenemende mate de norm, met de hoop dat anderen die data in hun eigen toepassingen gebruiken zodat jouw collectie daar vindbaar wordt. Het succes van een dergelijke download hangt af van de herbruikbaarheid. De uitgewisselde data wordt vaak aangeboden als een CSV-bestand, maar dat kan beter.


Referentie
Titel CSV – weg ermee! (Voorkeurstitel)
Locatie
Uitgever
Jaar van uitgave 2016
Rechten CC-BY-SA
Persistent ID


Csv-xml-json.png

CSV – weg ermee!

Steeds meer instellingen (bv. musea en bibliotheken) zetten hun collectiecatalogus niet alleen integraal op een website, maar publiceren de inhoud ervan ook als een downloadbaar databestand. Uitwisselbaarheid en het ter beschikking stellen van open data bestanden wordt in toenemende mate de norm, met de hoop dat anderen die data in hun eigen toepassingen gebruiken zodat jouw collectie daar vindbaar wordt. Het succes van een dergelijke download hangt af van de herbruikbaarheid. De uitgewisselde data wordt vaak aangeboden als een CSV-bestand, maar dat kan beter.

CSV staat voor 'Comma Separated Values' en is een specificatie voor tabelbestanden. Waarden worden in principe gescheiden door komma's, en regels door het nieuwe-regelteken ('\n'). Het is een zeer eenvoudig databaseformaat dat enkel uit tekstgegevens bestaat en breed verspreid is omdat het gemakkelijk implementeerbaar (lezen en/of schrijven) is. Je kan het goed gebruiken voor het exporteren van (tabel)gegevens uit relationele databanken. CSV-gegevens kunnen rechtstreeks in een rekenblad- (bv. Excel) of databaseprogramma worden ingelezen en vervolgens opnieuw als tabel gepresenteerd.

Dat klinkt goed, maar spijtig genoeg bestaat er geen algemene standaardspecificatie voor CSV. Daardoor bestaan er talloze variaties tussen CSV-implementaties en -bestanden. Zo kan je kiezen voor bv. een komma, puntkomma of punt als scheidingsteken. Door het verschillende gebruik van tekens kan bij een import van het databestand in een andere omgeving de inlezing vastlopen. Dat gebeurt als niet duidelijk is welke tekens een structurerende rol spelen, of er ergens een fout werd gemaakt (bv. wanneer de komma een puntkomma moest zijn). Dit kan leiden tot interoperabiliteitsproblemen, wat problematisch is voor een formaat dat vaak voor data-uitwisseling wordt gebruikt. Een ander kenmerk van CSV is dat het enkel overweg kan met platte data die goed in tabellen past. Wanneer je werkt met herhaalbare velden of hiërarchisch gestructureerde data, moet je kunstgrepen uitvoeren of je databestand opsplitsen in meerdere CSV-bestanden.

Daarom is het beter om een intelligenter dataformaat zoals XML of JSON te kiezen. XML (eXtensible Markup Language) is een opmaak- en structureringsformaat voor data. Met behulp van XML wordt de structuur van tekstdocumenten gedefinieerd via tags en attributen: ideaal voor het precies vastleggen van hiërarchische data. XML wordt ook gebruikt om data te beschrijven uit relationele databases. XML doet dit wél volgens een standaard, maar heeft als nadeel dat zo’n bestand heel veel randgegevens bevat die niet nodig zijn om (als mens) de data te begrijpen. Voor de verwerking heb je bovendien een XML-parser nodig; je kan een XML-bestand niet gewoon inlezen in een rekenbladprogramma. XML kan wel bewerkt worden in een eenvoudige text editor, maar het bewerkte bestand moet nadien gevalideerd worden om zeker te zijn dat er geen fouten werden gemaakt tegen de bestandsstructuur. Dan kan met behulp van een programma zoals bv. XML Lint, een command line tool.[1]

Een alternatief is JSON; een moderner formaat uit de Javascript-wereld. Het is een simpele tekstgebaseerde manier om data te structureren in ‘key value pairs’. Elke hedendaagse programmeertaal bevat een JSON-parser die zo’n bestand kan inlezen. Omdat er voor XML minder parsers bestaan en ze complexer zijn, werken ontwikkelaars liever met JSON. Je kan JSON ook bewerken met een text editor; het is een zeer licht formaat zonder de overhead die XML kent.

Meerdere databasesystemen laten vandaag toe om een data-export in XML te maken. Deze zijn echter vaak niet of onvoldoende gestructureerd en daardoor moeilijker te hergebruiken. Beschik je over een systeem dat een rechtstreekse export in JSON toelaat, dan is dit je beste optie om optimale uitwisselbaarheid te garanderen. Lukt dit niet, dan kan je data exporteren als een CSV-bestand en dit nadien naar XML of JSON omzetten.

Lees hier meer over CSV

Standaard: https://www.projectcest.be/wiki/Standaard:CSV CSV
XML: https://www.projectcest.be/wiki/Publicatie:XML
JSON: https://www.projectcest.be/wiki/Standaard:JSON
XML Lint: http://xmlsoft.org/xmllint.html

Dit artikel werd geschreven door Barbara Dierickx (PACKED-medewerker) en verscheen in META 2016/5 in de reeks Uitgepakt.

  1. Zie https://nl.wikipedia.org/wiki/Command-line-interface. Er bestaan ook tools met een grafische gebruikersinterface zoals bv. OxygenXML, maar die kosten geld. In de regel zijn dit ook complexe programma's om te gebruiken.