Zum Inhalt springen

Hilfe:Wikimedia Commons/Data

aus Wikipedia, der freien Enzyklopädie

Dieses Hilfeseite erläutert die im Data:-Namensraum von Commons mögliche Hinterlegung maschinenlesbarer umfangreicher Einzeldaten.

Zweck und Vorteile:

  • Informationen können für alle Wikis bereitgestellt und zentral gepflegt werden.
  • Die Daten können von verschiedenster Software benutzt werden: Selbst definierte Rohdaten mittels Lua, spezielle Wiki-Software für Diagramme oder Landkarten, JavaScript-Werkzeuge, Export in externe Software (und ggf. auch Import).
  • Mit Wikidata wird meist nur eine einzelne Zahl usw. pro Wikidata-Objekt verfügbar. Die Anzahl sämtlicher unterschiedlicher Objekte in der aktuell dargestellten Seite ist beschränkt (400); für sämtliche Anwendungen. Das kann leicht zum Problem werden, wenn eine Liste von Gegenständen befüllt werden soll. Generell gibt es Performance-Probleme, wenn viele Objekte abgerufen werden müssen; die Anzahl ist deshalb kaum zu steigern.
  • Eine Datenseite sollte eine möglichst große Zahl zusammengehöriger Informationen enthalten, um die Menge der Zugriffe zu reduzieren und damit die Performance zu steigern, und eine gleichzeitige Bearbeitung zur Aktualisierung zu erleichtern.

Übliches Problem ist, dass die Daten der einfachen Beobachtung entzogen sind. Damit kann unbemerkt Vandalismus wie auch die gezielte inhaltliche Fälschung von Daten in alle nutzenden Wikis eingeschleust werden. Eine kontinuierliche Überwachung „letzter Änderungen“ ist ob der riesigen Flut an Bearbeitungen auf Commons kaum möglich. Daten-Seiten könnten geschützt werden, aber es gibt keinen Status als Vertrauensperson, der nicht zahlenmäßig auf übersichtliche Gruppen beschränkt werden müsste, aber gleichzeitig permanentes Einpflegen vieler Änderungen durch viele Zuständige auf vielen Wikis ermöglicht. Das Privileg zur Datei-Umbenennung wäre geeignet, ist aber keine Schutzklasse für Seiten.

Die Tabellen werden seit 2016 unterstützt.

Allgemeine technische Spezifikationen

[Bearbeiten | Quelltext bearbeiten]

Jede einschlägige Seite im Namensraum Data: muss ein bestimmtes Inhaltsmodell als Untertyp *.JsonConfig erfüllen.

  • Die Namen aller Daten-Seiten werden nach einem . mit einem bestimmten Code („Erweiterung“) beendet.
  • Unterseiten sind möglich, aber nur vor der Erweiterung.
  • Namenskonventionen oder andere Organisation des Namensraums sind nicht bekannt.

Standard-Komponenten

[Bearbeiten | Quelltext bearbeiten]

Der Seiteninhalt muss genau ein Objekt mit der folgenden Struktur enthalten:

Komponente Status Datentyp Beschreibung
license Pflicht Zeichenkette Eine Nutzungslizenz für die Daten..
mediawikiCategories optional Array aus Kategorie-Objekten Kategorisierung innerhalb von Commons.

Selbstdefinierte Objekte oder Arrays sind unzulässig.

  • Funktionen bzw. deren Programmierung sind in JSON grundsätzlich nicht erlaubt.
  • Es sind nur die nachstehenden vier Datentypen für eine Wertzuweisung möglich:
    • Wahrheitswert (boolean)
      • Nur die Werte true und false sind erlaubt.
    • Zahl (number)
      • Zahlen können in verschiedensten in JavaScript möglichen Formaten angegeben werden: 42, 4.6, 7e-5, 0x4A7B usw.
      • Eine Nicht-Zahl wie NaN ist nicht erlaubt.
    • Zeichenkette (string)
      • Eine Text-Zeichenkette mit maximal 400 Zeichen. Sonderzeichen wie neue Zeilen \n und Tabulatoren \t sind nicht zulässig. Zeichenketten sind in " einzuschließen.
      • Soll im Text " vorkommen, muss es durch \" escaped werden; ein einzelner \ ist als \\ anzugeben.
    • Lokalisierte Zeichenkette (localized)

Lokalisierte Zeichenkette

[Bearbeiten | Quelltext bearbeiten]

Eine Zeichenkette kann mehrsprachig (lokalisiert) werden und ist dann als Objekt mit folgenden Zuweisungen anzugeben:

Dabei ist Sprachcode ein ISO-Code aus zwei bis drei Kleinbuchstaben. Erweiterungen gemäß BCP 47 sind zurzeit nicht möglich.

Beispiel:

