title | subtitle | author | date | classoption | language | |
---|---|---|---|---|---|---|
Grundlagen von Datenformaten |
DINI AG KIM Workshop 2021 |
Jakob Voß |
28\. April 2021 |
|
de |
::: notes
Was ist das? (Bitte Vorschläge in einem Wort)
:::
:::columns ::::column {height=80%} ::: ::::column
Bitte raten unter menti.com
Code 5234 8088
oder https://www.menti.com/k5zd3cbuzh :::: :::
:::columns ::::column {height=80%} ::: ::::column
-
Eine Antilope
-
Eine Addax-Antilope
-
Eine Abbildung einer Addax-Antilope
-
Ein Digitalisat einer (älteren) Abbildung einer Addax-Antilope
-
Eine Bilddatei
-
...
Interpretation erfordert Hintergrundwissen
:::: :::
::: notes
Beispielsweise ist für das geübte Auge sichtbar, das es sich um ein Digitalisat aus einem älteren Buch handelt.
:::
-
Daten als Fakten ("So sieht eine Addax aus")
-
Daten als Beobachtungen ("Abbildung einer Addax")
-
Daten als Dokumente ("Bilddatei")
::: notes
Für das Verständnis von Datenformaten interessiert uns primär die Sichtweise von Daten als Dokumenten. Nicht was ist abgebildet, sondern wie ist es gespeichert.
:::
-
Was steht in den Daten (Inhalt: Semantik)
- Antilope, Abbildung...
-
Wo kommt das Dokument her? (Kontext: Pragmatik)
- Identifier, Schnittstellen, Verarbeitung...
-
Wie sind Daten strukturiert? (Struktur: Syntax)
- JPEG-Datei, 790x878 Pixel...
\vfill Entschlüsselung erfordert Wissen über Datenformate
::: notes
Ebenso wie das inhaltliche Entschlüsseln Kontextwissen über Antilopen und Bücher erfordert, ist zur Analyse von Daten Kontextwissen über Datenformate notwendig.
:::
Nächste Frage unter menti.com
Code 5234 8088
oder https://www.menti.com/k5zd3cbuzh
-
Dokumentformate:
HTML, TEI, Office, Markdown, Bild- & Audio-Formate... -
(bibliographische) Metadatenformate:
MARC, MODS, LIDO, EAD, PICA...
-
Strukturierungssprachen:
CSV, JSON, RDF... -
Schemasprachen:
Reguläre Ausdrücke, XSD, JSON Schema... -
Abfragesprachen:
SQL, XPath, XQuery, CSS Selector... -
Datenmodelle:
BIBFRAME, CIDOC-CRM, Dublin Core...
-
Hinter Daten steht immer (implizit oder explizit) mindestens ein Modell
-
Datenformate bewegen sich zwischen Modell und Implementierung
::: columns :::: column
-
Lehre vom Bau einer Sprache, ihren Formen, Gesetzmäßigkeiten und Funktionen im Satz
-
Elemente wie Wortarten, Satzbau, Regeln...
-
Verschiedene Sprachen und Dialekte
-
Unabhängig von der Bedeutung
Name Lebensdaten
Douglas Noël Adams 1952-2001
Erkennen Sie Modell und Schema?
name,dates
Douglas Noël Adams,1952-2001
name: Douglas Noël Adams
dates: 1952-2001
{
"name": "Douglas Noël Adams",
"dates": "1952-2001"
}
<name>Douglas Noël Adams</name>
<dates>1952-2001</dates>
-
JSON, YAML, CSV, XML, RDF...
-
Allgemeine Struktur in der sich fast alles ausdrücken lässt
-
Je nach Sprache einiges besser als anderes
-
Vergleich: Deutsch, Englisch, Spanisch, Japanisch...
-
Konkrete Datenformate sind eher "Fachsprachen"
{
"name": "Douglas Noël Adams",
"dates": "1952-2001"
}
{
"xxxx": "xxxxxxxxxxxxxxxxxx",
"xxxxx": "xxxxxxxxx"
}
Syntax Struktur
"..."
Unicode-Zeichenketten
{...}
Key-Value-Paare ("Object")
JSON hat noch mehr, ist aber überschaubar!
https://jsoneditoronline.org/beta/
{
"name": "Douglas Noël Adams",
"dates": "1952-2001"
}
Aufgabe in Kleingruppen á 5 Personen
- Video an Ton an, bitte laut gemeinsam denken!
- Datensatz eingeben
- Weitere Daten hinzufügen (z.B. Alter, Identifier...)
- Feedback: Menti Code 4936 6360 oder https://www.menti.com/5r2gnu61md
...
-
Passende Daten-Editoren helfen ungemein
-
Ohne Syntax-Highlighting ist das Leben trist und grau
- Weitere Werkzeuge: Code-Formatierung, Linter
-
Manche Syntax-Elemente sind irrelevant
-
Syntax-Elemente sind nicht der Inhalt...
-
...sondern Gerüst für eine Datenstruktur (z.B. JSON)
{
"xxxx": "xxxxxxxxxxxxxxxxxx",
"xxxxx": "xxxxxxxxx"
}
{
"xxxx": "xxxxxxxxxxxxxxxxxx",
"xxxxx": "xxxxxxxxx"
}
\hfill
-
xxx..
: Unicode-Zeichenketten -
Unicode ist auch nur ein Datenformat mit Modell, Schema und Implementierungen
-
Daten haben keinen Inhalt
Zeichenkette \rightarrow JSON-Struktur \rightarrow konkretes JSON-Format \rightarrow ... \rightarrow Bedeutung
{
"xxxx": "xxxxxxxxxxxxxxxxxx",
"xxxxx": "xxxxxxxxx"
}
{
"name": "Xxxxxxx Xxxx Xxxxx",
"dates": "0000-0000"
}
Datenformat: Menge von Daten mit einigen Beschränkungen und Freiheitsgraden
-
Beschränkungen und Freiheitsgrade über einer Datenstrukturierungssprache
-
Beispiel: JSON-Dokument mit notwendigen und optionalen Feldern
-
Oft gibt es keine expliziten Schemas sondern
- (Best-?)Practice
- Standards
- Anwendungen
- ...
-
Besser: formale Schemas in einer Schemasprache
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": { "type": "string" },
"dates": { "type": "string" }
}
}
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": { "type": "string" },
"dates": {
"type": "string",
"pattern": "^[0-9]{4}(-[0-9]{4})?$"
}
}
}
Reguläre Ausdrücke: Schemas für Zeichenketten
Options > JSON Schema > Url:
https://raw.githubusercontent.com/jakobib/diniagkim2021/main/json-schema.json
Aufgabe:
- Validieren Sie das Beispiel-Dokument
- Ändern Sie das Dokument so, dass es keine Syntaxfehler hat aber dem Schema nicht mehr entspricht
...
Menti-Code 4936 6360 oder https://www.menti.com/5r2gnu61md
{
"name": "Douglas Noël Adams"
"dates" "1952-2001",
}
Wo sind Fehler und auf welcher Datenebene?
{
"name": "Kari Nordmann",
"date": "1942-2019 ",
"age": "76"
}
Wo sind Fehler und auf welcher Datenebene?
-
Syntax (kaputt oder nicht kaputt)
-
Struktur (valide oder fehlerhaft)
-
Inhalt (tja...)
-
Syntax: Datenstrukturierungssprachen
-
Struktur: Mittels Schemas
-
Inhalt: Standards und Erfassungsregeln (nicht vollautomatisierbar)
-
Kleine Datenformate ("Sprachen") um Abfragen zu formulieren
-
Ergebnis: Teilmenge von vorhandenen Daten
-
Abfragen über eine Datenstrukturierungssprache
-
XPath für XML-Daten
-
SPARQL für RDF-Daten
-
SQL für Relationale Datenbanken
-
...
-
-
APIs sind oder beinhalten ebenfalls Abfragesprachen
Verschiedene Abfragesprachen und Möglichkeiten (leider keine vollständig etabliert)
- JSON Path
- JSON Pointer
- jq
- ...
Übung: https://jqplay.org/
-
Verschiedene Sichten auf Daten sind möglich und relevant
-
Fakten vs. Beobachtungen vs. Dokumente
-
Inhalt vs. Struktur vs. Kontext
-
Kodierungsebenen (z.B. Bytes, Struktur, Format...)
-
-
Erfahrung im Umgang mit Datenformaten (Data Literacy)
-
JSON, XML, CSV, RDF...
-
Stellen Elemente zur Strukturierung bereit
z.B. Zeichenketten, Verschachtelung, Key-Value-Paare... -
Folgen eigenen Paradigmen
z.B. Tabelle, Baustruktur, Graph... -
Eigenes Ökysystem von Werkzeugen z.B. Editoren
-
Sagen nichts über konkretes Format und Inhalt aus
-
Formale Standards was in einem Format erlaubt und erfordert ist
-
Schemasprachen für jeweilige Strukturierungssprachen
-
XML Schema (XSD) für XML
-
JSON Schema für JSON
-
Avram für MARC/PICA
-
...
-
-
Ermöglichen automatische Validierung
-
Ohne Validierung sind Fehler vorprogrammiert!
-
Teilmenge von Date in einer Datenstrukturierungssprache
-
Geht mit jeder Programmiersprache, besser zielgerichtete Sprachen
-
XPath für XML
-
jq oder JSON Pointer für JSON
-
...
-
-
Erstellung: Editoren
-
Validierung: Validatoren (Syntax- & Schema-Ebene)
-
Abfrage: Abfragesprachen, Datenbanken...
Übung macht die Meister:in!
Bitte Feedback zur Veranstaltung!
http://etherpad.lobid.org/p/kimws21-Feedback-Hands-On-Tutorial_Datenformate
::: columns :::: column {height=70%} :::: :::: column Bertuch & Bertuch (1824): Bilderbuch für Kinder, Band 11, Seite 195
https://doi.org/10.11588/diglit.3218#0197 :::: :::
International Image Interoperability Framework (IIIF)
Datenformat für Metadaten (Seitenaufteilung etc.): https://digi.ub.uni-heidelberg.de/diglit/iiif/bertuch1824bd11/manifest.json
Abfrageformat IIIF Image API https://digi.ub.uni-heidelberg.de/iiif/2/bertuch1824bd11%3A195.jpg/1150,1450,790,850/790,/0/default.jpg
{scheme}://{server}{/prefix}/{identifier}/{region}/{size}/{rotation}/{quality}.{format}