Hilfe:Wikimedia Commons/Data

From Wikipedia, the free encyclopedia

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:

Weitere Informationen Komponente, Status ...
KomponenteStatusDatentypBeschreibung
licensePflichtZeichenkette Eine Nutzungslizenz für die Daten..
mediawikiCategoriesoptionalArray aus Kategorie-Objekten Kategorisierung innerhalb von Commons.
Schließen

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:

Weitere Informationen Komponente, Status ...
KomponenteStatusDatentypBeschreibung
namePflichtZeichenkette Titel einer Kategorie innerhalb von Commons.
sortoptionalZeichenkette Sortierschlüssel.
Schließen

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

Weitere Informationen Komponente, Status ...
KomponenteStatusDatentypBeschreibung
schemaPflichtObjekt mit einer Komponente fields Strukturdeklaration der Spalten.
dataPflichtArray 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.
descriptionoptionallokalisierte Zeichenkette Beschreibung der Gesamt-Tabelle.
sourcesoptionalZeichenkette 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
Schließen

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:

Weitere Informationen Komponente, Status ...
KomponenteStatusDatentypBeschreibung
namePflichtZeichenkette 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.
typePflichtZeichenkette Datentyp der Spalte.
  • Eins von: boolean number string localized
titleoptionallokalisierte Zeichenkette Überschrift der Spalte, Erklärung des Inhalts.
Schließen

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
Weitere Informationen Komponente, Status ...
KomponenteStatusDatentypBeschreibung
versionPflichtZahl Verwendete Chart-Schema-Version.
sourcePflichtZeichenkette Seitentitel in commons:Data: mit Datentabelle.
typePflichtZeichenkette Art des darzustellenden Diagramms.
  • Eins von: line area bar pie
titleoptionallokalisierte Zeichenkette Titel des Diagramms.
Schließen

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
Weitere Informationen Komponente, Status ...
KomponenteStatusDatentypBeschreibung
dataPflichtObjekt GeoJSON-Inhalte usw.
descriptionoptionallokalisierte Zeichenkette Beschreibung der Karte.
sourcesoptionalZeichenkette 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
zoomoptionalZahl Ganze Zahl zwischen 0 and 18. Nur verwendet für die eigene Vorschau, nicht bei Einbindung in andere Seiten.
latitudeoptionalZahl Geografische Breite; -9090 – nur verwendet für die Zentrierung der eigenen Vorschau, nicht bei Einbindung in andere Seiten.
longitudeoptionalZahl Geografische Länge; nur verwendet für die Zentrierung der eigenen Vorschau, nicht bei Einbindung in andere Seiten.
Schließen

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.

Related Articles

Wikiwand AI