Benutzer:Dogbert66/Sandkasten/Lua
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
undgetArticleBase
- D.h. es wird im Lua-Modul Modul:WLink die Funktion
function WLink.getArticleBase( attempt )
aufgerufen, dabei aberattempt
leergelassen, weshalb das Lua-Modul den Rückgabewertr
mit der Zeile
r = mw.title.getCurrentTitle().text;
- setzt, wobei
mw
fürmediawiki
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
siehe Vorlage:Infobox Software -> Version auf FirefoxOk Prinzip verstanden- Lua:
- – 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 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 . 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.
- Bei Referenzen auf CODATA-Korrelationswerte ist diese Frage zur Wikipedia nochmal zu beachten!
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 dese-31
. Können wir den Exponenten bereits separat erzeugen? noch offen dazu den Code von claim lesen!