Wikipedista:Matěj Suchánek/Pískoviště/2

Pozadí

editovat

Přístup k údajům poskytuje rozšíření Wikibase Client.

Způsoby

editovat

Parserová funkce

editovat
  • vždy dostupná, ale (zatím) má velmi omezené možnosti
  • použití {{#property:P1}} nebo {{#property:český název vlastnosti}}
  • od června 2015 si můžeme vybrat položku: {{#property:hlavní město|from=Q213}} nebo {{#property:P36|from=Q213}} → Praha (← samozřejmě v infoboxech preferujeme Praha)
  • skriptovací jazyk Lua
local p = {} -- tabulka, kterou na konci musíme vrátit

function p.helloWorld() -- tady do ní vložíme funkci, kterou potom můžeme použít
    return 'Ahoj světe!'
end

return p -- tady ji vracíme wikisvětu i s funkcí
  • použití modulů – podobně jako šablony se i moduly „volají“ (vkládají), ale na rozdíl od šablon přes parserovou funkci #invoke:, k tomu se navíc vybírá funkce
  • software Wikibase Client poskytuje knihovnu s funkcemi, kterými se načítají data
Srovnání použití šablony a modulu
Šablona
{{ NÁZEV_ŠABLONY | parametr1 = hodnota1 | hodnota anon. parametru | ... }}
{{{1|}}} {{#if: {{{parametr1|}}} | [[{{{parametr1}}}]] }}
Modul
{{ #invoke: NÁZEV_MODULU | NÁZEV_FUNKCE | parametr1 = hodnota1 | hodnota anon. parametru | ... }}
local p = {}
function p.funkce(frame)
    local parametry = frame.args
    local anonym = parametry[1]
    local parametr1 = parametry["parametr1"]
    if parametr1 then return '[[' .. parametr1 .. ']]' end
end
return p
  • pokud je modul schovaný v šabloně, může používat i její parametry (tj. jí poskytnuté) – potom stačí do šablony vložit {{ #invoke: NÁZEV_MODULU | NÁZEV_FUNKCE }} a celou šablonu naprogramovat přímo v modulu (příklad)




  • náš modul se jmenuje „Wikidata“ a funkce „formatStatements“ (zformátovat tvrzení)
    {{#invoke:Wikidata|formatStatements}}
  • povinný je parametr „property“ (vlastnost), v tomto případě se zadává identifikátor
    {{#invoke:Wikidata|formatStatements|property=P36}}
  • pískoviště nemá vlastní položku, takže je nutné uvést její identifikátor (vlastnost hlavní město (P36), položka Česko (Q213))
    {{#invoke:Wikidata|formatStatements|property=P36|id=Q213}}Praha
  • další užitečné parametry:
    rank= → postavení zobrazených hodnot (standardně valid, tedy všechny bez neplatných, užitečné jsou taky best – aktuální hodnota, jinak ostatní, nebo preferred – pouze aktuální)
    separator, conjunction= → normálně se hodnoty oddělují čárkami a poslední dvě spojkou „a“, tímhle si ale můžeme nastavit např. zalamování
    limit= → kolik nejvýše chceme hodnot (např. pokud nám stačí jen jedna nebo jich nechceme příliš)
    showqualifier= → vymezení, které se má zobrazit s hodnotou (např. datum, ke kterému se vztahuje počet obyvatel)
    withqualifier= → vymezení, které hodnota musí mít, aby se zobrazila (např. pouze počty obyvatel, u kterých je známé datum)
    date= → pomocí vymezení od–do (příp. datum) vybrat hodnoty k danému časovému údaji (např. 2024-06-18 nebo #now)
    sort= → podle čeho hodnoty seřadit (např. ocenění seřazená podle data)
    celý seznam viz Modul:Wikidata/Dokumentace
Příklady
všechny státy v USA podle abecedy nebo podle data jen ty k dnešnímu dni
property=P150 id=Q30
separator=,<br>
conjunction=,<br>
sort=alpha
property=P150 id=Q30
separator=,<br>
conjunction=,<br>
sort=date
showqualifier=time
property=P150 id=Q30
separator=,<br>
conjunction=,<br>
sort=date
showqualifier=time
date=#now
Alabama,
Aljaška,
Americká Samoa,
Americké Panenské ostrovy,
Arizona,
Arkansas,
Colorado,
Connecticut,
Delaware,
District of Columbia,
Filipínské společenství,
Florida,
Georgie,
Guam,
Havaj,
Idaho,
Illinois,
Indiana,
Indiana Territory,
Iowa,
Jižní Dakota,
Jižní Karolína,
Kalifornie,
Kansas,
Kentucky,
Louisiana,
Louisiana Territory,
Maine,
Maryland,
Massachusetts,
Michigan,
Minnesota,
Mississippi,
Mississippi Territory,
Missouri,
Montana,
Nebraska,
Nevada,
New Hampshire,
New Jersey,
New York,
Nové Mexiko,
Ohio,
Oklahoma,
Oregon,
Ostrovní vláda filipínských ostrovů,
Pensylvánie,
Portoriko,
Rhode Island,
Severní Dakota,
Severní Karolína,
Severní Mariany,
Severozápadní teritorium,
Southwest Territory,
Tennessee,
Teritorium Michigan,
Territory of Alaska,
Territory of Hawaii,
Territory of Orleans,
Texas,
Utah,
Vermont,
Virginie,
Washington,
Wisconsin,
Wyoming,
Západní Virginie
Severozápadní teritorium (1787–1803),
Delaware (od 1787),
Pensylvánie (od 1787),
New Jersey (od 1787),
Georgie (od 1788),
Connecticut (od 1788),
Massachusetts (od 1788),
Maryland (od 1788),
Jižní Karolína (od 1788),
New Hampshire (od 1788),
Virginie (od 1788),
New York (od 1788),
Severní Karolína (od 1789),
Southwest Territory (1790–1796),
Rhode Island (od 1790),
District of Columbia (od 1790),
Vermont (od 1791),
Kentucky (od 1792),
Tennessee (od 1796),
Mississippi Territory (1798–1817),
Indiana Territory (1800–1816),
Ohio (od 1803),
Territory of Orleans (1804–1812),
Teritorium Michigan (1805–1837),
Louisiana Territory (1805–1812),
Louisiana (od 1812),
Indiana (od 1816),
Mississippi (od 1817),
Illinois (od 1818),
Alabama (od 1819),
Maine (od 1820),
Missouri (od 1821),
Arkansas (od 1836),
Michigan (od 1837),
Florida (od 1845),
Texas (od 1845),
Iowa (od 1846),
Wisconsin (od 1848),
Kalifornie (od 1850),
Minnesota (od 1858),
Oregon (od 1859),
Kansas (od 1861),
Západní Virginie (od 1863),
Nevada (od 1864),
Nebraska (od 1867),
Colorado (od 1876),
Severní Dakota (od 1889),
Jižní Dakota (od 1889),
Montana (od 1889),
Washington (od 1889),
Idaho (od 1890),
Wyoming (od 1890),
Utah (od 1896),
Guam (od 1898),
Territory of Hawaii (1898–1959),
Portoriko (od 1898),
Americká Samoa (od 1900),
Ostrovní vláda filipínských ostrovů (1901–1935),
Oklahoma (od 1907),
Nové Mexiko (od 1912),
Arizona (od 1912),
Territory of Alaska (1912–1959),
Americké Panenské ostrovy (od 1917),
Filipínské společenství (1935–1946),
Aljaška (od 1959),
Havaj (od 1959),
Severní Mariany (od 1986)
Delaware (od 1787),
Pensylvánie (od 1787),
New Jersey (od 1787),
Georgie (od 1788),
Connecticut (od 1788),
Massachusetts (od 1788),
Maryland (od 1788),
Jižní Karolína (od 1788),
New Hampshire (od 1788),
Virginie (od 1788),
New York (od 1788),
Severní Karolína (od 1789),
Rhode Island (od 1790),
District of Columbia (od 1790),
Vermont (od 1791),
Kentucky (od 1792),
Tennessee (od 1796),
Ohio (od 1803),
Louisiana (od 1812),
Indiana (od 1816),
Mississippi (od 1817),
Illinois (od 1818),
Alabama (od 1819),
Maine (od 1820),
Missouri (od 1821),
Arkansas (od 1836),
Michigan (od 1837),
Florida (od 1845),
Texas (od 1845),
Iowa (od 1846),
Wisconsin (od 1848),
Kalifornie (od 1850),
Minnesota (od 1858),
Oregon (od 1859),
Kansas (od 1861),
Západní Virginie (od 1863),
Nevada (od 1864),
Nebraska (od 1867),
Colorado (od 1876),
Jižní Dakota (od 1889),
Severní Dakota (od 1889),
Montana (od 1889),
Washington (od 1889),
Idaho (od 1890),
Wyoming (od 1890),
Utah (od 1896),
Guam (od 1898),
Portoriko (od 1898),
Americká Samoa (od 1900),
Oklahoma (od 1907),
Nové Mexiko (od 1912),
Arizona (od 1912),
Americké Panenské ostrovy (od 1917),
Aljaška (od 1959),
Havaj (od 1959),
Severní Mariany (od 1986)

Ukázky

editovat

Parserová funkce v infoboxu

editovat
Albert Einstein
 
Datum narození14. 3. 1879
Místo narozeníUlm
Datum úmrtí18. 4. 1955
Místo úmrtíPrinceton
Povolánífyzik
ObčanstvíNěmecké císařství, apatrida, Švýcarsko, Předlitavsko, Výmarská republika, Německo, Spojené státy americké
ŠkolaSpolková vysoká technická škola v Curychu, Luitpold-Gymnasium (München), Alte Kantonsschule Aarau, Curyšská univerzita
ZaměstnavatelEidgenössisches Institut für Geistiges Eigentum, Univerzita Karlova, Curyšská univerzita, Německá univerzita v Praze, Spolková vysoká technická škola v Curychu, Kaiser-Wilhelm-Gesellschaft zur Förderung der Wissenschaften, Princetonská univerzita, Univerzita v Leidenu, Bernská univerzita, Deutsche Physikalische Gesellschaft, Humboldtova univerzita, Pruská akademie věd, Institut pro pokročilé studium, Univerzita v Leidenu, Bern, Kalifornská univerzita v Berkeley
ChoťMileva Marićová, Elsa Einsteinová
DětiHans Albert Einstein, Eduard Einstein, Lieserl Marić
OceněníBarnard-Medaille, Nobelova cena za fyziku, Zlatá medaile Královské astronomické společnosti, Cena Julese Janssena, Matteucciho medaile, medaile Maxe Plancka, Franklinova medaile, Copleyho medaile, Řád za zásluhy v oblasti umění a věd, Josiah Willard Gibbs Lectureship, čestný doktor Ženevské univerzity, čestný doktorát Hebrejské univerzity v Jeruzalémě, čestný doktor Princetonské univerzity, čestný doktor Univerzity Complutense v Madridu, zahraniční člen Královské společnosti, Member of the National Academy of Sciences of the United States, Velcí přistěhovalci, Pour le Mérite, Honorary Fellow of the Royal Society Te Apārangi
BydlištěEinsteinhaus Caputh, Einsteinhaus Bern, Mnichov, Princeton, Smíchov, Schaffhausen
NKČR

Nepodařilo se zobrazit vlastnost NKČR AUT: Vlastnost NKČR AUT nebyla nalezena.

{{Infobox
| záhlaví = {{#property:rodné jméno}} {{#property:příjmení}}
| obrázek = [[Soubor:{{#property:obrázek}}|225px]]
| popis1 = Datum narození
| data1 = {{#property:datum narození}}
| popis2 = Místo narození
| data2 = {{#property:místo narození}}
| popis3 = Datum úmrtí
| data3 = {{#property:datum úmrtí}}
| popis4 = Místo úmrtí
| data4 = {{#property:místo úmrtí}}
| popis5 = Povolání
| data5 = {{#property:zaměstnání}}<!-- bohužel zatím nelze vybírat z aliasů -->
| popis6 = Občanství
| data6 = {{#property:státní občanství}}
| popis7 = Škola
| data7 = {{#property:škola}}
| popis8 = Zaměstnavatel
| data8 = {{#property:zaměstnavatel}}
| popis9 = Choť
| data9 = {{#property:choť}}
| popis10 = Děti
| data10 = {{#property:dítě}}
| popis11 = Ocenění
| data11 = {{#property:ocenění}}
| popis12 = Bydliště
| data12 = {{#property:bydliště}}
| popis13 = NKČR
| data13 = {{#property:NKČR AUT}}
}}

Modul v infoboxu

editovat
Albert Einstein
[[Soubor:Albert Einstein Head.jpg a Einstein 1921 by F Schmutzer - restoration.jpg|225px]]
Datum narození14. března 1879
Místo narozeníUlm
Datum úmrtí18. dubna 1955
Místo úmrtíPrinceton
Povoláníteoretický fyzik, filozof věd, vynálezce, vědecký spisovatel, pedagog, vysokoškolský učitel, fyzik, filozof, spisovatel, vědec, matematik, patent examiner, profesor a pacifista
ObčanstvíNěmecké císařství (1879–1896)
apatrida (1896–1901)
Švýcarsko (od 1901)
Předlitavsko (1911–1912)
Výmarská republika (1918–1933)
Německo (1933)
Spojené státy americké (od 1940)
ŠkolaLuitpold-Gymnasium (München) (1888–1894)
Alte Kantonsschule Aarau (1895–1896)
Spolková vysoká technická škola v Curychu (1896–1900)
Curyšská univerzita (do 1905)
ZaměstnavatelEidgenössisches Institut für Geistiges Eigentum (1902–1909)
Bernská univerzita (1908–1909)
Curyšská univerzita (1909–1911)
Německá univerzita v Praze (1911–1912)
Spolková vysoká technická škola v Curychu (1912–1914)
Humboldtova univerzita (1914–1933)
Pruská akademie věd (1914–1933)
Deutsche Physikalische Gesellschaft (1916–1918)
Kaiser-Wilhelm-Gesellschaft zur Förderung der Wissenschaften (1917–1933)
Univerzita v Leidenu (1920–1946)
Princetonská univerzita (1933–1955)
Institut pro pokročilé studium
Univerzita v Leidenu
Univerzita Karlova
Bern
Kalifornská univerzita v Berkeley
ChoťMileva Marićová (1903–1919)
Elsa Einsteinová (1919–1936)
DětiHans Albert Einstein
Eduard Einstein
Lieserl Marić
OceněníHonorary Fellow of the Royal Society Te Apārangi
čestný doktor Princetonské univerzity
čestný doktorát Hebrejské univerzity v Jeruzalémě (1949)
čestný doktor Ženevské univerzity
čestný doktor Univerzity Complutense v Madridu (1923)
Member of the National Academy of Sciences of the United States (1942)
zahraniční člen Královské společnosti (1921)
… více na Wikidatech
BydlištěSchaffhausen (1901–1902)
Einsteinhaus Bern (1903–1905)
Smíchov (od 1911)
Einsteinhaus Caputh (1929–1932)
Princeton
Mnichov
NKČRjn19990002019
{{Infobox
| záhlaví = {{#invoke:Wikidata|getLabel}}
| obrázek = [[Soubor:{{#invoke:Wikidata|formatStatements|property=P18}}|225px]]
| popis1 = Datum narození
| data1 = {{#invoke:Wikidata|formatStatements|property=P569}}
| popis2 = Místo narození
| data2 = {{#invoke:Wikidata|formatStatements|property=P19}}
| popis3 = Datum úmrtí
| data3 = {{#invoke:Wikidata|formatStatements|property=P570}}
| popis4 = Místo úmrtí
| data4 = {{#invoke:Wikidata|formatStatements|property=P20}}
| popis5 = Povolání
| data5 = {{#invoke:Wikidata|formatStatements|property=P106}}
| popis6 = Občanství
| data6 = {{#invoke:Wikidata|formatStatements|property=P27|sort=date|showqualifier=time|separator=<br>|conjunction=<br>}}
| popis7 = Škola
| data7 = {{#invoke:Wikidata|formatStatements|property=P69|sort=date|showqualifier=time|separator=<br>|conjunction=<br>}}
| popis8 = Zaměstnavatel
| data8 = {{#invoke:Wikidata|formatStatements|property=P108|sort=date|showqualifier=time|separator=<br>|conjunction=<br>}}
| popis9 = Choť
| data9 = {{#invoke:Wikidata|formatStatements|property=P26|sort=date|showqualifier=time|separator=<br>|conjunction=<br>}}
| popis10 = Děti
| data10 = {{#invoke:Wikidata|formatStatements|property=P40|sort=date|separator=<br>|conjunction=<br>}}
| popis11 = Ocenění
| data11 = {{#invoke:Wikidata|formatStatements|property=P166|sort=date|showqualifier=P585|limit=7|showmore=true|separator=<br>|conjunction=<br>}}
| popis12 = Bydliště
| data12 = {{#invoke:Wikidata|formatStatements|property=P551|sort=date|showqualifier=time|separator=<br>|conjunction=<br>}}
| popis13 = NKČR
| data13 = {{#invoke:Wikidata|formatStatements|property=P691|autoformat=true}}
}}

Syntaxe

editovat

V ukázkách ↑ nepoužívám parametry ze šablony:

  1. {{{parametr| {{#invoke:Wikidata|formatStatements|...}} }}}
    • pokud je parametr vyplněn | parametr = hodnota, zobrazí se, parametr zadaný, ale nevyplněný | parametr = nezobrazí nic (i když Wikidata existují), vůbec nezadaný parametr zobrazí Wikidata, pokud existují, jinak nic
    • výhoda – můžeme přebít hodnotu z Wikidat, aniž bychom zadali jinou
    • nevýhoda – není možné jakkoliv jinak hodnotu upravovat (kurzíva, jako obrázek...)
  2. {{#if: {{{parametr| {{#invoke:Wikidata|formatStatements|...}} }}} | {{{parametr| {{#invoke:Wikidata|formatStatements|...}} }}} }}
    • výhoda oproti předchozí – jak lokální hodnotu, tak hodnotu z Wikidat lze upravovat, ovšem obě stejně
  3. {{#if: {{{parametr|}}} | {{{parametr}}} | {{#invoke:Wikidata|formatStatements|...}} }}
    • pokud je parametr vyplněn | parametr = hodnota, zobrazí se, jinak se zobrazí Wikidata nebo nic
    • výhoda – lokální hodnotu lze bezpečně upravovat, ne však tu z Wikidat
    • nevýhoda – není možné potlačit Wikidata prázdnou hodnotou
  4. {{#if: {{{parametr|}}} | {{{parametr}}} | {{{parametr| {{#invoke:Wikidata|formatStatements|...}} }}} }}
    • výhoda oproti předchozí – lze přebít hodnotu z Wikidat, aniž bychom zadali jinou
  5. {{#if: {{{parametr|}}} | {{{parametr}}} | {{{parametr| {{#if: {{#invoke:Wikidata|formatStatements|...}} | {{#invoke:Wikidata|formatStatements|...}} }} }}} }}
    • výhoda – lokální hodnotu a hodnotu z Wikidat lze upravovat zvlášť, tu z Wikidat lze přebít bez zadání jiné lokální
    • nevýhoda – už poněkud složitější kód občas vyžadující zásah zkušenějšího uživatele
Srovnání výstupů
Č. Vyplněný parametr Prázdný parametr Nezadaný parametr
WD ano WD chybí WD ano WD chybí
1 parametr nic nic Wikidata nic
2 nic
3 Wikidata
4 nic
5 nic

A nyní se můžeme přesunout k infoboxu {{Infobox - firma}}.

Převod infoboxu na Wikidata

editovat
  1. Vytvoření párů parametr, resp. buňka → vlastnost na Wikidatech
  2. Vložení syntaxe #Modul v infoboxu
    • některé vlastnosti se používají s vymezeními, nejčastěji od (P580), do (P582), datum (P585)
    • přebírání referencí je stále experimentální
    • addclass=true obalí výstup modulu CSS třídou .wd, kterou zvýrazní udělátko HighlightWikidata nebo vlastní stylopis (nepoužívat tam, kde je součástí jiné wikisyntaxe)
    • addlink=true přidá za šablonu symbol odkazující přímo na místo, kde je možné hodnotu změnit
    • Do zápatí disclaimer: {{#if: {{#invoke:Wikidata|getCurrentId}} | Některá data mohou pocházet z [[d:{{#invoke:Wikidata|getCurrentId}}|datové položky]]. }}
  3. Kategorie:Wikipedie:Šablony používající údaje z Wikidat
  4. Dobrovolné: krok #1 zabije dvě mouchy jednou ranou, jelikož ušetří čas při importu existujících hodnot (např. pomocí HarvestTemplates)
  5. Dobrovolné (námět úkolu pro bota): doplnit {{ExternalUse}} na diskusních stránkách vlastností na Wikidatech (příklad), které jsou nyní šablonou přebírány

Monitorovací kategorie

editovat
{{#switch: {{NAMESPACENUMBER}}
| 0
| 14 = <!-- pouze články a kategorie -->
  {{#if: {{{parametr|}}}
  | {{#if: {{#property:P1}}
    | {{#ifeq: {{#property:P1}} | {{{parametr}}} |
      | [[Kategorie:Údržba:Hodnota odpovídá Wikidatům|{{PAGENAME}}]] <!-- toto je spíše monitoring, který navíc způsobuje cykly v kategoriích -->
      | [[Kategorie:Údržba:Hodnota se liší od Wikidat|{{PAGENAME}}]] <!-- nesouhlasící údaje nebo také jen důsledek primitivního srovnávání -->
      }}
    | [[Kategorie:Údržba:Hodnota není na Wikidatech|{{PAGENAME}}]] <!-- vhodné především pro boty, pro které je import na Wikidata rychlejší -->
    }}
  | <!-- parametr úplně chybí, přičemž může být na Wikidatech -->
  }}
}}

Porovnávání odpovídá/liší se funguje pouze pro „řetězcovité“ hodnoty, např. obrázek, kategorie na Commons, NK ČR AUT. Pro ostatní případy existuje možnost nastavit experimentální srovnávání přímo modulem.