Glossar

Ein Nachschlagewerk für die Fachbegriffe und projektspezifischen Begriffe, die in ckan-cli verwendet werden. Dieses Tool kapselt die CKAN-Action-API eines beliebigen CKAN-Portals – standardmäßig des Transparenzportals Hamburg (suche.transparenz.hamburg.de); das Vokabular verteilt sich daher auf CKAN selbst (samt seiner Eigenheiten, z. B. „package“ == „dataset“), die Portale, auf denen es läuft, und die projekteigenen Begriffe von Client und CLI.


CKAN und die Portale

CKAN. Die quelloffene Software zur Verwaltung und Katalogisierung von Daten (ursprünglich von der Open Knowledge Foundation), auf der viele Open-Data-Portale der öffentlichen Hand laufen. Jedes CKAN-Portal bietet dieselbe Action-API, die dieser Client kapselt; jedes Portal ergänzt eigene Felder (extras) und Einstellungen.

Portal. Eine CKAN-Installation, angesprochen über ihre Site-URL (--base-url), z. B. https://suche.transparenz.hamburg.de oder https://www.daten-bw.de/ckan (ein CKAN unter einem Unterpfad). Eine aus der API-Dokumentation eines Portals kopierte URL (…/api/3/action) wird auf die Site-URL gekürzt.

Bekanntes Portal. Ein deutsches CKAN-Portal aus der in die CLI eingebauten Liste, angesprochen über eine kurze ID mit --portal (hamburg, govdata, berlin, nrw …). ckan portals listet sie mit dem Ergebnis der letzten Prüfung; ckan portals --check prüft sie live. Die Liste wird aus Wikidata, dem Instanzen-Verzeichnis des CKAN-Projekts und den Harvest-Quellen von GovData aktualisiert (siehe DEVELOPING.md).

Transparenzportal Hamburg. Das Standardportal: das Informationsregister, das das Hamburgische Transparenzgesetz (HmbTG) vorschreibt. Die meisten Einträge sind Dokumente (Verträge, Gutachten, Senatsdrucksachen, Beschlüsse), keine Datensätze.

GovData. Der nationale Open-Data-Katalog (ckan.govdata.de, --portal govdata). Er übernimmt (harvestet) die meisten Länderportale, seine Zahlen überschneiden sich also mit deren Zahlen.


CKAN-Kernobjekte

Datensatz (Package). Die zentrale Katalogeinheit: eine beschriebene Sammlung von Ressourcen mit Titel, Beschreibung, Herausgeber, Schlagwörtern, Lizenz und Zeitstempeln. Die API nennt ihn package (package_search, package_show). Angesprochen über die ID (UUID) oder den Namen (Slug).

Typ. Die Art eines Datensatzes, in type: normalerweise dataset; Hamburg kennt außerdem document und app.

Ressource (Distribution). Eine Datei oder ein Dienst innerhalb eines Datensatzes: format, url, size. Eine Ressourcen-URL ist nicht immer eine Datei: WMS/WFS sind Kartendienste, html-Ressourcen meist Übersichtsseiten. Nur über die ID ansprechbar (ckan resource <id>).

Organisation. Ein Herausgeber, dem Datensätze gehören (ckan organizations, ckan organization <id>). In Hamburg haben viele Einträge keine Organisation.

Gruppe. Ein Thema oder eine Kategorie (ckan groups, ckan group <id>).