{ "en": "date",
  "de": "Datum"
}
  • Eine Zuweisung besteht aus dem Namen der Komponente, einem Doppelpunkt : und dem zugewiesenen Wert.
    • Während dies bei allgemeinen JavaScript-Objekten nicht erforderlich ist, muss in JSON der Name in Anführungszeichen " eingeschlossen werden.
    • Jedes Objekt ist in geschweifte Klammern {} einzuschließen.
    • Es enthält Zuweisungen NameWert.
    • Jeder Name darf nur einmal vorkommen.
    • Aufeinanderfolgende Zuweisungen (=Komponenten) werden durch Kommata getrennt.
  • Ein Array ist in eckige Klammern [] einzuschließen.
    • Es enthält eine sortierte Aufzählung von Elementen, durch Kommata getrennt.
  • Nach der letzten Komponente bzw. dem letzten Element darf kein Komma stehen.
  • Leerzeichen und Zeilenumbrüche außerhalb von Zeichenketten sind beliebig.

Eine Lizenzierung ist auf jeder Seite Pflichtangabe. Die empfohlene Lizenz ist GemeinfreiheitCreative Commons Zero („CC0“).

  • Die anzugebende Zeichenkette hierfür ist: "CC0-1.0"
  • Auf mw: sind weitere Lizenz-Codes benannt, sofern diese erforderlich werden, etwa wegen großflächiger Übernahme einer externen Datenquelle.

Kategorisierung

[Bearbeiten | Quelltext bearbeiten]

Als mediawikiCategories kann ein Array aus Objekten angegeben werden, bei denen für jedes gilt:

Komponente Status Datentyp Beschreibung
name Pflicht Zeichenkette Titel einer Kategorie innerhalb von Commons.
sort optional Zeichenkette Sortierschlüssel.

Die Kategorisierung erfolgt in geeignete Unterkategorien von commons:Category:Data (namespace).

Basis-Beispiel

[Bearbeiten | Quelltext bearbeiten]

Das nachstehende Beispiel zeigt eine leere Hülle ohne Nutz-Informationen.

{ "license": "CC0-1.0"
}

Spezielle Anwendungen

[Bearbeiten | Quelltext bearbeiten]

Es gibt verschiedene Untermodelle für bestimmte Strukturen.

Sie ergeben sich nur aus dem Inhaltsmodell und der Erweiterung des Seitennamens; eine Deklaration innerhalb des Objekts wurde leider nicht eingeplant.

Allgemeine Tabelle

[Bearbeiten | Quelltext bearbeiten]

Eine ansonsten beliebige, jedoch rechteckige Tabelle kann vereinbart werden.

  • Inhaltsmodell: Tabular.JsonConfig
  • Namenserweiterung: .tab

Es sind nur Spalten möglich, in denen alle Elemente den gleichen Datentyp haben. Jede Zeile muss die gleiche Abfolge von Spalten wiederholen.

