Beschreibung und Überprüfung von Daten

Nicht nur im Open-Data-Portal findet man eine Vielzahl von Daten in maschinenlesbaren Formaten wie CSV, JSON, XML und vielen weiteren mehr. Um sie wirklich mit einer Maschine zu verarbeiten benötigt man aber meistens weitere Informationen, die man mit Glück im Beschreibungstext des Datensatzes findet. Sonst muss man auf seine Erfahrung vertrauen und raten.

Dann gibt es auch noch den Fall, dass zwar vorbildlich angegeben ist, um welches Format es sich handelt und auch die Beschreibung Details über den Aufbau verspricht - die Daten aber ganz anders aussehen oder einfach kaputt sind, da sie den syntaktischen Regeln des Formats gar nicht entsprechen.

Zum Glück tut sich in diesem Bereich aber etwas, und es gibt die Möglichkeit, sowohl das Format als auch den Inhalt einer Datei maschinenlesbar zu beschreiben. Der kommende Standard DCAT-AP.de 2 wird eine entsprechende Eigenschaft mitbringen, um auf solche Dokumentationen zu verweisen.

Hier soll für einige gängige Formate dargestellt werden, welche Möglichkeiten der Beschreibung es gibt, mit welchen Hilfsmitteln man die Beschreibungen erstellen kann und mit welcher Software überprüft werden kann, dass eine Datei den Regeln entspricht.

XML

Am bekanntesten ist vermutlich die W3C XML Schema Definition Language (kurz XML-Schema), mit der sich die Struktur von XML-Dateien beschreiben und prüfen lässt. Zu XML-Schema gibt es so viele Dokumente im Internet und Lehrbücher, dass ich hier nicht viel dazu schreibe.

Für XML Schema gibt es ebenfalls eine große Vielfalt von Editoren und Validatoren. Auch Online-Validatoren gibt es eine Menge, z.B. https://www.utilities-online.info/xsdvalidation

CSV

Bei CSV-Dateien gibt es besonders viel zu dokumentieren, da Zeichenkodierung, Spalten- und Zeilen-Trennzeichen und noch viele weitere Dinge unterschiedlich gestaltet sein können.

Die bei DCAT-AP.de 2 für diesen Zweck vorgesehene Sprache ist CSV on the Web

So sieht ein rudimentäres Beispiel für die CSV-Distribution des Datensatzes Corona-Zahlen Kreis Stormarn) aus:

{
  "@context": "http://www.w3.org/ns/csvw",
  "url": "corona-zahlen-kreis-stormarn.csv",
  "dialect": {
    "encoding": "utf-8"
  },
  "tableSchema": {
    "columns": [
      {
        "name": "Datum",
        "titles": "Datum",
        "datatype": {
          "base": "date",
          "format": "yyyy-MM-dd"
        }
      },
      {
        "name": "Ort",
        "titles": "Ort"
      },
      {
        "name": "Neu_Infizierte",
        "titles": "Neu Infizierte"
      }
    ]
  }
}

Beim Erstellen kann ein Webdienst der Wirtschaftsuniversität Wien helfen, die CSV Engine. Der Quellcode (allerdings einer späteren Version) ist hier zu finden: https://github.com/ODInfoBiz/csvengine-ui

Zum Verarbeiten und Validieren gibt es u.a. diese Bibliotheken:

Außerdem kann man CSVW verwenden, um Transformationen von CSV in andere Formate zu definieren.

JSON

Zum Beschreiben und Prüfen von JSON-Dateien gibt es JSON Schema.

Der Beginn eines einfachen JSON-Schemas für den Datensatz Kommunale Wappenrolle - Wappen) sieht so aus:

{
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "type": "array",
  "items": {
    "type": "object",
    "additionalProperties": false,
    "required": [
      "uri",
      "id",
      "acceptance",
      "municipality",
      "municipalityName"
    ],
    "properties": {
      "id": {
        "description": "eindeutige Nummer des Wappens in der Wappenrolle",
        "type": "integer"
      },
      "uri": {
        "description": "eindeutiger URI des Wappens",
        "type": "string",
        "format": "uri"
      },

Das vollständige Beispiel ist hier zu finden: wappenrolle.json

Mit Online-Validatoren kann man schnell JSON-Dateien gegen ein JSON-Schema validieren:

Bibliotheken

GeoJSON

Eine besondere Variante von JSON ist GeoJSON zum Transport von Daten mit Raumbezug. Zum Überprüfen von GeoJSON-Dateien gibt es ebenfalls Online Validatoren:

Im Open-Data-Portal Schleswig-Holstein gibt es einige Datensätze mit GeoJSON-Distributionen, mit denen man es ausprobieren kann. Meistens handelt es sich um GeoJSON FeatureCollection aber natürlich wird GeoJSON (any type) auch funktionieren. Aktuell enthält übrigens ein Datensatz eine ungültige GeoJSON-Distribution. 😲

Fazit

Es gibt gute Möglichkeiten, Dateien vernünftig zu beschreiben. Ein paar dieser Möglichkeiten habe ich hier aufgezeigt. Bleibt zu hoffen, dass in Zukunft möglichst viele Datenherausgeber ihre Daten mit entsprechenden Metadaten versehen und so optimal nutzbar machen.