Hilfe:Wikimedia Commons/Data

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

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

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.

Datentypen

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

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"
}

JSON-Format

  • 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.

Lizenzierung

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

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

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

{ "license": "CC0-1.0"
}

Spezielle Anwendungen

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

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

Datentypen

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

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.

Beispiel

  • commons:Data:ISO3166/codes.tab
    • Zwei Spalten mit Zeichenketten. Erläuterung der Tabelle mehrsprachig. Zweite Spalte als Array aus Leerzeichen-getrennten Einzelwerten.

Weitere Infos

Diagramm (Chart)

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)

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

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

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.

Lua

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.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.