Das Importieren und Exportieren im CSV- bzw. Excel-Format von tabellarischen Daten kann mit dem Helferlein MediaWiki:Gadget-TabularImportExport.js erfolgen (das Helferlein wird auf Special:Preferences#mw-prefsection-gadgets aktiviert).

Komponente Status Datentyp Beschreibung
schema Pflicht Objekt mit einer Komponente fields Strukturdeklaration der Spalten.
data Pflicht Array aus Arrays Inhalte der Spalten.
  • Jedes Element des äußeren Arrays stellt eine „Zeile“ dar.
  • Die Elemente der inneren Arrays müssen an ihrer Position der Strukturdeklaration der Spalte entsprechen.
  • Jedes Element muss mit dem deklarierten Datentyp der Spalte übereinstimmen.
  • Der Wert null soll immer zulässig sein, um etwas explizit als fehlend zu markieren; allerdings wäre das vom Datentyp „Objekt“.
  • Keine „Zeile“ darf kürzer oder länger sein als das fields-Array.
description optional lokalisierte Zeichenkette Beschreibung der Gesamt-Tabelle.
sources optional Zeichenkette Die Herkunft der Daten. Wikitext ist zulässig und wird ausgewertet; eine nackte URL könnte auch benutzt werden.
  • Mehrsprachigkeit ist nicht vorgesehen; deshalb muss die englische Sprache verwendet werden

Die Nutzdaten müssen einen von vier Datentypen erfüllen:

  • Wahrheitswert (boolean)
  • Zahl (number)
  • Zeichenkette (string)
  • lokalisierte Zeichenkette (localized)
  • Ein Array ist nicht möglich, aber eine Zeichenkette kann aus Teil-Zeichenketten zusammengesetzt werden, die durch Leerzeichen oder Pipe-Symbole | leicht zu zerlegen wäre.
  • Ähnlich könnte ein Objekt geschaffen werden aus einer durch Leerzeichen getrennten Abfolge name=Wert und die Werte kodieren notfalls enthaltene Leerzeichen.
  • Ein Datum sollte zur internationalen Kompatibilität als Zeichenkette "JJJJ-MM-TT" gemäß ISO 8601 angegeben werden.

Spalten-Objekt

[Bearbeiten | Quelltext bearbeiten]

Jede Spalte ist als Objekt mit folgenden Zuweisungen zu deklarieren:

Komponente Status Datentyp Beschreibung
name Pflicht Zeichenkette Name der Spalte.
  • Der Wert muss mit einem Buchstaben oder einem Unterstrich  _ beginnen und darf nur Buchstaben, Unterstriche oder Zahlen enthalten. Dies wird getan, damit jede Überschrift einfach aus einer Code-Umgebung wie Lua oder Vega-Graphen genutzt werden kann.
type Pflicht Zeichenkette Datentyp der Spalte.
  • Eins von: boolean number string localized
title optional lokalisierte Zeichenkette Überschrift der Spalte, Erklärung des Inhalts.
  • commons:Data:ISO3166/codes.tab
    • Zwei Spalten mit Zeichenketten. Erläuterung der Tabelle mehrsprachig. Zweite Spalte als Array aus Leerzeichen-getrennten Einzelwerten.

Diagramm (Chart)

[Bearbeiten | Quelltext bearbeiten]

Siehe Hilfe:Chart.

  • Inhaltsmodell: Chart.JsonConfig
  • Namenserweiterung: .chart
Komponente Status Datentyp Beschreibung
version Pflicht Zahl Verwendete Chart-Schema-Version.
source Pflicht Zeichenkette Seitentitel in commons:Data: mit Datentabelle.
type Pflicht Zeichenkette Art des darzustellenden Diagramms.
  • Eins von: line area bar pie
title optional lokalisierte Zeichenkette Titel des Diagramms.

Weitere Komponenten können je nach Art des Diagramms hinzukommen.

  • Die Schöpfungshöhe einer Design-Definition für ein Diagramm dürfte bei Null liegen, mithin "license":"CC0-1.0", für die Aggregation der dargestellten Daten muss dies jedoch nicht zutreffen.

Landkarte (Kartographer)

[Bearbeiten | Quelltext bearbeiten]

Siehe Hilfe:Kartographer.

  • Inhaltsmodell: Map.JsonConfig
  • Namenserweiterung: .map
Komponente Status Datentyp Beschreibung
data Pflicht Objekt GeoJSON-Inhalte usw.
description optional lokalisierte Zeichenkette Beschreibung der Karte.
sources optional Zeichenkette Die Herkunft der Daten. Wikitext ist zulässig und wird ausgewertet; eine nackte URL könnte auch benutzt werden.
  • Mehrsprachigkeit ist nicht vorgesehen; deshalb muss die englische Sprache verwendet werden
zoom optional Zahl Ganze Zahl zwischen 0 and 18. Nur verwendet für die eigene Vorschau, nicht bei Einbindung in andere Seiten.
latitude optional Zahl Geografische Breite; -9090 – nur verwendet für die Zentrierung der eigenen Vorschau, nicht bei Einbindung in andere Seiten.
longitude optional Zahl Geografische Länge; nur verwendet für die Zentrierung der eigenen Vorschau, nicht bei Einbindung in andere Seiten.

Die Schöpfungshöhe einer Landkarten-Beschreibung dürfte bei Null liegen, mithin "license":"CC0-1.0", für die Aggregation der dargestellten Daten muss dies jedoch nicht zutreffen.

Seitenbearbeitung

[Bearbeiten | Quelltext bearbeiten]

Zunächst kann die Datenseite nur im Ganzen als Quelltext zur Bearbeitung geöffnet werden.

  • Danach kann bei einer Allgemeinen Tabelle über den Button „Als Tabelle bearbeiten“ der Block data auch in einfacher Form in einem Dialog bearbeitet werden.
  • Alternativ kann der Quelltext über externe Werkzeuge manipuliert und kopiert werden.
  • Werkzeuge zum Import/Export sowie zur Konvertierung können herangezogen werden.

Eine Formatierung des Quelltextes ist sinnlos; beim Abspeichern wird eine standardisierte Formatierung hergestellt.

In der Vorschau und Seitenansicht wird die Struktur ggf. als Tabelle dargestellt, oder für eine Anwendung ausgewertet.

Debugger / Validierer

[Bearbeiten | Quelltext bearbeiten]

Die syntaktische Gültigkeit des Codes kann vor dem Speichern überprüft werden; in der Seitenvorschau wird entweder eine erwartete Tabelle gezeigt, oder im Fehlerfall das Feld rot ausgefüllt.

Es eignen sich:

  • json-validate.com – der Code kann auf diese Seite kopiert werden und zeigt die fehlerhaften Zeilen.
  • jsonlint.com – anderes Angebot
  • jsonformatting.com – hier kann das Format überprüft werden und eine Reihe von Vorgängen ausgeführt werden, z. B. die Formatierung.

Jeder andere JavaScript-Validierer kann ebenso zur ersten Fehlersuche verwendet werden.

Mit einer Lua-Funktion mw.ext.data.get() lässt sich die Seite aus jedem Wiki auslesen und die Inhalte der Struktur können verarbeitet werden.