Wikipedista:Matěj Suchánek/Pískoviště/2
Pozadí
editovatPřístup k údajům poskytuje rozšíření Wikibase Client.
Způsoby
editovatParserová 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)
Modul
editovat- 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
Š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 takybest
– aktuální hodnota, jinak ostatní, nebopreferred
– 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ř.2025-02-12
nebo#now
)sort=
→ podle čeho hodnoty seřadit (např. ocenění seřazená podle data)- celý seznam viz Modul:Wikidata/Dokumentace
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
editovatParserová funkce v infoboxu
editovat{{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
editovatAlbert 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) |
Škola | Luitpold-Gymnasium (München) (1888–1894) Alte Kantonsschule Aarau (1895–1896) Spolková vysoká technická škola v Curychu (1896–1900) Curyšská univerzita (do 1905) |
Zaměstnavatel | Eidgenö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ěti | Hans Albert Einstein Eduard Einstein Lieserl Marić |
Ocenění | Honorary Fellow of the Royal Society Te Apārangi čestný doktor Univerzity Complutense v Madridu (1923) čestný doktor Princetonské univerzity čestný doktorát Hebrejské univerzity v Jeruzalémě (1949) čestný doktor Ženevské univerzity zahraniční člen Královské společnosti (1921) Velcí přistěhovalci (2009) … více na Wikidatech |
Bydliště | Schaffhausen (1901–1902) Einsteinhaus Bern (1903–1905) Smíchov (od 1911) Einsteinhaus Caputh (1929–1932) Princeton Mnichov |
NKČR | jn19990002019 |
{{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
editovatV ukázkách ↑ nepoužívám parametry ze šablony:
{{{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...)
- pokud je parametr vyplněn
{{#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ě
{{#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
- pokud je parametr vyplněn
{{#if: {{{parametr|}}} | {{{parametr}}} | {{{parametr| {{#invoke:Wikidata|formatStatements|...}} }}} }}
- výhoda oproti předchozí – lze přebít hodnotu z Wikidat, aniž bychom zadali jinou
{{#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
Č. | 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- Vytvoření párů parametr, resp. buňka → vlastnost na Wikidatech
- Ideální jsou relace 1:1, mohou se ale vyskytnout i 1:n, které se řeší složitěji, nebo n:1, které jsou mnohdy neřešitelné.
- Nástroje:
- Special:ListProperties – všechny vlastnosti s daným datovým typem
- vyhledávač – vyhledávání vlastností nefunguje, ale lze to obejít prefixem
property:
, resp.p:
(příklad „datum“) - vlastnosti tohoto typu (P1963) (příklady: město, politická strana)
- 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]]. }}
- Kategorie:Wikipedie:Šablony používající údaje z Wikidat
- Dobrovolné: krok #1 zabije dvě mouchy jednou ranou, jelikož ušetří čas při importu existujících hodnot (např. pomocí HarvestTemplates)
- 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.