Benutzer:Dogbert66/Sandkasten/Lua

aus Wikipedia, der freien Enzyklopädie

Die folgende Seite ist meine Spielwiese für Aufrufe von Lua-Code aus Wikipedia.

Die Zielsetzung ist der Zugriff auf Wikidata. Daher ist zu beachten, dass gemäß Bedingung D in diesem Meinungsbild das "Einbinden von Wikidata-Daten über Vorlagen ... erfolgen muss".

Das ist aber auch Zweck meiner Seite: ich möchte eine Vorlage basteln, um CODATA-Werte aus Wikidata zu ziehen!

Dennoch starte ich erst einmal mit ein paar einfachen {{#invoke:...}} Kommandos.

Modul:WLink

Es wird hier das Lua-Modul Modul:WLink untersucht.

Artikelname herausfinden

{{#invoke:WLink|getArticleBase}} liefert: Dogbert66/Sandkasten/Lua

Funktionsweise:

  • {{#invoke:...}} hat hier zwei Parameter: WLink und getArticleBase
  • D.h. es wird im Lua-Modul Modul:WLink die Funktion function WLink.getArticleBase( attempt ) aufgerufen, dabei aber attempt leergelassen, weshalb das Lua-Modul den Rückgabewert r mit der Zeile
r = mw.title.getCurrentTitle().text;
setzt, wobei mw für mediawiki steht.

Mit einem gesetzten Parameter attempt sieht das Beispiel so aus:

{{#invoke:WLink|getArticleBase|Lichtgeschwindigkeit}} liefert: Lichtgeschwindigkeit
{{#invoke:WLink|getArticleBase|Lichtgeschwindigkeit#Wert}} liefert: Lichtgeschwindigkeit

Dabei wird intern function WLink.getTarget( attempt ) verwendet:

{{#invoke:WLink|getTarget|Lichtgeschwindigkeit}} liefert:
{{#invoke:WLink|getTarget|Lichtgeschwindigkeit#Wert}} liefert:
{{#invoke:WLink|getTarget|[[Lichtgeschwindigkeit#Wert]]}} liefert: Lichtgeschwindigkeit#Wert
{{#invoke:WLink|getTarget|https://de.wikipedia.org/wiki/Lichtgeschwindigkeit#Wert}} liefert: https://de.wikipedia.org/wiki/Lichtgeschwindigkeit#Wert
{{#invoke:WLink|getTarget|[https://de.wikipedia.org/wiki/Lichtgeschwindigkeit#Wert Linktext]}} liefert: https://de.wikipedia.org/wiki/Lichtgeschwindigkeit#Wert

Modul:Wikidata

Es wird hier das Lua-Modul Modul:Wikidata untersucht.

Wikidata-Wert abfragen

Als Beispiel dient Code aus Vorlage:Infobox Software. Diese Infobox wird auf Seiten eingesetzt, die Software beschreiben, wie z.B. Mozilla Firefox (D:Q698) oder Microsoft Excel (D:Q11272).

Aktuelle Versionsnummer

Auf den Seiten Mozilla Firefox oder Microsoft Excel steht in der Vorlage im Grunde genommen {{#invoke:Wikidata|claim|P348|references=ja}}. Das führt auf der Seite hier zu keinem Ergebnis

{{#invoke:Wikidata|claim|P348|references=ja}} liefert:

weil diese Sandkasten-Seite kein Wikidataobjekt hat.

Daher müssen wir hier auf der Testseite explizit die id des Wikidata-Items angeben, zu dem wir etwas wissen wollen:

{{#invoke:Wikidata|claim|P348|references=ja|id=Q698}} liefert:
{{#invoke:Wikidata|claim|P348|references=ja|id=Q11272}} liefert:

Beachte, dass die Property P348 auf D:Q698#P348 alle verschiedenen Versionen auflistet, dass dabei die aktuelle Versionsnummer jedoch mit "Preferred rank" gekennzeichnet ist. Das references=ja führt dazu, dass aus dem speziellen Eintrag unter der Property, der verwendet wird, auch die Referenz ausgelesen wird und unten verlinkt ist. noch offen wie genau funktioniert das im Lua-Code?

Offizieller Name der Software (P1448)
{{#invoke:Wikidata|claim|P1448|references=ja|id=Q698}} liefert:
{{#invoke:Wikidata|claim|P1448|references=ja|id=Q11272}} liefert:

Diese Property wurde bei Excel nicht gesetzt.

Und was hat das jetzt mit CODATA zu tun ?

Naja, zumindest einer von den folgenden beiden Aufrufen erzeugt sogar schon eine Referenz:

{{#invoke:Wikidata|claim|P1181|references=ja|id=Q2111}} liefert:
{{#invoke:Wikidata|claim|P1181|references=ja|id=Q3814108}} liefert:

Weitere Ansätze

Lua: naja, die Sprache scheint verständlich  Ok
Modul:Wikidata: da stecken schon soviele Lösungen drin, dass wir erst mal unser Problem genau spezifizieren müssen ein lächelnder Smiley  noch offen
  • D:Help:Data type
  • Zahlen werden abgespeichert als Wert, untere Unsicherheit, obere Unsicherheit. Darstellung z.B. auf D:Q3814108#P2370 ist nur eine Darstellung!!
  • Units haben eigene Wikidata-Seite, z.B. D:Q182429
Dabei fehlt der TeX-Ausdruck \frac{m}{s} gemäß D:Help:Data type#Mathematical expression
  • Falls Properties (z.B. einer Unit) fehlen, so sollte man auf D:WD:PP einen Vorschlag posten.
  • Ggf. bei D:WD:PHYSICS mitarbeiten oder Unterstützung anfragen.

Unsere Todos

außerhalb Wikipedia

  • können wir saubere Referenzen zu alten CODATA-Versionen (2010, 2014) erzeugen? z.B. WebArchive auf alten Stand von CODATA?
  • können wir auch die aktuellen Werte schon mit einem eindeutigen WebArchive-Datum erfragen, so dass klar ist, dass das keine Referenz auf einen 2022-Wert ist?

Wikipedia

  • Wir brauchen eine klare Aussage, wie wir das hier lösen wollen noch offen
  • Naja, die Vorlage muss natürlich angelegt werden ein lächelnder Smiley . Wohl zuerst in der Sandbox.
Dabei benötigen wir wohl mehrere Parameter:
– Referenz erzeugen? ja / nein / evtl. nur Referenz??
– Darstellung als kopierbarer Text / Darstellung als möglichst schöner TeX-Ausdruck / "Concise form" (d.h. mit runden Klammern)
– Darstellung der Unsicherheiten: "Concise form" (d.h. mit runden Klammern) / absolute Unsicherheit / relative Unsicherheit
Intern muss erkannt werden:
– Für exakte Werte soll der Referenz-Text anders lauten, als für unsichere Werte.

Wikidata

  • CODATA-Werte überprüfen:
– Alle uns interessierenden CODATA-Werte haben eine de-Wiki-Seite und somit ein Wikidata-Item. (insbesondere auch: gibt es Doubletten?)
– Die Historie der sich geändert habenden Werte ist bei jedem Item mit CODATA 2010, CODATA 2014, CODATA 2018 sauber bezeichnet. Der derzeit gültige Wert hat "Preferred rank".
– Alle Werte haben eine Referenz, mit der wir was anfangen können (noch offen was heißt das?)
– Exakte Werte sind exakt, unsichere Werte sind mit oberer und unterer Grenze
– stimmt die Einheit?
  • Units:
– haben alle eine kopierfähige Text-Darstellung und eine "Mathematical expression"-Darstellung? (noch offen was heißt das?)
  • Gibt es für die obigen Fragen eine SPARQL-Frage, die uns da weiterhilft?? Bei welcher Fragestellung??? noch offen

Lua-Module

  • Reicht das, was schon da ist, bereits aus? Welche Erweiterungen benötigen wir?
  • {{#invoke:Wikidata|claim|P1181|references=ja|id=Q3814108}} liefert ja bereits eine "wissenschaftliche Darstellung" mit dem Exponenten: . Wir bräuchten aber eine TeX-Darstellung \cdot 10^{-31} anstelle des e-31. Können wir den Exponenten bereits separat erzeugen? noch offen dazu den Code von claim lesen!

Durch die Beispiele erzeugte Einzelnachweise