Schlagwort (Tag). Ein freies Stichwort an einem Datensatz (`ckan tags –query

`). In Hamburg sind viele Tags ganze Stichwortlisten in einem String. **Lizenz (`license_id`).** Die Lizenz eines Eintrags, pro Eintrag gesetzt. Die Portale schreiben dieselbe Lizenz unterschiedlich (`dl-de-by-2.0`, `dl-by-de/2.0`, `http://dcat-ap.de/def/licenses/dl-by-de/2.0`); bei GovData und daten.bw ist die Lizenz des Datensatzes meist leer und steht an den Ressourcen. `ckan licenses` listet die Lizenzen, die ein Portal anbietet. **Extras.** Portalspezifische Felder als `{key, value}`-Paare, durchsuchbar als `extras_`. In Hamburg: `registerobject_type` (der *Informationsgegenstand*), `publishing_date`, `terms_of_use` (mit dem vorgeschriebenen Namensnennungstext), `offline_date`. **Informationsgegenstand.** Hamburgs Dokumenttyp (Vertrag, Gutachten, Senatsmitteilung …), in `extras_registerobject_type`. Zuverlässig filtern lässt sich nur mit der **gestemmten** Indexform: `vertrageoffinteress`, nicht `vertraege_oeff_interesse` (Hamburgs eigene Werteliste, die nichts findet). --- ## Mechanik der CKAN-Action-API **Action-API.** CKANs RPC-artige HTTP-API unter `/api/3/action/`, eine Aktion pro Operation (`package_search`, `organization_list`, `status_show` …). **Aktionsname.** Der Bezeichner `[a-z0-9_]+` einer Aktion. Der Client weist alles andere vor einer Anfrage ab, damit ein Name keinen Pfad, keine Query und kein Fragment einschleusen kann. **Umschlag (Envelope).** Jede Antwort ist in `{ help, success, result }` bzw. `{ success: false, error }` verpackt. Der Client packt `result` aus; ein fehlgeschlagener Umschlag ist ein Fehler. **Fehlerformen.** CKAN meldet Fehler auf drei Arten, alle als eine lesbare Zeile ausgegeben: eine Meldung (`Not Found Error: Not found`, HTTP 404), eine **Validierungs**-Liste je Feld (`Validation Error: rows: Invalid integer`, HTTP 409) und ein einfacher String für eine unbekannte Aktion (HTTP 400). Ein Solr-Syntaxfehler wird auf Solrs eigene Begründung gekürzt. **`status_show`.** Titel, CKAN-Version und installierte Erweiterungen eines Portals (`ckan status`); manche Portale sperren die Aktion (Berlin antwortet mit 403). **Generische Aktion.** `ckan action --param key=value …` ruft jede lesende Aktion auf, auch solche aus Erweiterungen. --- ## Suchparameter (Solr) Die CKAN-Suche läuft auf **Apache Solr**, die Parameter folgen daher der Solr-Syntax. **`q` (Query).** Die Volltextsuche, z. B. `elbe` oder `title:haushalt`. CLI: `search [query]`. **`fq` (Filter-Query).** Ein Filter, der die Treffer einschränkt, ohne ihre Reihenfolge zu ändern, z. B. `organization:allris`. CLI: `--fq`, wiederholbar; jeder Filter muss zutreffen. CKAN beantwortet einen wiederholten `fq`-Schlüssel mit HTTP 409, deshalb wird ein Filter als `fq` und mehrere als `fq_list` gesendet. **`rows` / `start`.** Seitengröße und Versatz ab 0. CKAN begrenzt `rows` (standardmäßig auf 1000), ohne es zu melden; mit `--start` weiterblättern. **`sort`.** Ein Sortierausdruck, z. B. `metadata_modified desc`. Ein unbekanntes Sortierfeld wird ignoriert, nicht abgewiesen. **Facette (`facet.field`, `facet.limit`).** Wertezählungen über ein Suchergebnis, z. B. je Herausgeber oder Format. CLI: `--facet ` (wiederholbar) und `--facet-limit `; die Standardgrenze ist 50 und schneidet die Liste stillschweigend ab, `-1` liefert alle Werte. Gezählt werden **Datensätze**, nicht Dateien. **`res_format`.** Das Format einer Ressource, als Filter in `fq` und als Facette nutzbar. Je Portal anders geschrieben (`pdf`, `PDF`, EU-Dateityp-URIs); Berlins Filter unterscheidet Groß- und Kleinschreibung. **`metadata_created` / `metadata_modified`.** Wann ein Eintrag ins Portal kam und wann er zuletzt geändert wurde; echte Datumsfelder, Zeiträume funktionieren also: `--fq 'metadata_created:[2026-09-01T00:00:00Z TO *]'`. Ein Zeitraum auf einem Datum in `extras_*` wird als Text verglichen und liefert Unsinn. --- ## Kennungen und Seitenweise Abfrage **ID / Name.** Datensätze, Organisationen und Gruppen sind über die ID (UUID) oder den Namen (Slug) ansprechbar, Ressourcen nur über die ID. **`limit` / `offset`.** Seitenweise Abfrage für die `*_list`-Aktionen (`packages`, `organizations`, `groups`), getrennt von `rows` / `start` der Suche. **`all_fields`.** Bei `organizations` / `groups` vollständige Objekte statt Namen. CKAN begrenzt eine solche Liste stillschweigend auf 25 Einträge; der Client blättert über diese Grenze hinweg. **Leerer Wert.** Ein leerer oder nur aus Leerzeichen bestehender Filter, Suchbegriff oder eine leere ID ist ein Bedienfehler, nie eine stillschweigend ungefilterte Suche. --- > **Bibliothek und Interna.** Die Begriffe des TypeScript-Clients und seiner Interna – > `CkanClient`, Request-Engine, Transport, Wiederholung/Backoff, Fehlertypen, die Portalliste > und ihr Aktualisierungsskript – stehen in **[DEVELOPING.md](https://github.com/maschinenlesbar-org/ckan-cli/blob/v0.0.5/DEVELOPING.md)** (englisch).

Quelle auf GitHub ansehen →