Glossar
Ein Nachschlagewerk für die Fachbegriffe und projektspezifischen Begriffe, die in
govdata-cli verwendet werden. Dieses Tool kapselt die GovData-CKAN-Action-API
(ckan.govdata.de); das Vokabular verteilt sich daher auf das Open-Data-Programm
GovData, die Software CKAN, auf der der Katalog läuft (samt ihrer Eigenheiten,
z. B. „package“ == „dataset“), und die projekteigenen Begriffe von Client und CLI.
Das GovData-Programm
GovData. Das zentrale Open-Data-Portal für Deutschland (govdata.de), das offene
Datensätze von Bund, Ländern und Kommunen bündelt. Es ist der deutsche Knoten, der das
europäische Portal data.europa.eu speist.
Open Data. Daten, die unter einer offenen Lizenz veröffentlicht sind und von allen genutzt, weiterverwendet und weiterverbreitet werden dürfen. Alles, was dieses Tool erreicht, ist offen und benötigt keinen API-Schlüssel.
CKAN. Die Open-Source-Software für Datenmanagement und Katalogisierung (ursprünglich von der Open Knowledge Foundation), auf der GovData läuft. Ihre HTTP-Schnittstelle ist die Action API, die dieser Client kapselt.
DCAT-AP.de. Das deutsche Anwendungsprofil des W3C-Metadatenstandards DCAT (Data Catalog Vocabulary). Die Metadaten der Datensätze auf GovData folgen ihm; deshalb sind die Rohfelder eines Datensatzes katalogspezifisch und werden hier als untypisiertes JSON bereitgestellt.
CKAN-Kernobjekte
Datensatz (Package). Die grundlegende Katalogeinheit: eine beschriebene Sammlung von
Daten zu einem Thema (Titel, Beschreibung, Herausgeber, Tags, Lizenz und eine oder mehrere
Ressourcen). CKAN nennt einen Datensatz historisch „package“, daher heißen die
Action-Namen der API package_*, obwohl das Konzept für Nutzende „Datensatz“ ist.
Bereitgestellt als rohes JsonObject (Package). CLI: package, packages, search.
Ressource (Distribution / Resource). Eine einzelne bereitgestellte Datei oder ein
Dienst-Endpoint innerhalb eines Datensatzes – z. B. eine CSV-, JSON-, XLSX- oder
WMS-URL. Ein Datensatz hat meist mehrere. In DCAT-Begriffen ist eine Ressource eine
Distribution. Identifiziert über ihre eigene ID. CLI: resource <id>.
Organisation (Organization). Ein Herausgeber von Daten – die Stelle, der
Datensätze gehören und die sie pflegt (z. B. ein statistisches Amt des Bundes).
Organisationen haben in CKAN Mitgliedschafts- und Eigentumssemantik.
CLI: organizations, organization.
Gruppe (Group). Eine thematische Gruppierung bzw. Kategorie von Datensätzen
(z. B. ein Open-Data-Thema). Anders als einer Organisation gehören einer Gruppe keine
Datensätze; sie ordnet sie ein. CLI: groups, group.
Tag. Ein freies Schlagwort an einem Datensatz, das beim Auffinden hilft. Tags lassen
sich auflisten und nach Teilzeichenketten filtern. CLI: tags [--query <substring>].
Facette. Ein Feld, über das CKAN ein Suchergebnis aggregiert, um Häufigkeiten der
Werte zu liefern (z. B. wie viele Treffer je organization oder res_format). Gezählt
werden Datensätze, nicht Ressourcen: Ein Datensatz mit fünf CSV-Dateien zählt einmal.
Angefordert über facet.field (in der Bibliothek die Option facet_field) und
zurückgegeben unter facets / search_facets in einem PackageSearchResult. Es kommen
nur die obersten facet.limit Werte zurück (50, sofern nicht gesetzt; -1 liefert alle).
Funktionsweise der CKAN-Action-API
Action API. Die RPC-artige HTTP-API von CKAN mit der Wurzel /api/3/action/. Jeder
Endpoint ist eine Action, die über ihren Namen angesprochen wird, z. B.
package_search, package_show, organization_list. Dieser Client nutzt ausschließlich
die offenen, rein lesenden (GET) Actions.
Action-Name. Der [a-z0-9_]+-Bezeichner einer Action. Der Client prüft jeden Namen
gegen ^[a-z0-9_]+$ (und URL-codiert ihn), damit der generische Notausgang keine
zusätzlichen Pfadsegmente, keinen Query-String und kein Fragment in die Request-URL
einschleusen kann.
CKAN-Hülle (CkanEnvelope). Jede Antwort der Action API ist in
{ help, success, result } verpackt (bzw. { help, success, error }, wenn success
false ist). help ist eine Docstring-URL bzw. ein Docstring-Text, success das
Status-Flag, result die Nutzdaten. Der Client packt result aus und löst bei
success: false einen Fehler aus.
package_search. Die Action für Volltext- und facettierte Suche nach Datensätzen.
Liefert ein PackageSearchResult (count, results, facets, search_facets, sort).
CLI: search. Parameter: q, fq / fq_list, rows, start, sort, facet.field.
package_show / package_list. Einen Datensatz per ID oder Name abrufen; Namen von
Datensätzen mit limit/offset auflisten. CLI: package, packages.
organization_show / organization_list, group_show / group_list.
Eine Organisation bzw. Gruppe anzeigen oder alle auflisten. Die _list-Actions liefern
standardmäßig nur Namen, mit all_fields vollständige Objekte. CLI:
organization(s), group(s) (--all-fields).
tag_list, resource_show. Tags auflisten (optional mit query als
Teilzeichenketten-Filter); eine Ressource per ID anzeigen. CLI: tags, resource.
Generische Action (Notausgang). client.action(name, params) bzw. der CLI-Befehl
action <name> [--param key=value …] ruft jede lesende Action auf – auch solche ohne
typisierte Komfortmethode – und liefert das ausgepackte result.
Suchparameter (Solr)
Die CKAN-Suche basiert auf Apache Solr, ihre Parameter folgen daher der Solr-Syntax.
q (Suchanfrage). Der Solr-Query-String, z. B. title:Haushalt oder ein einfacher
Begriff. CLI-Positionsargument: search [query]. Solr zerlegt die Anfrage in Tokens,
ein einfacher Begriff kann also auf ein Teil-Token statt auf die ganze Zeichenkette passen
(z. B. kann abc12345 einen Titel treffen, der 12345 enthält). Schränken Sie das Feld
ein (title:…) oder ergänzen Sie einen --fq-Filter, wenn Sie einen genauen Treffer statt
eines losen Stichworts brauchen.
fq (Filterabfrage). Ein Solr-Filter, der die Ergebnisse einschränkt, ohne die
Relevanzbewertung zu beeinflussen, z. B. organization:statistisches-bundesamt,
groups:tran. CLI: --fq (mehrfach angebbar; jeder Filter muss zutreffen). CKAN lehnt
einen wiederholten fq-Schlüssel ab, daher sendet der Client einen einzelnen Filter als
fq und mehrere als fq_list. CKAN stellt einem fq +capacity:public voran, deshalb
wirkt ein OR auf oberster Ebene innerhalb eines Filters nicht: Schreiben Sie
(organization:open-nrw OR groups:tran) statt des bloßen OR.
rows / start. Seitengröße und nullbasierter Offset zum Blättern durch
Suchtreffer. CLI: --rows, --start. Das Solr von GovData begrenzt rows auf 1.000
je Anfrage; ein größerer Wert liefert also höchstens 1.000 Ergebnisse (wobei count
weiterhin die tatsächliche Gesamtzahl meldet). Über die ersten 1.000 hinaus blättern Sie
mit start. (Die *_list-Actions verwenden stattdessen limit / offset.)
sort. Ein Solr-Sortierausdruck, z. B. metadata_modified desc. CLI: --sort.
facet.field. Die Felder, für die Facettenzahlen berechnet werden, als JSON-Liste wie
["res_format"] (siehe Facette). In der Bibliothek heißt die Option facet_field; CKAN
selbst lehnt einen Parameter facet_field ab.
res_format. Ein gängiger Facetten- bzw. Filterwert: das Format einer Ressource
(CSV, JSON, WMS, …). Wird innerhalb eines fq verwendet, nicht über ein eigenes
Flag. Dasselbe Format erscheint als einfache Zeichenkette und als URI des EU-Dateityp-Vokabulars
(http://publications.europa.eu/resource/authority/file-type/CSV); filtern Sie daher auf
beide: res_format:("CSV" OR "http://publications.europa.eu/resource/authority/file-type/CSV").
metadata_modified / metadata_created. Zeitstempelfelder eines Datensatzes; ersteres
ist der übliche Sortierschlüssel für „neueste zuerst“.
Kennungen & Paginierung
id / name (Slug). Datensätze, Organisationen und Gruppen lassen sich entweder über ihre
CKAN-ID (UUID) oder ihren menschenlesbaren Namen (URL-Slug) ansprechen. Die
*_show-Actions akzeptieren beides. Ressourcen werden nur per ID angesprochen.
limit / offset (ListParams). Paginierung für die *_list-Actions: Seitengröße
und Anzahl der zu überspringenden Einträge. (Nicht zu verwechseln mit rows / start der
Suche.)
all_fields. Bei organization_list / group_list vollständige Objekte statt nur
Namen zurückgeben. CLI: --all-fields.
Bibliothek & Interna. Begriffe zum TypeScript-Client und seinen Interna –
GovDataClient, die Request-Engine, Transport, Retry/Backoff, Fehlertypen, Query-Builder – stehen jetzt in DEVELOPING.md.