Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch

Modul: Dokumentation

Modul zur Verarbeitung von Wikidata-Zeitinformationen

Bearbeiten

Dieses Modul wird mit

local success, t = pcall(require, "Modul:Wikidata/Time")
local Time = t.service

eingebunden. Es arbeitet mit Zeit-Objekten. Diese können mit

    local source = mw.wikibase.getBestStatements( 'Q79822', 'P569' ) )
    local someDate = source[1].mainsnack.datavalue.value
    local t = Time:new(someDate)

erzeugt werden.

Konstanten

Bearbeiten

Konstanten werden vermutlich nur innerhalb des Moduls verwendet, stehen jedoch auch außerhalb zur Verfügung:

  • MATCHING ist das string.match pattern, mit dem in Wikidata die Eigenschaft datavalue.value.time analysiert wird.
  • PRECISIONLEVEL ist eine Tabelle mit Bezeichnern für jeden möglichen Wert von datavalue.value.precision. Die Bezeichner für Präzisionsebenen über 8 bezeichnen die Felder der Zeit-Objekte: year, month, day, hour, min und sec
  • DEFAULTFORMAT ist eine Tabelle, die den Präzisionsebenen von 6 bis 14 je einen format-string zuordnet, der zur Darstellung eines Zeit-Objektes genutzt wird, wenn dafür kein anderer format-string angegeben wird. Zeit-Objekte mit noch geringerer Präzision werden nicht mit default format dargestellt.

Alle Felder eines Zeitobjektes werden in Modul:Time beschrieben. Hier bitte nur noch mal zur Beachtung:

  • timezone (Zeitzone; ACHTUNG: Dieses Modul arbeitet derzeit noch ohne Berücksichtigung der Zeitzone. Zeitzonen können in Wikidata derzeit nicht erfasst werden. (Siehe Phab:T87764) Dieser Fehler wird möglicherweise in Zukunft behoben werden.)

Methoden

Bearbeiten

Weitere Methoden, insbesondere zur Formatierung und zum Vergleich von Zeitobjekten werden aus Modul:Time geerbt.

Time:qualified(Statement)

Bearbeiten

Statement und Status zur Qualifikation desselben

Parameter
Statement der Dateninhalt eines Eigenschaftswertes, der qualifiziert werden soll, z.B.
local myStatement = mw.wikibase.getBestStatements('Q79822', 'P108')[1]
local qualifiedStatement, isQualified = myTime:qualified(myStatement)
if not qualifiedStatement then
	mw.log('Statement time differs from my time!')
elseif not isQualified then
	mw.log('Statement is time independent!')
else
	mw.logObject(qualifiedStatement.mainsnak)
end
Rückgabewert: eines der folgenden Wertepaare
snak, true
wenn der Wert des Zeit-Objektes den Dateninhalt qualifiziert
snak, false
wenn der Dateninhalt zeitunabhängig ist
nil, true
wenn der Dateninhalt nil ist (Ex falso quodlibet)
nil, false
wenn der Wert des Zeit-Objektes den Dateninhalt disqualifiziert

Time:getFiltered(statements)

Bearbeiten

Neue Liste mit Aussagen, aus denen jene herausgefiltert sind, die durch dieses Zeit-Objekt disqualifiziert sind.

Parameter
statements Liste mit Aussagen, die z. B. mit mw.wikidata.getBestStatements erzeugt worden sein kann
Rückgabewert: Liste mit Aussagen im selben Format, jedoch ggf. mit weniger Einträgen

Funktionen

Bearbeiten

timify(values)

Bearbeiten

Erstellt aus einer Wertetabelle eine Tabelle von Zeit-Objekten der Parameter ist als {<source>, <source>, ...} anzugeben. Für die <source>-Elemente gelten ähnliche Bedingungen, wie für den Parameter des Konstruktors. Es können jedoch auch der Rückgabewert von mw.wikidata.getBestStatements('Q...', 'P...'), oder alle Werte einer Eigenschaft, die ein einzelnes Statement qualifiziert, direkt übergeben werden.

local statements = mw.wikidata.getBestStatements('Q79822', 'P569')
local myTimes = Time.timify(statements)
for _, birthday in myTimes do
	mw.log(birthday:format())
end
statements = mw.wikidata.getBestStatements('Q79822', 'P108')
myTimes = Time.timify(statements[1].qualifiers.P580)
for _, start in myTimes do
	mw.log(start:format())
end