Daten & Prozesse · Artdaten-Pipeline
Acht Prüfabfragen, im Wortlaut
378 Bildmetadatensätze zu 189 Gehölzarten, über die iNaturalist-API geholt und in eine kleine SQLite-Datenbank überführt. Hier laufen die acht Abfragen, die den Bestand prüfen. Jede zeigt ihren SQL-Text, ihren Sollwert und ihr Ergebnis – auch dort, wo das Ergebnis ein Befund ist.
Was hier läuft – und was nicht
Die Daten sind echt: Es sind die Metadaten des Laufs vom 30. August 2026, unverändert. Beobachtungs-IDs, Foto-IDs, Autor:innen und Lizenzen stammen von iNaturalist-Nutzer:innen und stehen unter den je Datensatz angegebenen Creative-Commons-Lizenzen. Eigene Arbeit ist die Verarbeitung – Datenmodell, Import, Abfragen, Bericht.
Es läuft keine Live-Abfrage gegen iNaturalist. Der Datenbestand ist eingefroren; genau deshalb ist das Ergebnis reproduzierbar.
Die Abfragen stehen in SQL und laufen als SQL gegen SQLite –
nachlesbar in
skripte/artdaten-datenbank.py. Weil SQLite nicht im
Browser läuft, ohne eine Bibliothek von einem fremden Server
nachzuladen, sind sie in shared/rules-artdaten.js ein
zweites Mal ausgeschrieben. Die Regeltests weiter unten halten beide
Fassungen Abfrage für Abfrage gegeneinander.
Der Datenbestand
Die Abfragen
Eine Abfrage anklicken, um SQL-Text und Ergebniszeilen zu sehen. Bestanden heißt: Die Abfrage findet nichts. Befund heißt: Sie findet etwas – das ist kein Fehler des Programms, sondern das Ergebnis der Prüfung.
| Nr. | Prüfung | Sollwert | Gefunden | Ergebnis |
|---|
Ein Datensatz, vollständig
So sieht eine Zeile aus, auf die die Abfragen zugreifen. Autor, Lizenz und Quell-URL sind keine Beigabe – ohne sie dürfte der Datensatz nicht weitergegeben werden.
| Feld | Wert |
|---|
Regeltests
Der wichtigste Block ist der erste: Er hält jede der acht Abfragen in der JavaScript-Fassung gegen das Ergebnis, das dieselbe Abfrage als SQL in SQLite geliefert hat – Zeile für Zeile, nicht nur die Anzahl. Der zweite Block baut jeden Fehler künstlich ein und prüft, dass die zuständige Abfrage anschlägt. Eine Abfrage, die immer null Zeilen liefert, sieht wie eine bestandene Prüfung aus und ist keine.
| Test | Ergebnis |
|---|
Grenzen
- 378 Datensätze sind keine große Datenbank. Was hier gezeigt wird, ist die Denkweise – Schlüssel, Beziehungen, Sollwerte, Befund statt Bauchgefühl –, nicht die Bewältigung großer Datenmengen.
- Keine Berufserfahrung mit Datenbanken. Die SQLite-Schicht ist 2026 nachträglich für dieses Portfolio entstanden. Das ursprüngliche Programm hat keine Datenbank, und es gibt keine berufliche Station, in der ich mit SQL gearbeitet habe.
- Die Bilder sind nicht meine. Sie gehören iNaturalist-Nutzer:innen. Deshalb liegen hier Metadaten und keine Bilder.
- Die Prüfungen prüfen Form, nicht Botanik. Ob auf einem Foto wirklich die genannte Art zu sehen ist, kann keine dieser Abfragen feststellen. Abfrage 8 sagt genau das: Sie zählt die Fälle, die ein Mensch ansehen muss.
Zum Nachrechnen
Datenbank (SQLite) Prüfbericht (CSV) Metadaten (CSV)
Die Metadaten enthalten zu jedem Bild Autor, Lizenz und Quell-URL. Weggelassen sind Prüfsumme, Dateigröße und Abrufzeitpunkt – sie beschreiben meinen Rechner, nicht die Quelle. Wie alles entstanden ist, steht auf Von der API bis zur Prüfabfrage.