Wikipedia
diqwiki
https://diq.wikipedia.org/wiki/Pela_Seri
MediaWiki 1.47.0-wmf.22
first-letter
Medya
Xısusi
Werênayış
Karber
Werênayışê karberi
Wikipediya
Werênayışê Wikipediya
Dosya
Werênayışê dosya
MedyaWiki
Werênayışê MedyaWikiyi
Şablon
Werênayışê şabloni
Peşti
Werênayışê peşti
Kategoriye
Werênayışê kategoriye
Portal
Werênayışê portali
TimedText
TimedText talk
Modul
Werênayışê moduli
Event
Event talk
Canan
0
49
557873
328256
2026-10-03T15:23:59Z
Maviulke
34834
557873
wikitext
text/x-wiki
'''Canan''' (Cananey, cananvaney); merdımê kı erdanê axayan, ê wêrandê erdandê bolınan bı nime karenê, yan zi wınênê erdan ra, mal u mülkdê axayan ra inan rê vanê canan. Ê [[zenat]]i rê zi vanê cananey. Jew-jew canan esto wêrandê erdan ra yan zi ê axlerê kı hetı gırweyêno inan ra meeşı u werdê xo gêno u hemver cı cı rê karê cananey keno. Merdımo kı cananey keno vanê [[zıreat]] u kardê zerzewat, [[meywe]] u tene karıtenı ra zi weş fahm bıkero u ê çi sero tecrübey cı estı bo. Karê cananey zi karê do rıhat niyo. Cı rê nefesê do hera u zanayenı lazım a. Wext beno canan wekileya wêrdê erdan zi keno u karkeri (recberi) dano gırweynayenı. Kardê cananey rê vanê cananinı, canani kerdenı-kerdış.
{{Portal|Huner}}
{{Kar u Senate}}
[[Kategoriye:Kar u Senate]]
7khpjmwenqozvmygzj7u0ekjvk3nccm
Çarşeme
0
4175
557913
484575
2026-10-03T18:20:12Z
Maviulke
34834
557913
wikitext
text/x-wiki
{{Databox }}'''Çarşeme''', hewt rocanê [[hefte]]y ra roca çarına.
== Be varyantanê binan ra ==
* [[Çarseme]]
* [[Çarşembe]]
* [[Çarşıme]]
* [[Çorseme]]
{{Rocê Heftey}}
[[Kategoriye:Rocê heftey]]
oj934wanjrx0rmzv74ve25m2v7jljnu
1814
0
20604
557949
303313
2026-10-04T10:51:24Z
Maviulke
34834
557949
wikitext
text/x-wiki
{{Pusula|1814}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
4jyo0rane4xi2q9yhnc92m4u7np3epa
1865
0
20605
557954
303204
2026-10-04T10:52:56Z
Maviulke
34834
557954
wikitext
text/x-wiki
{{Pusula|1865}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
59m6he7wmefv2rci6bd5ej2e2bmzcqy
1886
0
20607
557945
303354
2026-10-04T10:49:33Z
Maviulke
34834
557945
wikitext
text/x-wiki
{{Pusula|1886}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
gy69gdn56jqsretje314x5zqg9f1o4k
1853
0
20609
557962
303183
2026-10-04T10:55:40Z
Maviulke
34834
557962
wikitext
text/x-wiki
{{Pusula|1853}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
emps8ilwyrjs3t7f6pxayph57iopdp5
1864
0
20610
557955
303202
2026-10-04T10:53:14Z
Maviulke
34834
557955
wikitext
text/x-wiki
{{Pusula|1864}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
a5tllwbzb1ujnan43u5xq439bi7lyhd
1848
0
20612
557964
303172
2026-10-04T10:56:26Z
Maviulke
34834
557964
wikitext
text/x-wiki
{{Pusula|1848}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
o67qn8turzy27y16mewwea3oboq8au6
1881
0
20645
557948
303349
2026-10-04T10:51:03Z
Maviulke
34834
557948
wikitext
text/x-wiki
{{Pusula|1881}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Biyayışi ==
*[[Abdullah Cevdet]]
*[[Adnan Adıvar]]
*[[Mustafa Kemal Atatürk]]
*[[Galip Deniz]]
*[[Kâzım Dirik]]
*[[Şevket Galatalı]]
*[[Hasan Hayri Bey]]
*[[Rauf Orbay]]
*[[Pablo Pikasso]]
*[[Mustafa Zeki Saltık]]
*[[Refik Saydam]]
== Merdışi ==
*[[Fyodor Dostoyevskiy]]
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
roedxf46ap9lzp2gc5h8ua2465worp7
1849
0
20646
557963
303174
2026-10-04T10:56:01Z
Maviulke
34834
557963
wikitext
text/x-wiki
{{Pusula|1849}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
6upyw1nzdbo6l3a4xc8jtvk0gn8oxdw
1847
0
20647
557965
303170
2026-10-04T10:56:40Z
Maviulke
34834
557965
wikitext
text/x-wiki
{{Pusula|1847}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
4cua2qd9sfwn8ec6i5958oj2c2dwcnp
1845
0
20649
557966
303166
2026-10-04T10:57:03Z
Maviulke
34834
557966
wikitext
text/x-wiki
{{Pusula|1845}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
3uq4ka0uis0q20rjn1i858uk7vibjex
1844
0
20650
557957
303164
2026-10-04T10:54:00Z
Maviulke
34834
557957
wikitext
text/x-wiki
{{Pusula|1844}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
1ilvccwqje0pchdrmzvxxgarrtscrob
1840
0
20654
557928
303156
2026-10-04T10:37:21Z
Maviulke
34834
Pelê tewr keheni rocane kerdis
557928
wikitext
text/x-wiki
{{Pusula|1840}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
kjq046wxrzsqqzps1qdkhrc53x54zx3
1842
0
20656
557943
303160
2026-10-04T10:46:41Z
Maviulke
34834
557943
wikitext
text/x-wiki
{{Pusula|1842}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
95nxk7x3vrndnbz318fckyl84ekn6ma
1863
0
20659
557956
303200
2026-10-04T10:53:35Z
Maviulke
34834
557956
wikitext
text/x-wiki
{{Pusula|1863}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
f9iv42zgrw3nr59kbqqx3mg8xnnhogc
1871
0
21002
557942
303396
2026-10-04T10:46:09Z
Maviulke
34834
557942
wikitext
text/x-wiki
{{Pusula|1871}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
sgbdjpzzg1s2h6puwlwn5btibtx34r1
1855
0
21004
557961
303186
2026-10-04T10:55:21Z
Maviulke
34834
557961
wikitext
text/x-wiki
{{Pusula|1855}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
soba7z0qqiy1sm26t5o8j6hk4o0f3te
1857
0
21006
557960
303190
2026-10-04T10:55:02Z
Maviulke
34834
557960
wikitext
text/x-wiki
{{Pusula|1857}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
c2mbjxp9n8t40ule4mo09spl3r6k62l
1860
0
21008
557959
303195
2026-10-04T10:54:40Z
Maviulke
34834
557959
wikitext
text/x-wiki
{{Pusula|1860}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
0q4i9hac1o9xjhlgqfpwwa39twcvbyb
1870
0
21009
557950
303211
2026-10-04T10:51:41Z
Maviulke
34834
557950
wikitext
text/x-wiki
{{Pusula|1870}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
otnrh4cae3sbb1d20jw3sz8ip0l1ynp
1879
0
21010
557937
303373
2026-10-04T10:43:04Z
Maviulke
34834
557937
wikitext
text/x-wiki
{{Pusula|1879}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
f3drotgciaojqyblffua5w39i5fvbxg
1862
0
21092
557958
303198
2026-10-04T10:54:20Z
Maviulke
34834
557958
wikitext
text/x-wiki
{{Pusula|1862}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
6c4it7jevdrjm64ml0v46xjyj6nxrc5
1867
0
21093
557953
303207
2026-10-04T10:52:36Z
Maviulke
34834
557953
wikitext
text/x-wiki
{{Pusula|1867}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
am06hd9962ff0kfuii8rptzae75n77d
1868
0
21094
557952
303208
2026-10-04T10:52:17Z
Maviulke
34834
557952
wikitext
text/x-wiki
{{Pusula|1868}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
lo3wxrteryg4n4trctn4y9umqz2lwsb
1869
0
21095
557951
303209
2026-10-04T10:52:01Z
Maviulke
34834
557951
wikitext
text/x-wiki
{{Pusula|1869}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
fcuoryl0xu4d7dga7ux6ne0sn7k6ph4
1880
0
21096
557934
303372
2026-10-04T10:41:46Z
Maviulke
34834
557934
wikitext
text/x-wiki
{{Pusula|1880}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
qlq2d1felxppuq520chrynh61uk50ge
1890
0
21097
557931
303358
2026-10-04T10:40:34Z
Maviulke
34834
557931
wikitext
text/x-wiki
{{Pusula|1890}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
*[[Tahsin Coşkan]]
*[[Abidin Özmen]]
*[[Nazmi Sevgen]]
*[[Şükrü Sökmensüer]]
*[[Nuri Yamut]]
== Merdışi ==
*[[Vincent van Gogh]]
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
gvz2eq5e7xnet59behiapikmwos7fe2
1888
0
21098
557929
303356
2026-10-04T10:38:50Z
Maviulke
34834
557929
wikitext
text/x-wiki
{{Pusula|1888}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
19daamowmc0aihwk401bpkc6rv2b6np
1889
0
21099
557930
303357
2026-10-04T10:39:34Z
Maviulke
34834
557930
wikitext
text/x-wiki
{{Pusula|1889}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
*[[Charlie Chaplin]]
*[[Şemsettin Erkuş]]
*[[Süleyman Necati Güneri]]
*[[Adolf Hitler]]
*[[Salih Omurtak]]
*[[Recep Peker]]
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
23d7qp97kx0legj1mrk9axtm2rlycfh
1887
0
21100
557944
303355
2026-10-04T10:49:15Z
Maviulke
34834
557944
wikitext
text/x-wiki
{{Pusula|1887}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
o77gihq8w9q1vi9n6184xgpqopaypho
1877
0
21101
557939
303375
2026-10-04T10:44:33Z
Maviulke
34834
557939
wikitext
text/x-wiki
{{Pusula|1877}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
6mkrsp12qpeixyyfs6117igm132pvma
1878
0
21102
557938
303374
2026-10-04T10:43:48Z
Maviulke
34834
557938
wikitext
text/x-wiki
{{Pusula|1878}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
*[[Abdullah Alpdoğan]]
*[[Joseph Stalin]]
*[[Seid Nûrsi]]
*[[Rıza Şah Pehlewi]]
*[[Tahsin Uzer]]
*[[Ali Haydar Yuluğ]]
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
5udkgor136kg60ehz03u56vf7ddejef
1872
0
21107
557941
303395
2026-10-04T10:45:36Z
Maviulke
34834
557941
wikitext
text/x-wiki
{{Pusula|1872}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
3qx8ips46prke70myp2ye20zdaiugid
1874
0
21108
557940
303393
2026-10-04T10:45:02Z
Maviulke
34834
557940
wikitext
text/x-wiki
{{Pusula|1874}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
9buzcxyl6gyf0e2h3xec5hj7oxqp901
1884
0
21112
557946
303352
2026-10-04T10:49:59Z
Maviulke
34834
557946
wikitext
text/x-wiki
{{Pusula|1884}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
nos31fowvnqzlnngy6q0a32huywdrft
1883
0
21113
557947
303351
2026-10-04T10:50:15Z
Maviulke
34834
557947
wikitext
text/x-wiki
{{Pusula|1883}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
dentd2iayfm1fmykm31jq307ss3cjsv
1894
0
21114
557933
303362
2026-10-04T10:41:28Z
Maviulke
34834
557933
wikitext
text/x-wiki
{{Pusula|1894}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
di7vg66rn00earx3pykf4ubyt0bfw20
1893
0
21115
557935
303361
2026-10-04T10:42:22Z
Maviulke
34834
557935
wikitext
text/x-wiki
{{Pusula|1893}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
*[[Hüseyin Aksu]]
*[[Celadet Alî Bedirxan]]
*[[İzzettin Çağpar]]
*[[Nuri Dersimi]]
*[[Nazif Ergin]]
*[[Hermann Göring]]
*[[James Bedford]]
*[[Fahri Korutürk]]
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
cbavhlgpt01ecxwbqio518eveotlnlz
1892
0
21116
557936
303360
2026-10-04T10:42:46Z
Maviulke
34834
557936
wikitext
text/x-wiki
{{Pusula|1892}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
ihu7x0345k232y6wraeqcs5enjrrf74
1891
0
21117
557932
303359
2026-10-04T10:40:57Z
Maviulke
34834
557932
wikitext
text/x-wiki
{{Pusula|1891}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Cıwiyayış|Tarix|Biyografiye}}
{{Kronolociye}}
[[Kategoriye:Serri]]
054s0o3kuy4r844n1lxi650wf0pjqn0
Fırdayış
0
32737
557875
328245
2026-10-03T15:25:37Z
Maviulke
34834
557875
wikitext
text/x-wiki
[[File:Jumping to fly.jpg|thumb|Fırdayışê jû [[qılançıke]]]]
'''Fırdayış''', yew [[cınde]]y ya zi [[wasıta heway]] ke erd ra temasê xo bırna u perra ra asmên de raye gırewte, dey rê vaciyeno.
{{Kontrolê_otoriteyi}}
[[Kategoriye:Fır]]
8rauisw9orw150mll5nv6zl8hxj7zos
Saeta İrania Standarde
0
34750
557877
327968
2026-10-03T15:26:53Z
Maviulke
34834
557877
wikitext
text/x-wiki
[[Dosya:Iran (orthographic projection).svg|thumb|right|300px|Cayê İrani]]
'''Saeta İrania Standarde''' (''IRST'') ([[Farski]]: ساعت استاندارد ایران, bıwane: ''Sâate stândârde İrân'') saeta [[İran]]ia resmiya.<ref>http://timeanddate.com/worldclock/timezone.html?n=246</ref>
==Referansi==
<references/>
{{İran}}
[[Kategoriye:İran]]
[[Kategoriye:Zeman]]
t62f5jznm3l2lq86xvgd8mlxid98sg5
557922
557877
2026-10-03T19:34:24Z
Asmen
19
557922
wikitext
text/x-wiki
[[Dosya:Iran (orthographic projection).svg|thumb|right|300px|Cayê İrani]]
'''Saeta İrani'a Standarde''' (''IRST'') ([[Farski]]: ساعت استاندارد ایران, bıwane: ''Sā'at-e estāndārd-e Īrān'') saeta [[İran|İrani'a]]ia resmiya.<ref>http://timeanddate.com/worldclock/timezone.html?n=246</ref> Saeta İrani gorey [[UTC]] (Wextê Dınya'o Têvıste) 3:30 (hirê saeti u nêm) ferq kena.
==Referansi==
<references/>
{{İran}}
[[Kategoriye:İran]]
[[Kategoriye:Zeman]]
9oj8wjuit7tdnay3zosjydgd0x9ymkf
Cumhuriyeto islami
0
34758
557867
327112
2026-10-03T15:18:53Z
Maviulke
34834
557867
wikitext
text/x-wiki
[[Dosya:Islamic republics.png|thumb|right|300px|Cumurêtê İslami]]
'''Cumhurêtê İslami''' yew sistemê idareyo. Dewletanê [[İran]], [[Pakıstan]], [[Efğanıstan]] u [[Moritanya]] de sistemê idarey cumhuriyeto islamiyo. Dınya de raveri [[Pakıstan]] serra [[1956]] de biya yew cumhuriyeto islami. Bahdo serra 28 Tışrıno Verên de [[Moritanya]] bya,[[1979]] de İran biya jew cumhuriyeto islami. Tewr pey [[Efğanıstan]] serra 2001yıne de dewrê Talibani de cumhuriyeto islami biya. Cumhuriyeto islami de qanuno esasi [[Şeriet|şeriet]]o. [[Şeriet]] de hoseriya merduman u merduman miyande ekualite (equality) zaf kemiyo. A ri ra dewletê ke sistemê cı cumhuriyeto islamiyo, ê rêza hoseriya merduman de tewr peyên rêze derê.
{{Cumhuriyetê İslami}}
[[Kategoriye:İslam]]
rne4c3wxhau2dwo669so6f5bmso24lp
Homa merdo
0
44324
557880
327791
2026-10-03T15:28:35Z
Maviulke
34834
557880
wikitext
text/x-wiki
'''Homa merdo''' (nameo oricinal: "Gott ist tot") ya zi '''Homa Merdeyo''', '''Mergê Homa''' jew vateyo (qıseyo) filozofê [[Alman]] [[Friedrich Nietzsche]]yo u eno vate zaf mıxlelif cay de nusiyao. Eno vate raveri serra 1882 de Şınasiya Şen de (Almanki: Die fröhlinche Wissenschaft) 108. (Çabay Newa), 125. (Gêc) u hirıne de 343. (Menay keyfê ma) de meydan veciyo. Kıtabê Nietzsche [[Ani vato Zerduşt]] de eno vate (qıse) zaf ca gêno u eno kıtabê Nietzsche ra peyni biyo deha namdar.
* [[Friedrich Nietzsche]] qandê eno vatey cı, kıtabê cı ''Gêc'' de vano ki:
'' [[Homa ]] merdo. Homa ra peyni yew merde mendo u mao ki ey (Homa) kışto. Çiyo ke Homa ra mendo, dur ra yeno. Ma senin do yewbinan teselli bıkero?, mao ki kıştoğê kıştoğano? Çiyo ke binê kardiyanê ma de gan groto/grewto, cı rê se biyo? çiyo tewr ziyage u gırdo ke cihan wayirê cı biyo: kam do eno goyni serê ma ra bestero? Kamci ou (aw) esta ki ma bıkera pur u pak? Kamci merasimo teselli, ma zorê kamci kayo ziyage (muqades) icatkerdışi de manıme? Piliya eno daway ma rê zaf gırd u pil niyo? Qandê eno rê ameyene gani/gerek ma Homa bıbo? '' <ref>http://www.jstor.org/discover/10.2307/2709291?uid=3739192&uid=2&uid=4&sid=21103992286111</ref>
==Referansi==
<references/>
{{Nietzsche}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:Felsefe]]
[[Kategoriye:Antiteizm]]
[[Kategoriye:Ateizm]]
[[Kategoriye:İfadeyê Almanki]]
[[Kategoriye:Friedrich Nietzsche]]
[[Kategoriye:Nihilizm]]
c0zh4ilquehnltyxj7ldttikaay2kq4
557923
557880
2026-10-03T19:34:57Z
Asmen
19
Vırnayışê hesabê 557880 ke terefê [[Karber:Maviulke|Maviulke]] ra peyser gêriyao
557923
wikitext
text/x-wiki
'''Homa merdo''' (nameo oricinal: "Gott ist tot") ya zi '''Homa Merdeyo''', '''Mergê Homa''' jew vateyo (qıseyo) filozofê [[Alman]] [[Friedrich Nietzsche]]yo u eno vate zaf mıxlelif cay de nusiyao. Eno vate raveri serra 1882 de Şınasiya Şen de (Almanki: Die fröhlinche Wissenschaft) 108. (Çabay Newa), 125. (Gêc) u hirıne de 343. (Menay keyfê ma) de meydan veciyo. Kıtabê Nietzsche [[Ani vato Zerduşt]] de eno vate (qıse) zaf ca gêno u eno kıtabê Nietzsche ra peyni biyo deha namdar.
* [[Friedrich Nietzsche]] qandê eno vatey cı, kıtabê cı ''Gêc'' de vano ki:
'' [[Homa ]] merdo. Homa ra peyni yew merde mendo u mao ki ey (Homa) kışto. Çiyo ke Homa ra mendo, dur ra yeno. Ma senin do yewbinan teselli bıkero?, mao ki kıştoğê kıştoğano? Çiyo ke binê kardiyanê ma de gan groto/grewto, cı rê se biyo? çiyo tewr ziyage u gırdo ke cihan wayirê cı biyo: kam do eno goyni serê ma ra bestero? Kamci ou (aw) esta ki ma bıkera pur u pak? Kamci merasimo teselli, ma zorê kamci kayo ziyage (muqades) icatkerdışi de manıme? Piliya eno daway ma rê zaf gırd u pil niyo? Qandê eno rê ameyene gani/gerek ma Homa bıbo? '' <ref>http://www.jstor.org/discover/10.2307/2709291?uid=3739192&uid=2&uid=4&sid=21103992286111</ref>
==Referansi==
<references/>
{{Nietzsche}}
[[Kategoriye:Felsefe]]
[[Kategoriye:Antiteizm]]
[[Kategoriye:Ateizm]]
[[Kategoriye:İfadeyê Almanki]]
[[Kategoriye:Friedrich Nietzsche]]
[[Kategoriye:Nihilizm]]
pvkpc2d1lwq3ewo7060fqpkx7rw6l8j
Çıçeyıni
0
44669
557901
418846
2026-10-03T17:51:15Z
Maviulke
34834
557901
wikitext
text/x-wiki
{{Databox }}
[[Dosya:קיבוץ בית אורן (78).JPG|resmoqıckek|Çıçeyıni]]
'''Çıçıyıni''' (be [[Latinki]]: ''mammalia'') alemê heywananê, êyê kê pa [[çıçe]] esto, inan rê vanê.
{{Kontrolê_otoriteyi}}
{{Taxonbar}}
[[Kategoriye:Çıçeyıni]]
j2rcbjdgrqfg8iyxuzb4m73f0kj8t6b
Mıriçıki
0
44708
557900
534943
2026-10-03T17:50:14Z
Maviulke
34834
557900
wikitext
text/x-wiki
{{Databox}}
'''Mıriçıki''' (be [[Latinki]]: ''Aves''), [[muwın]], [[perzaneyın]] u pê [[Hak]]ana zêde biyayen formê ganınano. Nezdi 10.000 tewriya [[Tetrapod]] zaf verni dero. Şema cı 5 santimetre ra hetana 2 metre ra zeder tewri estê. Mıriçıkan de [[hewnê zımıstani]] çıniyo (bê [[Caprimulgiformes]]). Mıriçıki payızi zıme ra şınê vera ekvatori u wesari zi ekvator ra şınê zıme u veroci.
[[Dosya:Bird_Diversity_2013.png|thumb]]
== Anatomiye ==
* [[Anatomiya Mıriçıkan]]
{{Taxonbar}}
[[Kategoriye:Mıriçıki]]
t2oe6tmbtx48g1d98nomuiv83lq8rua
Even-toed ungulate
0
44711
557967
327230
2026-10-04T11:16:22Z
EmausBot
2965
Berterefkerdena reynayışi [[Dı sımeyıni]] ra heta [[Dısımıni]] keno raşt
557967
wikitext
text/x-wiki
#HETENAYIŞ [[Dısımıni]]
6aeeexptqgy3fxzfnor6nrr2zfbnieb
Dısımıni
0
44870
557882
327232
2026-10-03T15:29:25Z
Maviulke
34834
557882
wikitext
text/x-wiki
{{Dora tewran
| name = Even-toed ungulates
| fossil_range = {{Fossil range|54|0}}
| image = Artiodactyla feet.png
| image_caption = Bones of right fore feet of existing Artiodactyla. From left to right: Pig (''[[Sus scrofa]]''), [[Red deer]] (Cervus elaphus), and [[Camel]] (Camelus bactrianus). U = [[ulna]], R = [[Radius (bone)|radius]], c = [[Cuneiform (anatomy)|cuneiform]], l = [[Lunar bone|lunar]], s = [[Scaphoid]], u = [[Unciform]], m = [[Magnum bone|Magnum]], td = [[Trapezoid bone|Trapezoid]]. In the Sheep and the Camel, the long compound bone, supporting the two main (or only) toes is the [[cannon bone]].
| image_width = 275px
| regnum = [[Animal]]ia
| phylum = [[Chordate|Chordata]]
| classis = [[Mammalia]]
| infraclassis = [[Eutheria]]
| superordo = [[Laurasiatheria]]
| superordo = [[Laurasiatheria]]
| ordo = '''Artiodactyla'''
| ordo_authority = [[Richard Owen|Owen]], 1848
| subdivision_ranks = Suborders
| subdivision =
* [[Tylopoda]]
* [[Suina]]
* [[Cetruminantia]]
}}
Heywanê ke [[Pa]]y cı dı leteyê inan rê vanê dı sımeyêni.
{{Taxonbar}}
[[Kategoriye:Heywani]]
odyt17mqq0jgfqbcr6s2dvjgprrmqt8
557918
557882
2026-10-03T19:25:16Z
Asmen
19
"sımeyin" niyo, "sımın"o. "pa" qıseyê do xoser niyo, "lınge" vanê
557918
wikitext
text/x-wiki
{{Dora tewran
| name = Even-toed ungulates
| fossil_range = {{Fossil range|54|0}}
| image = Artiodactyla feet.png
| image_caption = Bones of right fore feet of existing Artiodactyla. From left to right: Pig (''[[Sus scrofa]]''), [[Red deer]] (Cervus elaphus), and [[Camel]] (Camelus bactrianus). U = [[ulna]], R = [[Radius (bone)|radius]], c = [[Cuneiform (anatomy)|cuneiform]], l = [[Lunar bone|lunar]], s = [[Scaphoid]], u = [[Unciform]], m = [[Magnum bone|Magnum]], td = [[Trapezoid bone|Trapezoid]]. In the Sheep and the Camel, the long compound bone, supporting the two main (or only) toes is the [[cannon bone]].
| image_width = 275px
| regnum = [[Animal]]ia
| phylum = [[Chordate|Chordata]]
| classis = [[Mammalia]]
| infraclassis = [[Eutheria]]
| superordo = [[Laurasiatheria]]
| superordo = [[Laurasiatheria]]
| ordo = '''Artiodactyla'''
| ordo_authority = [[Richard Owen|Owen]], 1848
| subdivision_ranks = Suborders
| subdivision =
* [[Tylopoda]]
* [[Suina]]
* [[Cetruminantia]]
}}
Heywanê ke [[Pa|lıngê]]y cı dı leteyê, inan rê vanê dısımıni ya ci sımıkıni.
{{Taxonbar}}
[[Kategoriye:Heywani]]
5y7qx97hyg3rgv3dflyt0ts0telring
557919
557918
2026-10-03T19:25:45Z
Asmen
19
Asmen, pela [[Dı sımeyıni]] ra kırışt pela [[Dısımıni]]: Raştkerdış (gramer, imla ûçb.)
557918
wikitext
text/x-wiki
{{Dora tewran
| name = Even-toed ungulates
| fossil_range = {{Fossil range|54|0}}
| image = Artiodactyla feet.png
| image_caption = Bones of right fore feet of existing Artiodactyla. From left to right: Pig (''[[Sus scrofa]]''), [[Red deer]] (Cervus elaphus), and [[Camel]] (Camelus bactrianus). U = [[ulna]], R = [[Radius (bone)|radius]], c = [[Cuneiform (anatomy)|cuneiform]], l = [[Lunar bone|lunar]], s = [[Scaphoid]], u = [[Unciform]], m = [[Magnum bone|Magnum]], td = [[Trapezoid bone|Trapezoid]]. In the Sheep and the Camel, the long compound bone, supporting the two main (or only) toes is the [[cannon bone]].
| image_width = 275px
| regnum = [[Animal]]ia
| phylum = [[Chordate|Chordata]]
| classis = [[Mammalia]]
| infraclassis = [[Eutheria]]
| superordo = [[Laurasiatheria]]
| superordo = [[Laurasiatheria]]
| ordo = '''Artiodactyla'''
| ordo_authority = [[Richard Owen|Owen]], 1848
| subdivision_ranks = Suborders
| subdivision =
* [[Tylopoda]]
* [[Suina]]
* [[Cetruminantia]]
}}
Heywanê ke [[Pa|lıngê]]y cı dı leteyê, inan rê vanê dısımıni ya ci sımıkıni.
{{Taxonbar}}
[[Kategoriye:Heywani]]
5y7qx97hyg3rgv3dflyt0ts0telring
Teizmo agnostik
0
44915
557881
327695
2026-10-03T15:28:51Z
Maviulke
34834
557881
wikitext
text/x-wiki
'''Teizmo agnostik''' jew vinayışo felsefiyo ke [[Teizm|tezim]] u [[Agnostisizm|agnostisizm]] keno jew.<ref>http://books.google.com.tr/books?ei=0Xt_T5mMH8KUiQLrlq3HAw&id=FI7ZAAAAMAAJ&dq=atheism+the+case+against+god&q=agnostic+theist&redir_esc=y#search_anchor</ref> Jew teisto agnostik teyna jew [[Homa]] inam keno emma raştiya ya zi vıraniya no hareketi ho nızano, yani vano Homa esto vatene nışınasiyeno. Jew teisto agnostik şeno Homay cı sero [[Agnostisizm|agnostik]] bo.<ref>http://plato.stanford.edu/entries/epistemology/</ref>
==Referansi==
<references/>
{{Kontrolê_otoriteyi}}
[[Kategoriye:Agnostisizm]]
[[Kategoriye:Teizm]]
jr1cdycpk762ft4cdmfikzdsojldztq
557921
557881
2026-10-03T19:26:42Z
Asmen
19
Vırnayışê hesabê 557881 ke terefê [[Karber:Maviulke|Maviulke]] ra peyser gêriyao
557921
wikitext
text/x-wiki
'''Teizmo agnostik''' jew vinayışo felsefiyo ke [[Teizm|tezim]] u [[Agnostisizm|agnostisizm]] keno jew.<ref>http://books.google.com.tr/books?ei=0Xt_T5mMH8KUiQLrlq3HAw&id=FI7ZAAAAMAAJ&dq=atheism+the+case+against+god&q=agnostic+theist&redir_esc=y#search_anchor</ref> Jew teisto agnostik teyna jew [[Homa]] inam keno emma raştiya ya zi vıraniya no hareketi ho nızano, yani vano Homa esto vatene nışınasiyeno. Jew teisto agnostik şeno Homay cı sero [[Agnostisizm|agnostik]] bo.<ref>http://plato.stanford.edu/entries/epistemology/</ref>
==Referansi==
<references/>
[[Kategoriye:Agnostisizm]]
[[Kategoriye:Teizm]]
m3q10miie7hvdifej7rw08qo2n2oj73
Merdumo peyên
0
44954
557879
327799
2026-10-03T15:28:14Z
Maviulke
34834
557879
wikitext
text/x-wiki
'''Merdumo peyên''' ([[Almanki]]: '''der letzte Mensch''') jew terimo ke kıtabi [[Friedrich Nietzsche]] [[Anit vato Zerduşt]] de ca gêno. Merdumo peyên [[Sermerdum|sermerdum]]o u ğeyaliyo. Merdumo peyên cuwiyayış ra ğına gıroto, risk nıgêno, tenya xuzur u itimad wazıno.
==Sewbi==
{{Nietzsche}}
[[Kategoriye:Friedrich Nietzsche]]
pvq8qmp6og48xsg4z46v8c495pvgw0r
Toltek
0
44962
557878
327862
2026-10-03T15:27:25Z
Maviulke
34834
557878
wikitext
text/x-wiki
[[File:El Castillo Chitzen Itza.jpg|thumb|right|300px|Jew piramito ke domi Tolteki ra mendo]]
'''Toltek''' zuani inan de '''Wirrarika/Merdumi İlimi''' jew şar u sivilizasyono ke gorey şınasdarun (Antropolog) ra seserruni 9. - 12. miyan de [[Amerikay Veroci]] de biyo.
==Şari Tolteki kanca de vıraziya?==
Ewro ra hınzar serruni ra ver, erdi [[Meksika]]y veroci de şari Tolteki veciyi. [[Spritualizm]] kari Toltekuni seri biya. Suka Teotihuacan suka Toltekunia seri biya. Ewro ki Meksika u cayi Amerikay bini de Tolteki esti. Hata istıleyi Ewrupayıcun, Tolteki uca de cuwiyi. İstıley Ewropayıcun ra peyni suki Tolteki biyi xırabe. Ê xeyli mıxtelif cayun rê şiyi u beni letey zey: Wirrarika, Aztek u Maya. Tolteki suki inun ri piramiti vıraşti. Tolteki cênıki inuni ke ebe spritualizm ra gırey ho biya, inun rê ''cênıki ilimi'', camerdi ke bı spritualizm ra gırey ho biyo, cı inun rê ''camerdi ilmi'' vati. Kamo ki spritualizm musayo, cı ri '''Nagual''' vaciyao. İşğal u istıley Ewrupayıcun ra dıma, şari Tolteki ebe zor u quweti ra dini cı vurni u xıristiyano katolik biyê. Ewro zaf kemi Tolteki, qıtay Amerika de cuwini.
==Sivilizasyoni Tolteki==
Sivilizasyoni Tolteki jew sivilizasyono de kıhano u zaf pey rê şıno. Tebiet, heywani, resnayoği, [[Roc|roc]], aşme sivilizasyoni Tolteki de ziyageyi. Toltek ho jew parçey kainati vinıno. Tolteki de cênık u camerd cıra nêbeni. Zoni Tolteki de qandê vatey '''O/A''' tenya jew vate esto. Yani zey zoni ma, hem ''O'' hem ki ''A'' çıniyo. Çunkê gorey Toltekun ra her çi bicınsiyeti. Tolteki de [[Roc]] u [[Va]] camerd temsıl keni, [[Dınya]] u Ou (Aw) cênık temsıl keni. Sembol u figuri Toltekun '''Quetzalcoatl''' biyo u Quetzalcoatl jew mara ke muyi cı esta. No sembol hem zeman de qıtay [[Atlantis]]i ki temsıl keno. Tolteki de peyğember ya zi jew dino esasi niesto u gorey inun ra gerek inun rê zi çıniyo. Kamci merdumo/a ki merdumo/a biniyo/a ke niweşo/a, ey/ay keni weş, ey/ay rê '''Curandera''' (Weşkerdoğ) vaciyao.
==Sivilizasyoni Tolteki de terimi==
* '''Nagual''' = Musayoğ u Roşniye
* '''Tonal''' = Astare
* '''Mitote''' = Dumano ke [[Mezg|mezgê]] merduman de esto
==Bıvenên==
* [[Aztek]]
* [[Maya]]
* [[Atlantis]]
* [[Mu]]
* [[Spritualizm]]
{{Kontrolê_otoriteyi}}
[[Kategoriye:Amerika]]
of1qmi9vmgquz2n82bap3xbre7z1ggd
İgnostisizm
0
44997
557872
328299
2026-10-03T15:23:15Z
Maviulke
34834
557872
wikitext
text/x-wiki
'''İgnostisizm''' ya zi '''İgteizm''' jew vınayışo ke vano [[Homa]] u werênayışi estiya Homa de mena çıniya. İgnostisizm de [[Homa]] sero werênayene u qalikerdene vengo u menay cı çıniya. İgnostisizm jew vınayışo teolociko.
{{Kontrolê_otoriteyi}}
[[Kategoriye:Felsefe]]
[[Kategoriye:Homa]]
dhdsfzjvtzle1ytwep2t23de1ulndpt
Plajê Sarımsaklı
0
45011
557876
328059
2026-10-03T15:26:11Z
Maviulke
34834
557876
wikitext
text/x-wiki
[[File:Sarimsakli beach.jpg|thumb|Plajê sarımsaklı de merdumi]]
'''Plajê Sarımsaklı''' (be [[Tırki]]: ''Sarımsaklı Plajı'') jew plajo ke [[Tırkiya]] de suka [[Balıkesir]]i de [[Ayvalık]] de ca gêno. Cay cı merkez ra 8 km düro. Dergiya plaji 7 kmo u plaj se metre (100) herayo. Plaj de merkezi cakerdışi, tesisi vındışi, kafetaryay, restoranti u gazinoy esti.
[[Kategoriye:Plaji]]
[[Kategoriye:Coğrafya yê Balıkesiri]]
6a56skplygmfeeonzniacqrmfwnvzuk
Darüşşafaka
0
45076
557871
328319
2026-10-03T15:22:33Z
Maviulke
34834
557871
wikitext
text/x-wiki
[[Dosya:Darüssafaka.jpg|thumb|right|250px|Darüşşafaka]]
'''Darüşşafaka''' (be [[Usmanıcki]]: <font size="3">'''دارالشفاقه اعدادیسی'''</font>) yew organizasyono ke serra 1863 de suka [[Estanbol]]i de vıraziyo. Darüşşafaka organizasyono musnayışiyo ke pere nigêno. Qıci (doman) ke ma u pi cı vini kerdi u destegi cı çıniyo, Darüşşafaka inan ri desteg beni.<ref>http://www.darussafaka.k12.tr/tr/dacka/bizkimiz</ref> Qıci ke sınıfi poncın verıno, Darüşşafaka hata peyniya lisa ra inan ri yardım keni u musayışi inan ho sero gêno. Her serre imtihani beni u be eni imitahanan, qıci (domani) ke kewnê Darüşşafaka, belli beni. Serra 1955 ra hata ınka Darüşşafaka zıwanê [[İngılızki]] sero musnayış dano. Serra 1863 de be name "Cemiyet-i Tedrisiyye-i İslamiye" (جمییت تدرسیه اسلامیه) ra [[Kapalıçarşı]] de vıraziyao. Bado cay cı vurniyao u ame [[Fatih]]. 1873 de pêro fealiyet verayo.
==Referansi==
<references/>
[[Kategoriye:Organizasyoni]]
[[Kategoriye:Xızmeto sosyal]]
[[Kategoriye:Organizasyonê ke 1973 de vıraziyê]]
s3sxmk2bf3ju3bl277w8ovdmlwsluyo
Mehter
0
45094
557870
328427
2026-10-03T15:21:21Z
Maviulke
34834
557870
wikitext
text/x-wiki
[[File:Mehterhane.jpg|right|350px|thumb|Mehterê Usmanıcan]]
'''Mehter''', [[İmperatoriya Usmanıcan]] de jew [[Band|bando]] eskeriyo ke tarixi xo zaf kıhano. Vatey mehteri zuanê [[Farski]] rao. Zuanê [[Farski]] de mehter yeno mena ''en gırd''. Verê [[İslam]]i de mehter be name bini ra est bi la dıma [[İslam]]i ra eno band vurniyao u bı mehter. Mehteri Usmanıcan de zurna, boru, kurrenay, kös, davul, neqqare, zil, çevgan biyi. Tarixi vıraziyayışi mehteri nışınasiyeno emma qabul beno ki seserra 14ıne de dewri [[Murad I]]i de vıraziyao. [[Hacı Bektaş Veli]] pilê mehterano u pilê [[Yeniçeri|yeniçeriyano]]. Mehter biyo dı letey: tabi-u Alem u mehteri esnafan. Serra 1826 be fermani [[Mahmud II]] ra mehter u yeniçeri peyni diyi u erdi [[İmperatoriya Usmanıcan]] de çiyê [[Bektaşi]]yan [[İllegal|illegal]] biyê. Dıma eno tarixi mehter hêdi hêdi biyo vini. Mehter serra 1914ıne de be [[İsmail Enver]]i ra be name ''mehter-i hakaniyye'' ra oncia vıraziyao.
== Bestekari ==
[[File:Mehter march.jpg|right|350px|thumb|Jew mehtero modern]]
=== Seserra 16. ===
* Nefirî Behram
* Emir-i Hac
* Hasan Can
* II. Gazi Giray
* Şah kulu
*Mehmet Paşa
=== Seserra 17. ===
[[File:Mehter boru.jpg|thumb|Mehteri aver şıni]]
* Zurnazen Edirneli daî Ahmed Çelebi
* Zurnazenbaşı İbrahim Ağa
* Hammalî
* Çenkî İbrahim Ağa
* Edirneli Mehmed Çelebi
* Eyyubî Mehmed Çelebi
* Derviş Mehmed Çelebi
* Solakzade Mehmed Hemdemî
* Acemiler (lacê ecemi)
=== Seserra 18. ===
* Hızır Ağa
* Müstakim Ağa
* Mehterbaşı Ağa (name ho nışınasiyeno)
* Şah Murad "Sultan IV. Murad"
* Kemanî Hızır Ağa
{{Kontrolê_otoriteyi}}
{{İmperatoriya Usmanıcan}}
[[Kategoriye:İmperatoriya Usmanıcan]]
[[Kategoriye:Marşi]]
[[Kategoriye:Muzikê Usmanıcan]]
4mj586en8bfgoeklapmkqbjz28ixs9t
Kapital
0
45163
557868
328641
2026-10-03T15:20:00Z
Maviulke
34834
557868
wikitext
text/x-wiki
'''Kapital''' [[Ekonomiye|ekonomiye]] de name aletanê serba/semedê jew çi vıraştene gureyeni. [[Makine]], fabrika kapitalê, kapital namê aletê fizikiyo. Kapitalo [[Ekonomiye|ekonomik]] u kapitalê finansi jewbinan ra cıraya. Finas de kapital jew mali sero heqê mulkiyetiya. Bonoyo ke şeno pere bo, senedê hisse u çiyê binani kapitali qabul beni.
{{Ekonomiye}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:Ekonomiye]]
hg6hppe4r86y233jjxiql4cxmp2gui5
Parşomanê Oramani
0
45183
557869
328704
2026-10-03T15:20:42Z
Maviulke
34834
557869
wikitext
text/x-wiki
'''Parşomanê Oramani''' namê hiri parşomanano ke serra 1909 de [[İran]] de mınqıta [[Hewraman|Oraman]]i de veciyi. Nê parşomani [[Teng-i Ver]], [[Kuh-e Salan]] u [[Shahr Oraman]] ra veciyi. Dıma veciyayışi ra nê parşomani terefê jew dewıci ra roşiyayi u serra 1913 de uca ra ame [[Londra]]. Verdey dokumanan verê İsay serrê 87/88 u dıma İsay serra 30i miyan deri. Zonê parşomanan, dı parşomani be zonê [[Yunanki]] nusiyayi u jew parşoman zi zonê [[Partki]]<ref>http://www.iranicaonline.org/articles/avroman-documents-three-parchments-found-in-a-cave-in-the-kuh-e-salan-near-ar-e-owraman-see-avroman-and-brought-in-191</ref> ra nusiyayi. Parşomanan de qıralê [[Ermenıstan]]i Tigran II sero, keynek u ceniyê ey sero nuştey esti. Filolog Ellis H. Minns zonê parşomanan diyo u zonê çarnao İngılızki ra, dıma qazetey Journal of Hellenic Studiesi de çap kerdo.<ref>https://en.wikipedia.org/wiki/Parchments_of_Awraman#cite_note-SOAS-1</ref><ref>http://www.jstor.org/discover/10.2307/624881?uid=3739192&uid=2&uid=4&sid=21105154149733</ref>
==Referansi==
<references/>
{{İran}}
[[Kategoriye:İran]]
okaxlpu70pv8i0m406lov684sp78kyr
Şablon:Kontrolê otoriteyi
10
47517
557908
557671
2026-10-03T18:02:17Z
Maviulke
34834
557908
wikitext
text/x-wiki
{{Navbox
|title = Kontrolê otoriteyi
|titlestyle = background:goldenrod;color:black;border:1px solid blue;
|list1 = {{#invoke:Authority control|authorityControl}}
}}
ivea6b7d46rxafzck722by9gcddmlc9
557909
557908
2026-10-03T18:09:17Z
Maviulke
34834
557909
wikitext
text/x-wiki
{{Navbox
|title = Kontrolê otoriteyi
|navbar=off
|titlestyle = background:goldenrod;color:black;border:1px solid blue;
|list1 = {{#invoke:Authority control|authorityControl}}
}}
gsi5633jm5j5nejvpjmxyd9mrhhi8fa
557916
557909
2026-10-03T18:24:10Z
Maviulke
34834
557916
wikitext
text/x-wiki
{{Navbox
|title = Kontrolê otoriteyi
|navbar=plain
|titlestyle = background:goldenrod;color:black;border:1px solid blue;
|list1 = {{#invoke:Authority control|authorityControl}}
}}
sd205vh5gsxwqxq1qrwnzq0g2b2oe9j
557917
557916
2026-10-03T18:24:50Z
Maviulke
34834
557917
wikitext
text/x-wiki
{{#invoke:Authority control|authorityControl}}
jjl8ao5e5w0a9uwjyyz9inth9k2abrm
Çehar payıni
0
49158
557903
473198
2026-10-03T17:53:44Z
Maviulke
34834
557903
wikitext
text/x-wiki
{{Databox}}
'''Çehar payıni''' ([[Latinki]]: ''Tetrapoda'') hometa heywana miyan de, tewrê ke [[Cıwiyena awe|cıwiyena awe]] ra vêrenê era [[Cıwiyena erdi|cıwiyena erdi]], ê heywanan rê vaciyeno.
{Taxonbar}}
[[Kategoriye:Çehar payıni]]
5vyhoi0rhyjp228tkiul5hejv05d355
557904
557903
2026-10-03T17:53:58Z
Maviulke
34834
557904
wikitext
text/x-wiki
{{Databox}}
'''Çehar payıni''' ([[Latinki]]: ''Tetrapoda'') hometa heywana miyan de, tewrê ke [[Cıwiyena awe|cıwiyena awe]] ra vêrenê era [[Cıwiyena erdi|cıwiyena erdi]], ê heywanan rê vaciyeno.
{{Taxonbar}}
[[Kategoriye:Çehar payıni]]
5hy25l6vwnqt13351p5h0t82nuxudz1
Portal:Kanada
100
57065
557927
546829
2026-10-04T08:23:18Z
Maviulke
34834
557927
wikitext
text/x-wiki
{{Portalbox1
|reng1 = black
|reng2 = gold
|reng3 = khaki
|reng4 = red
|name1 = Nuşte
|zerrek1 = Nuşte
|name2 = Vênayış
|zerrek2 = Vênayış
|name3 = Fotraf
|zerrek3 = Fotraf
|name4 = Kategoriy
|zerrek4 = Kategoriy
|name5 = Eleqeyın
|zerrek5 = Eleqeyın
}}
[[Kategoriye:Portali]]
[[Kategoriye:Portalê coğrafya]]
6czs4kuqew0pa3xw2ssr5iomw4q7fbu
Fahriye Evcen
0
62013
557924
518210
2026-10-04T00:43:12Z
InternetArchiveBot
21954
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.6
557924
wikitext
text/x-wiki
{{Merdumi}}
'''Fahriye Evcen''' (b. 4 Heziran 1986, [[Solingen]]), [[kayker]]a [[Tırk]]a. Pê roldê xo [[Film|film]]ê [[têlevizyon]]i ''[[Yaprak Dökümü]]'' Necla biya namdare.
A kışta [[maye|mae]] ra Çerkesa, kışta [[pi]]y ra zi [[Kavala]] ra goç kerdo.<ref>{{Cite news | url = http://www.hurriyet.com.tr/guzelligin-yaninda-zekan-da-varsa-hicbir-sey-sana-kulfet-olmaz-21475644 | başlık = Güzelliğin yanında zekan da varsa hiçbir şey sana külfet olmaz | yayıncı = | arşivurl = http://web.archive.org/web/20161028060718/http://www.hurriyet.com.tr/guzelligin-yaninda-zekan-da-varsa-hicbir-sey-sana-kulfet-olmaz-21475644 | arşivtarihi = 28 Ekim 2016}}</ref> A [[Solingen]] dı marda xo ra ameya dınya. Key kı biya qıteke, ê keydê xo [[Almanya]] dı weşiya xo ramıta. Serra hewtıne dı Neo-Naziyan adır cı da keyey inan, coka roşniya keyey xo paday.<ref>{{Cite news | url = http://www.takvim.com.tr/Guncel/2013/04/09/basrolde-nazi | başlık = ''Başrolde Nazi'' | yayıncı = Takvim | tarih =9 Nisan 2013| arşivurl = http://web.archive.org/web/20160504084803/http://www.takvim.com.tr/Guncel/2013/04/09/basrolde-nazi | arşivtarihi = 4 Mayıs 2016}}</ref><ref>{{Cite news | url = http://www.ankarahaber.com/haber/Almanya-Fahriye-Evcen-i-de-yaktı/133599 | başlık = Almanya, Fahriye Evcen'i de yaktı | yayıncı = Ankara Haber | tarih = 9 Nisan 2013 | arşivurl = http://web.archive.org/web/20160304212429/http://www.ankarahaber.com/haber/Almanya-Fahriye-Evcen-i-de-yakt%C4%B1/133599 | arşivtarihi = 4 Mart 2016 | title = Archive copy | access-date = 2019-09-21 | archivedate = 2013-12-01 | archiveurl = https://web.archive.org/web/20131201023924/http://www.ankarahaber.com/haber/Almanya-Fahriye-Evcen-i-de-yakt%C4%B1/133599}}</ref><ref>{{Cite news | url = http://www.sinemalar.com/haber/561/fahriye-evcen-ozel-roportaji | başlık = ''Fahriye Evcen Özel Röportajı'' | yayıncı = sinemalar.com | tip = Röportaj | ad = Serkan | soyadı = Tavşanoğlu | arşivurl = http://web.archive.org/web/20160305033340/http://www.sinemalar.com/haber/561/Fahriye-Evcen-Ozel-Roportaji | arşivtarihi = 5 Mart 2016}}</ref> Key kı a ameya [[Tırkiya]] tatil bıkero, şiya programê [[Oya Aydoğan]]i u biya meyman. Aydoğani, Evcen şınasnê produktur İbrahim Mertoğlu. <ref>{{Cite news | url = http://www.hurriyet.com.tr/kelebek/paparazzi/29979756.asp | başlık = Ünlüler nasıl keşfedildi? | tarih = 4 Eylül 2015 | yayıncı = [[Hürriyet (gazete)|Hürriyet]] | erişimtarihi = 8 Eylül 2015 | arşivurl = http://web.archive.org/web/20150927142818/http://www.hurriyet.com.tr/kelebek/paparazzi/29979756.asp | arşivtarihi = 27 Eylül 2015 | archiveurl = https://web.archive.org/web/20150927142818/http://www.hurriyet.com.tr/kelebek/paparazzi/29979756.asp | archivedate = 2015-09-27 | title = Archive copy | access-date = 2019-09-21}}</ref> Hıni biya namdare.
== Filmografiya aye ==
=== Sinema û filmi ===
{| border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 90%;"
! colspan="4" style="background: LightSteelBlue;" |Film
|- align="center" bgcolor="#cccccc"
|'''Serre'''
|'''Name'''
|'''Roli'''
|'''Noti'''
|-
|2007
|''[[Cennet]]''
|Kız
|Rolo serên
|-
|2008
|''[[Aşk Tutulması]]''
|Pınar
|Rolo serên
|-
|2009
|''[[Alvin ve Sincaplar 2]]''
| -
|Tırki veng da
|-
|2010
|''[[Takiye: Allah Yolunda]]''
|Sevde Aksu
|Rolo serên
|-
|2011
|''[[Sinyora Enrica ile İtalyan Olmak]]''
|Genç Sinyora Enrica
|Rolo serên
|-
|2012
|''[[Evim Sensin]]''
|Leyla
|Rolo serên
|-
|2015
|''[[Aşk Sana Benzer]]''
|Deniz/Defne
|Rolo serên
|-
|2017
|[[Sonsuz Aşk]]
|Zeynep
|Rolo serên<ref>http://www.sinematurk.com/film/66201-sonsuz-ask/</ref>
|}
=== Filmê têlevizyoni ===
{| border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 90%;"
! colspan="4" style="background: LightSteelBlue;" |Têlevizyon
|- align="center" bgcolor="#cccccc"
|'''Serre'''
|'''Name'''
|'''Roli'''
|'''Noti'''
|-
|2005
|''[[Asla Unutma]]''
|Pınar
|Karaktera kışte
|-
|2006
|''Hasret''
|Songül
|Rolo serên
|-
|2006-2010
|''[[Yaprak Dökümü]]''
|Necla Tekin Aydinoğlu
|Rolo serên
|-
|2011
|''[[Yalancı Bahar]]''
|Zeynep Karaman
|Rolo serên
|-
|2012
|''[[Veda]]''
|Mehpare
|Rolo serên
|-
|2013-2014
|''[[Çalıkuşu]]''
|Feride
|Rolo serên
|-
|2014
|''[[Kurt Seyit u Şura|Kurt Seyit u Şura]]''
|Murka/Mürvet
|Rolo serên
|-
|2017
|Ölene Kadar
|Selvi/Vildan
|Rolo serên
|}
== Referansi ==
{{Reflist}}
[[Kategoriye:Kaykerê Tırki]]
[[Kategoriye:Çerkesi]]
[[Kategoriye:Şarê Almanya]]
[[Kategoriye:Şarê Solingeni]]
2rzg89irz9sbankvxb7yipt5zawh4jg
Şablon:Taxonbar
10
65781
557893
408012
2026-10-03T17:27:12Z
Maviulke
34834
557893
wikitext
text/x-wiki
{{Button|{{#invoke:Taxonbar|authorityControlTaxon}}}}<noinclude>{{Documentation}}</noinclude>
3x3dunqppuahmde46k3dj46a0671o2z
557894
557893
2026-10-03T17:28:29Z
Maviulke
34834
557894
wikitext
text/x-wiki
{{#invoke:Taxonbar|authorityControlTaxon}}<noinclude>{{Documentation}}</noinclude>
f1texyp8mx8wr0b6mrnk9jtz859pne9
Modul:Taxonbar
828
65782
557895
547423
2026-10-03T17:38:05Z
Maviulke
34834
557895
Scribunto
text/plain
require('strict')
local conf = require( 'Module:Taxonbar/conf' ) --configuration module
local TaxonItalics = require( 'Module:TaxonItalics' ) --use a function from Module:TaxonItalics to italicize a taxon name
--[[==========================================================================]]
--[[ Local functions ]]
--[[==========================================================================]]
local function isNilOrEmpty( thing )
if thing == nil or thing == '' then
return true
end
return nil
end
local function getIdFromWikidata( item, property )
local id = nil
if property == 'PWikispecies:$1' then
local siteLinks = item.sitelinks
if siteLinks then
local speciesWiki = item.sitelinks.specieswiki
if speciesWiki then
id = speciesWiki.title
end
end
return id
elseif item.claims[property] == nil then
return id
end
for _, statement in pairs( item.claims[property] ) do
if statement.mainsnak.datavalue then
id = statement.mainsnak.datavalue.value
break
end
end
return id
end
local function getLink( property, val )
local link, returnVal = '', {}
returnVal.isError = false
if mw.ustring.find( val, '//' ) then
link = val
else
if type(property) == 'number' and property > 0 then
local entityObject = mw.wikibase.getEntity('P'..property)
local dataType
if entityObject then dataType = entityObject.datatype
else returnVal.isError = true end
if dataType == 'external-id' then
local formatterURL = nil
if property == 3746 or --Wildflowers of Israel
property == 3795 or --Flora of Israel Online
property == 5397 --Tierstimmenarchiv
then
formatterURL = entityObject:getBestStatements('P1630')[2] --use 2nd formatterURL for English version
end
if formatterURL == nil then formatterURL = entityObject:getBestStatements('P1630')[1] end --default to [1]
if formatterURL then
if formatterURL.mainsnak.datavalue and formatterURL.mainsnak.datavalue.value then --nil check for ABA
link = formatterURL.mainsnak.datavalue.value
end
end
elseif dataType == 'url' then
local subjectItem = entityObject:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
if officialWebsite then link = officialWebsite.mainsnak.datavalue.value end
end
elseif dataType == 'string' then
local formatterURL = entityObject:getBestStatements('P1630')[1]
if formatterURL then
link = formatterURL.mainsnak.datavalue.value
else
local subjectItem = entityObject:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
if officialWebsite then link = officialWebsite.mainsnak.datavalue.value end
end
end
else
returnVal.isError = true
end
elseif type(property) == 'string' then
link = property
end
local valurl = val
if mw.ustring.find( link, 'antweb.org' ) then valurl = mw.ustring.gsub(valurl, ' ', '%%20') end
if type(property) == 'number' then
--doublecheck language for Wildflowers of Israel ID
if property == 3746 then link = mw.ustring.gsub(link, '/hebrew/', '/english/') end
--format spaces in PfaF binomials, e.g. "Elaeagnus x ebbingei"
if property == 4301 then valurl = mw.ustring.gsub(valurl, ' ', '+') end
--format spaces in FoAO2 binomials, e.g. "Scaevola basedowii"
if property == 6756 then valurl = mw.ustring.gsub(valurl, ' ', '+') end
end
valurl = mw.ustring.gsub(valurl,'%%','%%%%')
link = mw.ustring.gsub(link, '$1', valurl)
end
link = mw.ustring.gsub(link, '^[Hh][Tt][Tt][Pp]([Ss]?)://', 'http%1://') -- fix wikidata URL
val = mw.ustring.match(val, '([^=/]*)/?$') -- get display name from end of URL
if mw.ustring.find( link, '//' ) then
returnVal.text = '['..link..' '..mw.text.encode(mw.uri.decode(val, 'PATH'),'%[%]')..']'
elseif link == '' then
returnVal.text = val
else
returnVal.text = '<span class="external">[['..link..'|'..val..']]</span>'
end
return returnVal
end
local function createRow( id, label, rawValue, link, withUid )
if link then
local outStr = '<span style="white-space:nowrap;">' .. label .. ' <span'
if withUid then outStr = outStr..' class="uid"' end
return outStr..'>' .. link .. '</span></span>\n'
else
return '* ' .. mw.text.tag('span', {class='error'}, 'The identifier ' .. id .. ' ' .. rawValue .. ' is not valid.') .. '\n'
end
end
local function copyTable(inTable)
if type(inTable) ~= 'table' then return inTable end
local outTable = setmetatable({}, getmetatable(inTable))
for key, value in pairs (inTable) do outTable[copyTable(key)] = copyTable(value) end
return outTable
end
local p = {}
--[[==========================================================================]]
--[[ Main ]]
--[[==========================================================================]]
function p.authorityControlTaxon( frame )
local resolveEntity = require( 'Module:ResolveEntityId' )
local parentArgs = copyTable(frame:getParent().args)
local currentTitle = mw.title.getCurrentTitle()
local currentEntityId = mw.wikibase.getEntityIdForCurrentPage()
local stringArgs = false
local fromTitleCount, firstRow, rowCount = 1, 0, 0
local outString, errors = '', ''
local tFroms = {} --non-sequential table of unique froms
local iFroms = 0 --integer size of tFroms, b/c Lua
local categories = {
'[[Category:Taxonbars without from parameter]]',
'[[Category:Taxonbars desynced from Wikidata]]',
'', -- [3] placeholder for [[Category:Taxonbars using multiple manual Wikidata items]]
'', -- [4] placeholder for [[Category:Taxonbars with invalid from parameters]]
'', -- [5] placeholder for [[Category:Taxonbars using manual taxon IDs]]
'', -- [6] placeholder for [[Category:Taxonbar pages requiring a Wikidata item]]
'', -- [7] placeholder for [[Category:Taxonbars without primary Wikidata taxon IDs]]
'', -- [8] placeholder for [[Category:Taxonbars without secondary Wikidata taxon IDs]]
'', -- [9] placeholder for [[Category:Taxonbars with duplicate from parameters]]
'', --[10] placeholder for [[Category:Taxonbars with manual taxon IDs differing from Wikidata]]
'', --[11] placeholder for [[Category:Taxonbars with manual taxon IDs identical to Wikidata]]
'', --[12] placeholder for [[Category:Taxonbars on possible non-taxon pages]]
'', --[13] placeholder for [[Category:Taxonbars with automatically added basionyms]]
'', --[14] placeholder for [[Category:Taxonbars with automatically added original combinations]]
'', --[15] placeholder for [[Category:Taxonbars with automatically added monotypic genera]]
'', --[16] placeholder for [[Category:Taxonbars of monotypic species missing genera]]
'', --[17] placeholder for [[Category:Taxonbars with unknown parameters]]
'', --[18] placeholder for [[Category:Taxonbars with 20–24 taxon IDs]]
'', --[19] placeholder for [[Category:Taxonbars with 25–29 taxon IDs]]
'', --[20] placeholder for [[Category:Taxonbars with 30–34 taxon IDs]]
'', --[21] placeholder for [[Category:Taxonbars with 35–39 taxon IDs]]
'', --[22] placeholder for [[Category:Taxonbars with 40+ taxon IDs]]
}
local acceptableInstanceOf_Strict = {
['Q16521'] = 'taxon', --strict
['Q310890'] = 'monotypic taxon', --strict
['Q2568288'] = 'ichnotaxon', --strict
['Q23038290'] = 'fossil taxon', --strict
['Q47487597'] = 'monotypic fossil taxon', --strict
}
local acceptableInstanceOf_All = {
['Q16521'] = 'taxon', --strict
['Q310890'] = 'monotypic taxon', --strict
['Q2568288'] = 'ichnotaxon', --strict
['Q23038290'] = 'fossil taxon', --strict
['Q47487597'] = 'monotypic fossil taxon', --strict
['Q42621'] = 'hybrid', --lax
['Q235536'] = 'incertae sedis', --lax
['Q713623'] = 'clade', --lax
['Q848328'] = 'serotype', --lax
['Q857968'] = 'candidatus', --lax
['Q17487588'] = 'unavailable combination', --lax
}
--Assess the page's relationship with Wikidata
local currentItem = nil
if currentTitle.namespace == 10 then --i.e. Module:Taxonbar/sandbox, Template:Taxonbar/doc, etc.
if resolveEntity._id(parentArgs['from']) then
currentItem = mw.wikibase.getEntity(parentArgs['from'])
end
if currentItem == nil then
if resolveEntity._id(parentArgs['from1']) then
currentItem = mw.wikibase.getEntity(parentArgs['from1'])
end
end
elseif resolveEntity._id(currentEntityId) then
currentItem = mw.wikibase.getEntity(currentEntityId)
else --currentEntityId == nil/unresolvable
categories[6] = '[[Category:Taxonbar pages requiring a Wikidata item]]'
end
if currentItem then
categories[12] = '[[Category:Taxonbars on possible non-taxon pages]]' --unset if acceptable found
for _, instanceOfState in pairs ( currentItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_All[instanceOf] then
categories[12] = ''
break
end
end
end
--Cleanup args
for k, v in pairs( frame:getParent().args ) do
if type(k) == 'string' then
--make args case insensitive
local lowerk = mw.ustring.lower(k)
if isNilOrEmpty( parentArgs[lowerk] ) then
parentArgs[k] = nil
parentArgs[lowerk] = v
end
--remap abc to abc1
if mw.ustring.find(lowerk,'%d$') == nil then --if no number at end of param
if isNilOrEmpty( parentArgs[lowerk..'1'] ) then
parentArgs[lowerk] = nil
lowerk = lowerk..'1'
parentArgs[lowerk] = v
end
end
if v and v ~= '' then
--remap 'for' to 'title'
if mw.ustring.sub(lowerk,1,3) == 'for' then
local forTitle = mw.ustring.gsub(lowerk,'^for','title',1)
if isNilOrEmpty( parentArgs[forTitle] ) then
parentArgs[lowerk] = nil
lowerk = forTitle
parentArgs[lowerk] = v
end
end
--find highest from or title param
if mw.ustring.sub(lowerk,1,4) == 'from' then
local fromNumber = tonumber(mw.ustring.sub(lowerk,5,-1))
if fromNumber and fromNumber >= fromTitleCount then fromTitleCount = fromNumber end
--look for duplicate froms while we're here
if mw.ustring.find(v, '^Q%d') then
if tFroms[v] then
categories[9] = '[[Category:Taxonbars with duplicate from parameters]]'
tFroms[v] = tFroms[v] + 1
else
tFroms[v] = 1
iFroms = iFroms + 1
end
if iFroms == 2 then
categories[3] = '[[Category:Taxonbars using multiple manual Wikidata items]]'
end
end
elseif mw.ustring.sub(lowerk,1,5) == 'title' then
local titleNumber = tonumber(mw.ustring.sub(lowerk,4,-1))
if titleNumber and titleNumber >= fromTitleCount then fromTitleCount = titleNumber end
elseif mw.ustring.lower(v) ~= 'no' then
stringArgs = true
categories[5] = '[[Category:Taxonbars using manual taxon IDs]]'
end
end
end
end
--Check for unknown parameters
--create knowns list
local acceptableArgs = { from = true, } --master list of l/c acceptable args
for _, d in pairs( conf.databases ) do
if d[1] ~= 'Wikidata' then --made obsolete by from
acceptableArgs[mw.ustring.lower(d[1])] = true
end
end
for _, a in pairs( conf.aliases ) do
acceptableArgs[mw.ustring.lower(a[1])] = true
end
--create trimmed parents list
local baseParentArgs = {} --condensed list of l/c parent args w/o trailing #s
for k, v in pairs( parentArgs ) do
if type(k) == 'string' then --ignore unnamed params, which have keys of type 'number'
local lowerk = mw.ustring.lower(k)
local base = mw.ustring.gsub(lowerk, '[%d]*$', '')
baseParentArgs[base] = true
end
end
--compare lists and spit out unknowns
local unknownParams = {}
for k, v in pairs( baseParentArgs ) do
if acceptableArgs[k] == nil then
categories[17] = '[[Category:Taxonbars with unknown parameters|' .. k ..']]'
unknownParams[#unknownParams + 1] = k
end
end
--warn if unknown(s) present
if #unknownParams > 0 then
local plural = nil
local itthem = nil
if #unknownParams == 1 then
plural = ''
itthem = 'it'
else
plural = 's'
itthem = 'them'
end
if frame:preprocess( '{{REVISIONID}}' ) == '' then
errors = errors..'<div class="hatnote" style="color:red">'..
'<strong>Warning:</strong> unknown parameter'..plural..' <strong>'..table.concat(unknownParams, ', ')..'</strong>.<br />'..
'Please correct '..itthem..' or consider adding '..itthem..' to Wikidata.<br />'..
'This message is only shown in preview.</div>'
end
end
--Append basionym to arg list, if not already provided
if currentItem then
local currentBasState = currentItem:getBestStatements('P566')[1] --basionym
if currentBasState then
local basionymId = currentBasState.mainsnak.datavalue.value.id
if basionymId and resolveEntity._id(basionymId) and tFroms[basionymId] == nil then
--check that basionym is a strict instance of taxon
local basionymItem = mw.wikibase.getEntity(basionymId)
if basionymItem then
for _, instanceOfState in pairs ( basionymItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_Strict[instanceOf] then
--housekeeping
tFroms[basionymId] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append basionym & track
parentArgs['from'..fromTitleCount] = basionymId
categories[13] = '[[Category:Taxonbars with automatically added basionyms]]'
break
end end end end end end
--Append original combination to arg list, if not already provided
if currentItem then
local currentOCState = currentItem:getBestStatements('P1403')[1] --original combination
if currentOCState then
local orcoId = currentOCState.mainsnak.datavalue.value.id
if orcoId and resolveEntity._id(orcoId) and tFroms[orcoId] == nil then
--check that orco is a strict instance of taxon
local orcoItem = mw.wikibase.getEntity(orcoId)
if orcoItem then
for _, instanceOfState in pairs ( orcoItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_Strict[instanceOf] then
--housekeeping
tFroms[orcoId] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append orco & track
parentArgs['from'..fromTitleCount] = orcoId
categories[14] = '[[Category:Taxonbars with automatically added original combinations]]'
break
end end end end end end
--Append monotypic genus/species to arg list of monotypic species/genus, if not already provided
if currentItem then
for _, instanceOfState in pairs ( currentItem:getBestStatements('P31') ) do --instance of
local taxonRank = nil
local parentItem = nil
local parentTaxon = nil
local parentTaxonRank = nil
local parentMonoGenus = nil --holy grail/tbd
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if instanceOf and (instanceOf == 'Q310890' or instanceOf == 'Q47487597') then --monotypic/fossil taxon
local taxonRankState = currentItem:getBestStatements('P105')[1] --taxon rank
if taxonRankState then taxonRank = taxonRankState.mainsnak.datavalue.value.id end
if taxonRank and taxonRank == 'Q7432' then --species
--is monotypic species; add genus
local parentTaxonState = currentItem:getBestStatements('P171')[1] --parent taxon
if parentTaxonState then parentTaxon = parentTaxonState.mainsnak.datavalue.value.id end
--confirm parent taxon rank == genus & monotypic
if parentTaxon and resolveEntity._id(parentTaxon) then
parentItem = mw.wikibase.getEntity(parentTaxon)
if parentItem then
local parentTaxonRankState = parentItem:getBestStatements('P105')[1] --taxon rank
if parentTaxonRankState then parentTaxonRank = parentTaxonRankState.mainsnak.datavalue.value.id end
if parentTaxonRank and parentTaxonRank == 'Q34740' then --parent == genus
for _, parentInstanceOfState in pairs ( parentItem:getBestStatements('P31') ) do --instance of
local parentInstanceOf = parentInstanceOfState.mainsnak.datavalue.value.id
if parentInstanceOf and
(parentInstanceOf == 'Q310890' or parentInstanceOf == 'Q47487597') then --monotypic/fossil taxon
parentMonoGenus = parentTaxon --confirmed
break
end
end
if parentMonoGenus and tFroms[parentMonoGenus] == nil then
--housekeeping
tFroms[parentMonoGenus] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append monotypic genus & track
parentArgs['from'..fromTitleCount] = parentMonoGenus
categories[15] = '[[Category:Taxonbars with automatically added monotypic genera]]'
break
end
end
end
end
if parentMonoGenus == nil or tFroms[parentMonoGenus] == nil then
categories[16] = '[[Category:Taxonbars of monotypic species missing genera]]'
break
end
elseif taxonRank and taxonRank == 'Q34740' then --genus
--is monotypic genus; add species
--...
end
end
end
end --if currentItem
--Setup navbox
local navboxParams = {
name = 'Taxonbar',
bodyclass = 'hlist',
listclass = '',
groupstyle = 'text-align: left;',
}
for f = 1, fromTitleCount, 1
do
local elements, title = {}, nil
--cleanup parameters
if parentArgs['from'..f] == '' then parentArgs['from'..f] = nil end
if parentArgs['title'..f] == '' then parentArgs['title'..f] = nil end
--remap aliases
for _, a in pairs( conf.aliases ) do
local alias, name = mw.ustring.lower(a[1]), mw.ustring.lower(a[2])
if parentArgs[alias..f] and parentArgs[name..f] == nil then
parentArgs[name..f] = parentArgs[alias..f]
parentArgs[alias..f] = nil
end
end
--Fetch Wikidata item
local from = resolveEntity._id(parentArgs['from'..f])
local item = mw.wikibase.getEntity(from)
local label = nil
if type(item) == 'table' then
local statements = item:getBestStatements('P225')[1] --taxon name
if statements then
local datavalue = statements.mainsnak.datavalue
if datavalue then
label = datavalue.value
end
end
label = label or item:getLabel()
else
if parentArgs['from'..f] then
categories[1] = ''
categories[4] = '[[Category:Taxonbars with invalid from parameters]]'
errors = errors .. mw.text.tag('strong', {class='error'}, 'Error: "' ..
parentArgs['from'..f] .. '" is not a valid Wikidata entity ID.<br />')
end
end
if label and label ~= '' then
title = mw.title.new(label)
end
if title == nil and parentArgs['title'..f] then
title = mw.title.new(parentArgs['title'..f])
end
if title == nil and f == 1 then
title = currentTitle
end
if title then
if isNilOrEmpty( parentArgs['wikidata'..f] ) and
(title.namespace == 0) then
if parentArgs['from'..f] then
parentArgs['wikidata'..f] = parentArgs['from'..f]
elseif item then
parentArgs['wikidata'..f] = item.id
end
end
if title.namespace == 0 or stringArgs then --only in mainspace or if manual overrides exist
local sourceCount = 0
for _, params in pairs( conf.databases ) do
params[1] = mw.ustring.lower(params[1])
local propId = params[3]
--Wikidata fallback if requested
if (item and item.claims) and
(type(propId) == 'string' or (type(propId) == 'number' and propId > 0)) then
local wikidataId = getIdFromWikidata( item, 'P' .. propId )
local v = parentArgs[params[1]..f]
if wikidataId then
if isNilOrEmpty(v) then
parentArgs[params[1]..f] = wikidataId
else
if v and v ~= 'no' and v ~= wikidataId then
categories[10] = '[[Category:Taxonbars with manual taxon IDs differing from Wikidata]]'
elseif v and v == wikidataId then
categories[11] = '[[Category:Taxonbars with manual taxon IDs identical to Wikidata]]'
end
end
end
end
local val = parentArgs[params[1]..f]
if val and val ~= '' and mw.ustring.lower(val) ~= 'no' then
if type(propId) == 'number' then
if propId < 0 then propId = -propId end --allow link
if propId > 0 then --link
table.insert( elements, createRow( params[1], params[2]..':', val, getLink( propId, val ).text, true ) )
else --propId == 0; no link
table.insert( elements, createRow( params[1], params[2]..':', val, val, true ) )
end
else
table.insert( elements, createRow( params[1], params[2]..':', val, getLink( propId, val ).text, true ) )
end
if params[1] ~= 'wikidata' and params[1] ~= 'wikispecies' then
sourceCount = sourceCount + 1
end
end
end
if sourceCount >= 40 then categories[22] = '[[Category:Taxonbars with 40+ taxon IDs]]'
elseif sourceCount >= 35 then categories[21] = '[[Category:Taxonbars with 35–39 taxon IDs]]' --endashes
elseif sourceCount >= 30 then categories[20] = '[[Category:Taxonbars with 30–34 taxon IDs]]'
elseif sourceCount >= 25 then categories[19] = '[[Category:Taxonbars with 25–29 taxon IDs]]'
elseif sourceCount >= 20 then categories[18] = '[[Category:Taxonbars with 20–24 taxon IDs]]'
end
--Generate navbox title
if sourceCount > 0 then
rowCount = rowCount + 1
if firstRow == 0 then firstRow = f end
--set title from wikidata if it doesn't exist
if isNilOrEmpty( parentArgs['title'..f] ) then
parentArgs['noTitle'..f] = true
parentArgs['title'..f] = title.text
end
--if it exists now, set row heading to title
if not isNilOrEmpty( parentArgs['title'..f] ) then
navboxParams['group'..f] = TaxonItalics.italicizeTaxonName(parentArgs['title'..f], false)
else
navboxParams['group'..f] = ''
end
navboxParams['list'..f] = table.concat( elements )
elseif currentEntityId and (currentEntityId == parentArgs['from'..f] or fromTitleCount == 1) then
categories[7] = '[[Category:Taxonbars without primary Wikidata taxon IDs]]'
else
categories[8] = '[[Category:Taxonbars without secondary Wikidata taxon IDs]]'
end
--Categorize
if not isNilOrEmpty( parentArgs['from'..f] ) then
--blank "missing from" if 'from' exists
categories[1] = ''
--blank "desynced" if 'from' matches current page
if parentArgs['from'..f] == currentEntityId then categories[2] = '' end
end
--cannot be "desynced" if no 'from' params
if categories[1] ~= '' then categories[2] = '' end
end
end
end --for f = 1, fromTitleCount, 1
if rowCount > 0 then
local Navbox = require('Module:Navbox')
if rowCount > 1 then
--remove duplicates and move page title to top
local rowIDs = {}
for f = 1,fromTitleCount,1
do
if not isNilOrEmpty( parentArgs['title'..f] ) then
if rowIDs[parentArgs['wikidata'..f]] then --remove duplicate
navboxParams['group'..f] = nil
navboxParams['list'..f] = nil
else
rowIDs[parentArgs['wikidata'..f]] = true
if f > firstRow and (parentArgs['title'..f] == currentTitle.text or
parentArgs['wikidata'..f] == currentEntityId) then --move item linked to page to top
if navboxParams['group'..f] and
navboxParams['group'..f] ~= '' and
navboxParams['list'..f] and
navboxParams['list'..f] ~= '' then
local tempGroup, tempList = navboxParams['group'..f], navboxParams['list'..f]
navboxParams['group'..f], navboxParams['list'..f] = navboxParams['group'..firstRow], navboxParams['list'..firstRow]
navboxParams['group'..firstRow], navboxParams['list'..firstRow] = tempGroup, tempList
end
end
end
end
end
--adjust navbox for number of rows
navboxParams['title'] = '[[Help:Şınasnayışê taksoni|Şınasnayış]]'
if rowCount >= 5 then
navboxParams['navbar'] = 'plain'
else
navboxParams['state'] = 'on'
navboxParams['navbar'] = 'on'
end
elseif parentArgs['Title'..firstRow] then
navboxParams['group'..firstRow] = '[[Help:Şınasnayışê taksoni|Şınasnayış]]'
else
navboxParams['group'..firstRow] = '[[Help:Şınasnayışê taksoni|Şınasnayış]]<br />' .. navboxParams['group'..firstRow]
end
--return navbox
outString = Navbox._navbox(navboxParams)
end --if rowCount > 0
--Add categories
if string.sub(currentTitle.subpageText,1,9) == 'testcases' then parentArgs['demo'] = true end
if not isNilOrEmpty( parentArgs['demo'] ) then
outString = outString .. mw.text.nowiki(table.concat(categories)) .. '<br />'
elseif currentTitle.namespace == 0 then
outString = outString .. table.concat(categories)
end
return outString .. errors
end
return p
6mniznjkyciq4nkrvrs977x5qk8r2lp
557897
557895
2026-10-03T17:41:44Z
Maviulke
34834
557897
Scribunto
text/plain
require('strict')
local conf = require( 'Module:Taxonbar/conf' ) --configuration module
local TaxonItalics = require( 'Module:TaxonItalics' ) --use a function from Module:TaxonItalics to italicize a taxon name
--[[==========================================================================]]
--[[ Local functions ]]
--[[==========================================================================]]
local function isNilOrEmpty( thing )
if thing == nil or thing == '' then
return true
end
return nil
end
local function getIdFromWikidata( item, property )
local id = nil
if property == 'PWikispecies:$1' then
local siteLinks = item.sitelinks
if siteLinks then
local speciesWiki = item.sitelinks.specieswiki
if speciesWiki then
id = speciesWiki.title
end
end
return id
elseif item.claims[property] == nil then
return id
end
for _, statement in pairs( item.claims[property] ) do
if statement.mainsnak.datavalue then
id = statement.mainsnak.datavalue.value
break
end
end
return id
end
local function getLink( property, val )
local link, returnVal = '', {}
returnVal.isError = false
if mw.ustring.find( val, '//' ) then
link = val
else
if type(property) == 'number' and property > 0 then
local entityObject = mw.wikibase.getEntity('P'..property)
local dataType
if entityObject then dataType = entityObject.datatype
else returnVal.isError = true end
if dataType == 'external-id' then
local formatterURL = nil
if property == 3746 or --Wildflowers of Israel
property == 3795 or --Flora of Israel Online
property == 5397 --Tierstimmenarchiv
then
formatterURL = entityObject:getBestStatements('P1630')[2] --use 2nd formatterURL for English version
end
if formatterURL == nil then formatterURL = entityObject:getBestStatements('P1630')[1] end --default to [1]
if formatterURL then
if formatterURL.mainsnak.datavalue and formatterURL.mainsnak.datavalue.value then --nil check for ABA
link = formatterURL.mainsnak.datavalue.value
end
end
elseif dataType == 'url' then
local subjectItem = entityObject:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
if officialWebsite then link = officialWebsite.mainsnak.datavalue.value end
end
elseif dataType == 'string' then
local formatterURL = entityObject:getBestStatements('P1630')[1]
if formatterURL then
link = formatterURL.mainsnak.datavalue.value
else
local subjectItem = entityObject:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
if officialWebsite then link = officialWebsite.mainsnak.datavalue.value end
end
end
else
returnVal.isError = true
end
elseif type(property) == 'string' then
link = property
end
local valurl = val
if mw.ustring.find( link, 'antweb.org' ) then valurl = mw.ustring.gsub(valurl, ' ', '%%20') end
if type(property) == 'number' then
--doublecheck language for Wildflowers of Israel ID
if property == 3746 then link = mw.ustring.gsub(link, '/hebrew/', '/english/') end
--format spaces in PfaF binomials, e.g. "Elaeagnus x ebbingei"
if property == 4301 then valurl = mw.ustring.gsub(valurl, ' ', '+') end
--format spaces in FoAO2 binomials, e.g. "Scaevola basedowii"
if property == 6756 then valurl = mw.ustring.gsub(valurl, ' ', '+') end
end
valurl = mw.ustring.gsub(valurl,'%%','%%%%')
link = mw.ustring.gsub(link, '$1', valurl)
end
link = mw.ustring.gsub(link, '^[Hh][Tt][Tt][Pp]([Ss]?)://', 'http%1://') -- fix wikidata URL
val = mw.ustring.match(val, '([^=/]*)/?$') -- get display name from end of URL
if mw.ustring.find( link, '//' ) then
returnVal.text = '['..link..' '..mw.text.encode(mw.uri.decode(val, 'PATH'),'%[%]')..']'
elseif link == '' then
returnVal.text = val
else
returnVal.text = '<span class="external">[['..link..'|'..val..']]</span>'
end
return returnVal
end
local function createRow( id, label, rawValue, link, withUid )
if link then
local outStr = '<span style="white-space:nowrap;">' .. label .. ' <span'
if withUid then outStr = outStr..' class="uid"' end
return outStr..'>' .. link .. '</span></span>\n'
else
return '* ' .. mw.text.tag('span', {class='error'}, 'The identifier ' .. id .. ' ' .. rawValue .. ' is not valid.') .. '\n'
end
end
local function copyTable(inTable)
if type(inTable) ~= 'table' then return inTable end
local outTable = setmetatable({}, getmetatable(inTable))
for key, value in pairs (inTable) do outTable[copyTable(key)] = copyTable(value) end
return outTable
end
local p = {}
--[[==========================================================================]]
--[[ Main ]]
--[[==========================================================================]]
function p.authorityControlTaxon( frame )
local resolveEntity = require( 'Module:ResolveEntityId' )
local parentArgs = copyTable(frame:getParent().args)
local currentTitle = mw.title.getCurrentTitle()
local currentEntityId = mw.wikibase.getEntityIdForCurrentPage()
local stringArgs = false
local fromTitleCount, firstRow, rowCount = 1, 0, 0
local outString, errors = '', ''
local tFroms = {} --non-sequential table of unique froms
local iFroms = 0 --integer size of tFroms, b/c Lua
local categories = {
'[[Category:Taxonbars without from parameter]]',
'[[Category:Taxonbars desynced from Wikidata]]',
'', -- [3] placeholder for [[Category:Taxonbars using multiple manual Wikidata items]]
'', -- [4] placeholder for [[Category:Taxonbars with invalid from parameters]]
'', -- [5] placeholder for [[Category:Taxonbars using manual taxon IDs]]
'', -- [6] placeholder for [[Category:Taxonbar pages requiring a Wikidata item]]
'', -- [7] placeholder for [[Category:Taxonbars without primary Wikidata taxon IDs]]
'', -- [8] placeholder for [[Category:Taxonbars without secondary Wikidata taxon IDs]]
'', -- [9] placeholder for [[Category:Taxonbars with duplicate from parameters]]
'', --[10] placeholder for [[Category:Taxonbars with manual taxon IDs differing from Wikidata]]
'', --[11] placeholder for [[Category:Taxonbars with manual taxon IDs identical to Wikidata]]
'', --[12] placeholder for [[Category:Taxonbars on possible non-taxon pages]]
'', --[13] placeholder for [[Category:Taxonbars with automatically added basionyms]]
'', --[14] placeholder for [[Category:Taxonbars with automatically added original combinations]]
'', --[15] placeholder for [[Category:Taxonbars with automatically added monotypic genera]]
'', --[16] placeholder for [[Category:Taxonbars of monotypic species missing genera]]
'', --[17] placeholder for [[Category:Taxonbars with unknown parameters]]
'', --[18] placeholder for [[Category:Taxonbars with 20–24 taxon IDs]]
'', --[19] placeholder for [[Category:Taxonbars with 25–29 taxon IDs]]
'', --[20] placeholder for [[Category:Taxonbars with 30–34 taxon IDs]]
'', --[21] placeholder for [[Category:Taxonbars with 35–39 taxon IDs]]
'', --[22] placeholder for [[Category:Taxonbars with 40+ taxon IDs]]
}
local acceptableInstanceOf_Strict = {
['Q16521'] = 'taxon', --strict
['Q310890'] = 'monotypic taxon', --strict
['Q2568288'] = 'ichnotaxon', --strict
['Q23038290'] = 'fossil taxon', --strict
['Q47487597'] = 'monotypic fossil taxon', --strict
}
local acceptableInstanceOf_All = {
['Q16521'] = 'taxon', --strict
['Q310890'] = 'monotypic taxon', --strict
['Q2568288'] = 'ichnotaxon', --strict
['Q23038290'] = 'fossil taxon', --strict
['Q47487597'] = 'monotypic fossil taxon', --strict
['Q42621'] = 'hybrid', --lax
['Q235536'] = 'incertae sedis', --lax
['Q713623'] = 'clade', --lax
['Q848328'] = 'serotype', --lax
['Q857968'] = 'candidatus', --lax
['Q17487588'] = 'unavailable combination', --lax
}
--Assess the page's relationship with Wikidata
local currentItem = nil
if currentTitle.namespace == 10 then --i.e. Module:Taxonbar/sandbox, Template:Taxonbar/doc, etc.
if resolveEntity._id(parentArgs['from']) then
currentItem = mw.wikibase.getEntity(parentArgs['from'])
end
if currentItem == nil then
if resolveEntity._id(parentArgs['from1']) then
currentItem = mw.wikibase.getEntity(parentArgs['from1'])
end
end
elseif resolveEntity._id(currentEntityId) then
currentItem = mw.wikibase.getEntity(currentEntityId)
else --currentEntityId == nil/unresolvable
categories[6] = '[[Category:Taxonbar pages requiring a Wikidata item]]'
end
if currentItem then
categories[12] = '[[Category:Taxonbars on possible non-taxon pages]]' --unset if acceptable found
for _, instanceOfState in pairs ( currentItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_All[instanceOf] then
categories[12] = ''
break
end
end
end
--Cleanup args
for k, v in pairs( frame:getParent().args ) do
if type(k) == 'string' then
--make args case insensitive
local lowerk = mw.ustring.lower(k)
if isNilOrEmpty( parentArgs[lowerk] ) then
parentArgs[k] = nil
parentArgs[lowerk] = v
end
--remap abc to abc1
if mw.ustring.find(lowerk,'%d$') == nil then --if no number at end of param
if isNilOrEmpty( parentArgs[lowerk..'1'] ) then
parentArgs[lowerk] = nil
lowerk = lowerk..'1'
parentArgs[lowerk] = v
end
end
if v and v ~= '' then
--remap 'for' to 'title'
if mw.ustring.sub(lowerk,1,3) == 'for' then
local forTitle = mw.ustring.gsub(lowerk,'^for','title',1)
if isNilOrEmpty( parentArgs[forTitle] ) then
parentArgs[lowerk] = nil
lowerk = forTitle
parentArgs[lowerk] = v
end
end
--find highest from or title param
if mw.ustring.sub(lowerk,1,4) == 'from' then
local fromNumber = tonumber(mw.ustring.sub(lowerk,5,-1))
if fromNumber and fromNumber >= fromTitleCount then fromTitleCount = fromNumber end
--look for duplicate froms while we're here
if mw.ustring.find(v, '^Q%d') then
if tFroms[v] then
categories[9] = '[[Category:Taxonbars with duplicate from parameters]]'
tFroms[v] = tFroms[v] + 1
else
tFroms[v] = 1
iFroms = iFroms + 1
end
if iFroms == 2 then
categories[3] = '[[Category:Taxonbars using multiple manual Wikidata items]]'
end
end
elseif mw.ustring.sub(lowerk,1,5) == 'title' then
local titleNumber = tonumber(mw.ustring.sub(lowerk,4,-1))
if titleNumber and titleNumber >= fromTitleCount then fromTitleCount = titleNumber end
elseif mw.ustring.lower(v) ~= 'no' then
stringArgs = true
categories[5] = '[[Category:Taxonbars using manual taxon IDs]]'
end
end
end
end
--Check for unknown parameters
--create knowns list
local acceptableArgs = { from = true, } --master list of l/c acceptable args
for _, d in pairs( conf.databases ) do
if d[1] ~= 'Wikidata' then --made obsolete by from
acceptableArgs[mw.ustring.lower(d[1])] = true
end
end
for _, a in pairs( conf.aliases ) do
acceptableArgs[mw.ustring.lower(a[1])] = true
end
--create trimmed parents list
local baseParentArgs = {} --condensed list of l/c parent args w/o trailing #s
for k, v in pairs( parentArgs ) do
if type(k) == 'string' then --ignore unnamed params, which have keys of type 'number'
local lowerk = mw.ustring.lower(k)
local base = mw.ustring.gsub(lowerk, '[%d]*$', '')
baseParentArgs[base] = true
end
end
--compare lists and spit out unknowns
local unknownParams = {}
for k, v in pairs( baseParentArgs ) do
if acceptableArgs[k] == nil then
categories[17] = '[[Category:Taxonbars with unknown parameters|' .. k ..']]'
unknownParams[#unknownParams + 1] = k
end
end
--warn if unknown(s) present
if #unknownParams > 0 then
local plural = nil
local itthem = nil
if #unknownParams == 1 then
plural = ''
itthem = 'it'
else
plural = 's'
itthem = 'them'
end
if frame:preprocess( '{{REVISIONID}}' ) == '' then
errors = errors..'<div class="hatnote" style="color:red">'..
'<strong>Warning:</strong> unknown parameter'..plural..' <strong>'..table.concat(unknownParams, ', ')..'</strong>.<br />'..
'Please correct '..itthem..' or consider adding '..itthem..' to Wikidata.<br />'..
'This message is only shown in preview.</div>'
end
end
--Append basionym to arg list, if not already provided
if currentItem then
local currentBasState = currentItem:getBestStatements('P566')[1] --basionym
if currentBasState then
local basionymId = currentBasState.mainsnak.datavalue.value.id
if basionymId and resolveEntity._id(basionymId) and tFroms[basionymId] == nil then
--check that basionym is a strict instance of taxon
local basionymItem = mw.wikibase.getEntity(basionymId)
if basionymItem then
for _, instanceOfState in pairs ( basionymItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_Strict[instanceOf] then
--housekeeping
tFroms[basionymId] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append basionym & track
parentArgs['from'..fromTitleCount] = basionymId
categories[13] = '[[Category:Taxonbars with automatically added basionyms]]'
break
end end end end end end
--Append original combination to arg list, if not already provided
if currentItem then
local currentOCState = currentItem:getBestStatements('P1403')[1] --original combination
if currentOCState then
local orcoId = currentOCState.mainsnak.datavalue.value.id
if orcoId and resolveEntity._id(orcoId) and tFroms[orcoId] == nil then
--check that orco is a strict instance of taxon
local orcoItem = mw.wikibase.getEntity(orcoId)
if orcoItem then
for _, instanceOfState in pairs ( orcoItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_Strict[instanceOf] then
--housekeeping
tFroms[orcoId] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append orco & track
parentArgs['from'..fromTitleCount] = orcoId
categories[14] = '[[Category:Taxonbars with automatically added original combinations]]'
break
end end end end end end
--Append monotypic genus/species to arg list of monotypic species/genus, if not already provided
if currentItem then
for _, instanceOfState in pairs ( currentItem:getBestStatements('P31') ) do --instance of
local taxonRank = nil
local parentItem = nil
local parentTaxon = nil
local parentTaxonRank = nil
local parentMonoGenus = nil --holy grail/tbd
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if instanceOf and (instanceOf == 'Q310890' or instanceOf == 'Q47487597') then --monotypic/fossil taxon
local taxonRankState = currentItem:getBestStatements('P105')[1] --taxon rank
if taxonRankState then taxonRank = taxonRankState.mainsnak.datavalue.value.id end
if taxonRank and taxonRank == 'Q7432' then --species
--is monotypic species; add genus
local parentTaxonState = currentItem:getBestStatements('P171')[1] --parent taxon
if parentTaxonState then parentTaxon = parentTaxonState.mainsnak.datavalue.value.id end
--confirm parent taxon rank == genus & monotypic
if parentTaxon and resolveEntity._id(parentTaxon) then
parentItem = mw.wikibase.getEntity(parentTaxon)
if parentItem then
local parentTaxonRankState = parentItem:getBestStatements('P105')[1] --taxon rank
if parentTaxonRankState then parentTaxonRank = parentTaxonRankState.mainsnak.datavalue.value.id end
if parentTaxonRank and parentTaxonRank == 'Q34740' then --parent == genus
for _, parentInstanceOfState in pairs ( parentItem:getBestStatements('P31') ) do --instance of
local parentInstanceOf = parentInstanceOfState.mainsnak.datavalue.value.id
if parentInstanceOf and
(parentInstanceOf == 'Q310890' or parentInstanceOf == 'Q47487597') then --monotypic/fossil taxon
parentMonoGenus = parentTaxon --confirmed
break
end
end
if parentMonoGenus and tFroms[parentMonoGenus] == nil then
--housekeeping
tFroms[parentMonoGenus] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append monotypic genus & track
parentArgs['from'..fromTitleCount] = parentMonoGenus
categories[15] = '[[Category:Taxonbars with automatically added monotypic genera]]'
break
end
end
end
end
if parentMonoGenus == nil or tFroms[parentMonoGenus] == nil then
categories[16] = '[[Category:Taxonbars of monotypic species missing genera]]'
break
end
elseif taxonRank and taxonRank == 'Q34740' then --genus
--is monotypic genus; add species
--...
end
end
end
end --if currentItem
--Setup navbox
local navboxParams = {
name = 'Taxonbar',
bodyclass = 'hlist',
listclass = '',
groupstyle = 'text-align: left;',
}
for f = 1, fromTitleCount, 1
do
local elements, title = {}, nil
--cleanup parameters
if parentArgs['from'..f] == '' then parentArgs['from'..f] = nil end
if parentArgs['title'..f] == '' then parentArgs['title'..f] = nil end
--remap aliases
for _, a in pairs( conf.aliases ) do
local alias, name = mw.ustring.lower(a[1]), mw.ustring.lower(a[2])
if parentArgs[alias..f] and parentArgs[name..f] == nil then
parentArgs[name..f] = parentArgs[alias..f]
parentArgs[alias..f] = nil
end
end
--Fetch Wikidata item
local from = resolveEntity._id(parentArgs['from'..f])
local item = mw.wikibase.getEntity(from)
local label = nil
if type(item) == 'table' then
local statements = item:getBestStatements('P225')[1] --taxon name
if statements then
local datavalue = statements.mainsnak.datavalue
if datavalue then
label = datavalue.value
end
end
label = label or item:getLabel()
else
if parentArgs['from'..f] then
categories[1] = ''
categories[4] = '[[Category:Taxonbars with invalid from parameters]]'
errors = errors .. mw.text.tag('strong', {class='error'}, 'Error: "' ..
parentArgs['from'..f] .. '" is not a valid Wikidata entity ID.<br />')
end
end
if label and label ~= '' then
title = mw.title.new(label)
end
if title == nil and parentArgs['title'..f] then
title = mw.title.new(parentArgs['title'..f])
end
if title == nil and f == 1 then
title = currentTitle
end
if title then
if isNilOrEmpty( parentArgs['wikidata'..f] ) and
(title.namespace == 0) then
if parentArgs['from'..f] then
parentArgs['wikidata'..f] = parentArgs['from'..f]
elseif item then
parentArgs['wikidata'..f] = item.id
end
end
if title.namespace == 0 or stringArgs then --only in mainspace or if manual overrides exist
local sourceCount = 0
for _, params in pairs( conf.databases ) do
params[1] = mw.ustring.lower(params[1])
local propId = params[3]
--Wikidata fallback if requested
if (item and item.claims) and
(type(propId) == 'string' or (type(propId) == 'number' and propId > 0)) then
local wikidataId = getIdFromWikidata( item, 'P' .. propId )
local v = parentArgs[params[1]..f]
if wikidataId then
if isNilOrEmpty(v) then
parentArgs[params[1]..f] = wikidataId
else
if v and v ~= 'no' and v ~= wikidataId then
categories[10] = '[[Category:Taxonbars with manual taxon IDs differing from Wikidata]]'
elseif v and v == wikidataId then
categories[11] = '[[Category:Taxonbars with manual taxon IDs identical to Wikidata]]'
end
end
end
end
local val = parentArgs[params[1]..f]
if val and val ~= '' and mw.ustring.lower(val) ~= 'no' then
if type(propId) == 'number' then
if propId < 0 then propId = -propId end --allow link
if propId > 0 then --link
table.insert( elements, createRow( params[1], params[2]..':', val, getLink( propId, val ).text, true ) )
else --propId == 0; no link
table.insert( elements, createRow( params[1], params[2]..':', val, val, true ) )
end
else
table.insert( elements, createRow( params[1], params[2]..':', val, getLink( propId, val ).text, true ) )
end
if params[1] ~= 'wikidata' and params[1] ~= 'wikispecies' then
sourceCount = sourceCount + 1
end
end
end
if sourceCount >= 40 then categories[22] = '[[Category:Taxonbars with 40+ taxon IDs]]'
elseif sourceCount >= 35 then categories[21] = '[[Category:Taxonbars with 35–39 taxon IDs]]' --endashes
elseif sourceCount >= 30 then categories[20] = '[[Category:Taxonbars with 30–34 taxon IDs]]'
elseif sourceCount >= 25 then categories[19] = '[[Category:Taxonbars with 25–29 taxon IDs]]'
elseif sourceCount >= 20 then categories[18] = '[[Category:Taxonbars with 20–24 taxon IDs]]'
end
--Generate navbox title
if sourceCount > 0 then
rowCount = rowCount + 1
if firstRow == 0 then firstRow = f end
--set title from wikidata if it doesn't exist
if isNilOrEmpty( parentArgs['title'..f] ) then
parentArgs['noTitle'..f] = true
parentArgs['title'..f] = title.text
end
--if it exists now, set row heading to title
if not isNilOrEmpty( parentArgs['title'..f] ) then
navboxParams['group'..f] = TaxonItalics.italicizeTaxonName(parentArgs['title'..f], false)
else
navboxParams['group'..f] = ''
end
navboxParams['list'..f] = table.concat( elements )
elseif currentEntityId and (currentEntityId == parentArgs['from'..f] or fromTitleCount == 1) then
categories[7] = '[[Category:Taxonbars without primary Wikidata taxon IDs]]'
else
categories[8] = '[[Category:Taxonbars without secondary Wikidata taxon IDs]]'
end
--Categorize
if not isNilOrEmpty( parentArgs['from'..f] ) then
--blank "missing from" if 'from' exists
categories[1] = ''
--blank "desynced" if 'from' matches current page
if parentArgs['from'..f] == currentEntityId then categories[2] = '' end
end
--cannot be "desynced" if no 'from' params
if categories[1] ~= '' then categories[2] = '' end
end
end
end --for f = 1, fromTitleCount, 1
if rowCount > 0 then
local Navbox = require('Module:Navbox')
if rowCount > 1 then
--remove duplicates and move page title to top
local rowIDs = {}
for f = 1,fromTitleCount,1
do
if not isNilOrEmpty( parentArgs['title'..f] ) then
if rowIDs[parentArgs['wikidata'..f]] then --remove duplicate
navboxParams['group'..f] = nil
navboxParams['list'..f] = nil
else
rowIDs[parentArgs['wikidata'..f]] = true
if f > firstRow and (parentArgs['title'..f] == currentTitle.text or
parentArgs['wikidata'..f] == currentEntityId) then --move item linked to page to top
if navboxParams['group'..f] and
navboxParams['group'..f] ~= '' and
navboxParams['list'..f] and
navboxParams['list'..f] ~= '' then
local tempGroup, tempList = navboxParams['group'..f], navboxParams['list'..f]
navboxParams['group'..f], navboxParams['list'..f] = navboxParams['group'..firstRow], navboxParams['list'..firstRow]
navboxParams['group'..firstRow], navboxParams['list'..firstRow] = tempGroup, tempList
end
end
end
end
end
--adjust navbox for number of rows
navboxParams['title'] = '[[Help:Şınasnayışê taksoni|Şınasnayış]]'
if rowCount >= 5 then
navboxParams['navbar'] = 'plain'
else
navboxParams['state'] = 'off'
navboxParams['navbar'] = 'off'
end
elseif parentArgs['Title'..firstRow] then
navboxParams['above'..firstRow] = '[[Help:Şınasnayışê taksoni|Şınasnayış]]'
else
navboxParams['above'..firstRow] = '[[Help:Şınasnayışê taksoni|Şınasnayış]]<br />' .. navboxParams['group'..firstRow]
end
--return navbox
outString = Navbox._navbox(navboxParams)
end --if rowCount > 0
--Add categories
if string.sub(currentTitle.subpageText,1,9) == 'testcases' then parentArgs['demo'] = true end
if not isNilOrEmpty( parentArgs['demo'] ) then
outString = outString .. mw.text.nowiki(table.concat(categories)) .. '<br />'
elseif currentTitle.namespace == 0 then
outString = outString .. table.concat(categories)
end
return outString .. errors
end
return p
9ns6tsc51v02u4x0zhz3klglhh8vulo
557898
557897
2026-10-03T17:44:20Z
Maviulke
34834
557898
Scribunto
text/plain
require('strict')
local conf = require( 'Module:Taxonbar/conf' ) --configuration module
local TaxonItalics = require( 'Module:TaxonItalics' ) --use a function from Module:TaxonItalics to italicize a taxon name
--[[==========================================================================]]
--[[ Local functions ]]
--[[==========================================================================]]
local function isNilOrEmpty( thing )
if thing == nil or thing == '' then
return true
end
return nil
end
local function getIdFromWikidata( item, property )
local id = nil
if property == 'PWikispecies:$1' then
local siteLinks = item.sitelinks
if siteLinks then
local speciesWiki = item.sitelinks.specieswiki
if speciesWiki then
id = speciesWiki.title
end
end
return id
elseif item.claims[property] == nil then
return id
end
for _, statement in pairs( item.claims[property] ) do
if statement.mainsnak.datavalue then
id = statement.mainsnak.datavalue.value
break
end
end
return id
end
local function getLink( property, val )
local link, returnVal = '', {}
returnVal.isError = false
if mw.ustring.find( val, '//' ) then
link = val
else
if type(property) == 'number' and property > 0 then
local entityObject = mw.wikibase.getEntity('P'..property)
local dataType
if entityObject then dataType = entityObject.datatype
else returnVal.isError = true end
if dataType == 'external-id' then
local formatterURL = nil
if property == 3746 or --Wildflowers of Israel
property == 3795 or --Flora of Israel Online
property == 5397 --Tierstimmenarchiv
then
formatterURL = entityObject:getBestStatements('P1630')[2] --use 2nd formatterURL for English version
end
if formatterURL == nil then formatterURL = entityObject:getBestStatements('P1630')[1] end --default to [1]
if formatterURL then
if formatterURL.mainsnak.datavalue and formatterURL.mainsnak.datavalue.value then --nil check for ABA
link = formatterURL.mainsnak.datavalue.value
end
end
elseif dataType == 'url' then
local subjectItem = entityObject:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
if officialWebsite then link = officialWebsite.mainsnak.datavalue.value end
end
elseif dataType == 'string' then
local formatterURL = entityObject:getBestStatements('P1630')[1]
if formatterURL then
link = formatterURL.mainsnak.datavalue.value
else
local subjectItem = entityObject:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
if officialWebsite then link = officialWebsite.mainsnak.datavalue.value end
end
end
else
returnVal.isError = true
end
elseif type(property) == 'string' then
link = property
end
local valurl = val
if mw.ustring.find( link, 'antweb.org' ) then valurl = mw.ustring.gsub(valurl, ' ', '%%20') end
if type(property) == 'number' then
--doublecheck language for Wildflowers of Israel ID
if property == 3746 then link = mw.ustring.gsub(link, '/hebrew/', '/english/') end
--format spaces in PfaF binomials, e.g. "Elaeagnus x ebbingei"
if property == 4301 then valurl = mw.ustring.gsub(valurl, ' ', '+') end
--format spaces in FoAO2 binomials, e.g. "Scaevola basedowii"
if property == 6756 then valurl = mw.ustring.gsub(valurl, ' ', '+') end
end
valurl = mw.ustring.gsub(valurl,'%%','%%%%')
link = mw.ustring.gsub(link, '$1', valurl)
end
link = mw.ustring.gsub(link, '^[Hh][Tt][Tt][Pp]([Ss]?)://', 'http%1://') -- fix wikidata URL
val = mw.ustring.match(val, '([^=/]*)/?$') -- get display name from end of URL
if mw.ustring.find( link, '//' ) then
returnVal.text = '['..link..' '..mw.text.encode(mw.uri.decode(val, 'PATH'),'%[%]')..']'
elseif link == '' then
returnVal.text = val
else
returnVal.text = '<span class="external">[['..link..'|'..val..']]</span>'
end
return returnVal
end
local function createRow( id, label, rawValue, link, withUid )
if link then
local outStr = '<span style="white-space:nowrap;">' .. label .. ' <span'
if withUid then outStr = outStr..' class="uid"' end
return outStr..'>' .. link .. '</span></span>\n'
else
return '* ' .. mw.text.tag('span', {class='error'}, 'The identifier ' .. id .. ' ' .. rawValue .. ' is not valid.') .. '\n'
end
end
local function copyTable(inTable)
if type(inTable) ~= 'table' then return inTable end
local outTable = setmetatable({}, getmetatable(inTable))
for key, value in pairs (inTable) do outTable[copyTable(key)] = copyTable(value) end
return outTable
end
local p = {}
--[[==========================================================================]]
--[[ Main ]]
--[[==========================================================================]]
function p.authorityControlTaxon( frame )
local resolveEntity = require( 'Module:ResolveEntityId' )
local parentArgs = copyTable(frame:getParent().args)
local currentTitle = mw.title.getCurrentTitle()
local currentEntityId = mw.wikibase.getEntityIdForCurrentPage()
local stringArgs = false
local fromTitleCount, firstRow, rowCount = 1, 0, 0
local outString, errors = '', ''
local tFroms = {} --non-sequential table of unique froms
local iFroms = 0 --integer size of tFroms, b/c Lua
local categories = {
'[[Category:Taxonbars without from parameter]]',
'[[Category:Taxonbars desynced from Wikidata]]',
'', -- [3] placeholder for [[Category:Taxonbars using multiple manual Wikidata items]]
'', -- [4] placeholder for [[Category:Taxonbars with invalid from parameters]]
'', -- [5] placeholder for [[Category:Taxonbars using manual taxon IDs]]
'', -- [6] placeholder for [[Category:Taxonbar pages requiring a Wikidata item]]
'', -- [7] placeholder for [[Category:Taxonbars without primary Wikidata taxon IDs]]
'', -- [8] placeholder for [[Category:Taxonbars without secondary Wikidata taxon IDs]]
'', -- [9] placeholder for [[Category:Taxonbars with duplicate from parameters]]
'', --[10] placeholder for [[Category:Taxonbars with manual taxon IDs differing from Wikidata]]
'', --[11] placeholder for [[Category:Taxonbars with manual taxon IDs identical to Wikidata]]
'', --[12] placeholder for [[Category:Taxonbars on possible non-taxon pages]]
'', --[13] placeholder for [[Category:Taxonbars with automatically added basionyms]]
'', --[14] placeholder for [[Category:Taxonbars with automatically added original combinations]]
'', --[15] placeholder for [[Category:Taxonbars with automatically added monotypic genera]]
'', --[16] placeholder for [[Category:Taxonbars of monotypic species missing genera]]
'', --[17] placeholder for [[Category:Taxonbars with unknown parameters]]
'', --[18] placeholder for [[Category:Taxonbars with 20–24 taxon IDs]]
'', --[19] placeholder for [[Category:Taxonbars with 25–29 taxon IDs]]
'', --[20] placeholder for [[Category:Taxonbars with 30–34 taxon IDs]]
'', --[21] placeholder for [[Category:Taxonbars with 35–39 taxon IDs]]
'', --[22] placeholder for [[Category:Taxonbars with 40+ taxon IDs]]
}
local acceptableInstanceOf_Strict = {
['Q16521'] = 'taxon', --strict
['Q310890'] = 'monotypic taxon', --strict
['Q2568288'] = 'ichnotaxon', --strict
['Q23038290'] = 'fossil taxon', --strict
['Q47487597'] = 'monotypic fossil taxon', --strict
}
local acceptableInstanceOf_All = {
['Q16521'] = 'taxon', --strict
['Q310890'] = 'monotypic taxon', --strict
['Q2568288'] = 'ichnotaxon', --strict
['Q23038290'] = 'fossil taxon', --strict
['Q47487597'] = 'monotypic fossil taxon', --strict
['Q42621'] = 'hybrid', --lax
['Q235536'] = 'incertae sedis', --lax
['Q713623'] = 'clade', --lax
['Q848328'] = 'serotype', --lax
['Q857968'] = 'candidatus', --lax
['Q17487588'] = 'unavailable combination', --lax
}
--Assess the page's relationship with Wikidata
local currentItem = nil
if currentTitle.namespace == 10 then --i.e. Module:Taxonbar/sandbox, Template:Taxonbar/doc, etc.
if resolveEntity._id(parentArgs['from']) then
currentItem = mw.wikibase.getEntity(parentArgs['from'])
end
if currentItem == nil then
if resolveEntity._id(parentArgs['from1']) then
currentItem = mw.wikibase.getEntity(parentArgs['from1'])
end
end
elseif resolveEntity._id(currentEntityId) then
currentItem = mw.wikibase.getEntity(currentEntityId)
else --currentEntityId == nil/unresolvable
categories[6] = '[[Category:Taxonbar pages requiring a Wikidata item]]'
end
if currentItem then
categories[12] = '[[Category:Taxonbars on possible non-taxon pages]]' --unset if acceptable found
for _, instanceOfState in pairs ( currentItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_All[instanceOf] then
categories[12] = ''
break
end
end
end
--Cleanup args
for k, v in pairs( frame:getParent().args ) do
if type(k) == 'string' then
--make args case insensitive
local lowerk = mw.ustring.lower(k)
if isNilOrEmpty( parentArgs[lowerk] ) then
parentArgs[k] = nil
parentArgs[lowerk] = v
end
--remap abc to abc1
if mw.ustring.find(lowerk,'%d$') == nil then --if no number at end of param
if isNilOrEmpty( parentArgs[lowerk..'1'] ) then
parentArgs[lowerk] = nil
lowerk = lowerk..'1'
parentArgs[lowerk] = v
end
end
if v and v ~= '' then
--remap 'for' to 'title'
if mw.ustring.sub(lowerk,1,3) == 'for' then
local forTitle = mw.ustring.gsub(lowerk,'^for','title',1)
if isNilOrEmpty( parentArgs[forTitle] ) then
parentArgs[lowerk] = nil
lowerk = forTitle
parentArgs[lowerk] = v
end
end
--find highest from or title param
if mw.ustring.sub(lowerk,1,4) == 'from' then
local fromNumber = tonumber(mw.ustring.sub(lowerk,5,-1))
if fromNumber and fromNumber >= fromTitleCount then fromTitleCount = fromNumber end
--look for duplicate froms while we're here
if mw.ustring.find(v, '^Q%d') then
if tFroms[v] then
categories[9] = '[[Category:Taxonbars with duplicate from parameters]]'
tFroms[v] = tFroms[v] + 1
else
tFroms[v] = 1
iFroms = iFroms + 1
end
if iFroms == 2 then
categories[3] = '[[Category:Taxonbars using multiple manual Wikidata items]]'
end
end
elseif mw.ustring.sub(lowerk,1,5) == 'title' then
local titleNumber = tonumber(mw.ustring.sub(lowerk,4,-1))
if titleNumber and titleNumber >= fromTitleCount then fromTitleCount = titleNumber end
elseif mw.ustring.lower(v) ~= 'no' then
stringArgs = true
categories[5] = '[[Category:Taxonbars using manual taxon IDs]]'
end
end
end
end
--Check for unknown parameters
--create knowns list
local acceptableArgs = { from = true, } --master list of l/c acceptable args
for _, d in pairs( conf.databases ) do
if d[1] ~= 'Wikidata' then --made obsolete by from
acceptableArgs[mw.ustring.lower(d[1])] = true
end
end
for _, a in pairs( conf.aliases ) do
acceptableArgs[mw.ustring.lower(a[1])] = true
end
--create trimmed parents list
local baseParentArgs = {} --condensed list of l/c parent args w/o trailing #s
for k, v in pairs( parentArgs ) do
if type(k) == 'string' then --ignore unnamed params, which have keys of type 'number'
local lowerk = mw.ustring.lower(k)
local base = mw.ustring.gsub(lowerk, '[%d]*$', '')
baseParentArgs[base] = true
end
end
--compare lists and spit out unknowns
local unknownParams = {}
for k, v in pairs( baseParentArgs ) do
if acceptableArgs[k] == nil then
categories[17] = '[[Category:Taxonbars with unknown parameters|' .. k ..']]'
unknownParams[#unknownParams + 1] = k
end
end
--warn if unknown(s) present
if #unknownParams > 0 then
local plural = nil
local itthem = nil
if #unknownParams == 1 then
plural = ''
itthem = 'it'
else
plural = 's'
itthem = 'them'
end
if frame:preprocess( '{{REVISIONID}}' ) == '' then
errors = errors..'<div class="hatnote" style="color:red">'..
'<strong>Warning:</strong> unknown parameter'..plural..' <strong>'..table.concat(unknownParams, ', ')..'</strong>.<br />'..
'Please correct '..itthem..' or consider adding '..itthem..' to Wikidata.<br />'..
'This message is only shown in preview.</div>'
end
end
--Append basionym to arg list, if not already provided
if currentItem then
local currentBasState = currentItem:getBestStatements('P566')[1] --basionym
if currentBasState then
local basionymId = currentBasState.mainsnak.datavalue.value.id
if basionymId and resolveEntity._id(basionymId) and tFroms[basionymId] == nil then
--check that basionym is a strict instance of taxon
local basionymItem = mw.wikibase.getEntity(basionymId)
if basionymItem then
for _, instanceOfState in pairs ( basionymItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_Strict[instanceOf] then
--housekeeping
tFroms[basionymId] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append basionym & track
parentArgs['from'..fromTitleCount] = basionymId
categories[13] = '[[Category:Taxonbars with automatically added basionyms]]'
break
end end end end end end
--Append original combination to arg list, if not already provided
if currentItem then
local currentOCState = currentItem:getBestStatements('P1403')[1] --original combination
if currentOCState then
local orcoId = currentOCState.mainsnak.datavalue.value.id
if orcoId and resolveEntity._id(orcoId) and tFroms[orcoId] == nil then
--check that orco is a strict instance of taxon
local orcoItem = mw.wikibase.getEntity(orcoId)
if orcoItem then
for _, instanceOfState in pairs ( orcoItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_Strict[instanceOf] then
--housekeeping
tFroms[orcoId] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append orco & track
parentArgs['from'..fromTitleCount] = orcoId
categories[14] = '[[Category:Taxonbars with automatically added original combinations]]'
break
end end end end end end
--Append monotypic genus/species to arg list of monotypic species/genus, if not already provided
if currentItem then
for _, instanceOfState in pairs ( currentItem:getBestStatements('P31') ) do --instance of
local taxonRank = nil
local parentItem = nil
local parentTaxon = nil
local parentTaxonRank = nil
local parentMonoGenus = nil --holy grail/tbd
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if instanceOf and (instanceOf == 'Q310890' or instanceOf == 'Q47487597') then --monotypic/fossil taxon
local taxonRankState = currentItem:getBestStatements('P105')[1] --taxon rank
if taxonRankState then taxonRank = taxonRankState.mainsnak.datavalue.value.id end
if taxonRank and taxonRank == 'Q7432' then --species
--is monotypic species; add genus
local parentTaxonState = currentItem:getBestStatements('P171')[1] --parent taxon
if parentTaxonState then parentTaxon = parentTaxonState.mainsnak.datavalue.value.id end
--confirm parent taxon rank == genus & monotypic
if parentTaxon and resolveEntity._id(parentTaxon) then
parentItem = mw.wikibase.getEntity(parentTaxon)
if parentItem then
local parentTaxonRankState = parentItem:getBestStatements('P105')[1] --taxon rank
if parentTaxonRankState then parentTaxonRank = parentTaxonRankState.mainsnak.datavalue.value.id end
if parentTaxonRank and parentTaxonRank == 'Q34740' then --parent == genus
for _, parentInstanceOfState in pairs ( parentItem:getBestStatements('P31') ) do --instance of
local parentInstanceOf = parentInstanceOfState.mainsnak.datavalue.value.id
if parentInstanceOf and
(parentInstanceOf == 'Q310890' or parentInstanceOf == 'Q47487597') then --monotypic/fossil taxon
parentMonoGenus = parentTaxon --confirmed
break
end
end
if parentMonoGenus and tFroms[parentMonoGenus] == nil then
--housekeeping
tFroms[parentMonoGenus] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append monotypic genus & track
parentArgs['from'..fromTitleCount] = parentMonoGenus
categories[15] = '[[Category:Taxonbars with automatically added monotypic genera]]'
break
end
end
end
end
if parentMonoGenus == nil or tFroms[parentMonoGenus] == nil then
categories[16] = '[[Category:Taxonbars of monotypic species missing genera]]'
break
end
elseif taxonRank and taxonRank == 'Q34740' then --genus
--is monotypic genus; add species
--...
end
end
end
end --if currentItem
--Setup navbox
local navboxParams = {
name = 'Taxonbar',
bodyclass = 'hlist',
listclass = '',
groupstyle = 'text-align: left;',
}
for f = 1, fromTitleCount, 1
do
local elements, title = {}, nil
--cleanup parameters
if parentArgs['from'..f] == '' then parentArgs['from'..f] = nil end
if parentArgs['title'..f] == '' then parentArgs['title'..f] = nil end
--remap aliases
for _, a in pairs( conf.aliases ) do
local alias, name = mw.ustring.lower(a[1]), mw.ustring.lower(a[2])
if parentArgs[alias..f] and parentArgs[name..f] == nil then
parentArgs[name..f] = parentArgs[alias..f]
parentArgs[alias..f] = nil
end
end
--Fetch Wikidata item
local from = resolveEntity._id(parentArgs['from'..f])
local item = mw.wikibase.getEntity(from)
local label = nil
if type(item) == 'table' then
local statements = item:getBestStatements('P225')[1] --taxon name
if statements then
local datavalue = statements.mainsnak.datavalue
if datavalue then
label = datavalue.value
end
end
label = label or item:getLabel()
else
if parentArgs['from'..f] then
categories[1] = ''
categories[4] = '[[Category:Taxonbars with invalid from parameters]]'
errors = errors .. mw.text.tag('strong', {class='error'}, 'Error: "' ..
parentArgs['from'..f] .. '" is not a valid Wikidata entity ID.<br />')
end
end
if label and label ~= '' then
title = mw.title.new(label)
end
if title == nil and parentArgs['title'..f] then
title = mw.title.new(parentArgs['title'..f])
end
if title == nil and f == 1 then
title = currentTitle
end
if title then
if isNilOrEmpty( parentArgs['wikidata'..f] ) and
(title.namespace == 0) then
if parentArgs['from'..f] then
parentArgs['wikidata'..f] = parentArgs['from'..f]
elseif item then
parentArgs['wikidata'..f] = item.id
end
end
if title.namespace == 0 or stringArgs then --only in mainspace or if manual overrides exist
local sourceCount = 0
for _, params in pairs( conf.databases ) do
params[1] = mw.ustring.lower(params[1])
local propId = params[3]
--Wikidata fallback if requested
if (item and item.claims) and
(type(propId) == 'string' or (type(propId) == 'number' and propId > 0)) then
local wikidataId = getIdFromWikidata( item, 'P' .. propId )
local v = parentArgs[params[1]..f]
if wikidataId then
if isNilOrEmpty(v) then
parentArgs[params[1]..f] = wikidataId
else
if v and v ~= 'no' and v ~= wikidataId then
categories[10] = '[[Category:Taxonbars with manual taxon IDs differing from Wikidata]]'
elseif v and v == wikidataId then
categories[11] = '[[Category:Taxonbars with manual taxon IDs identical to Wikidata]]'
end
end
end
end
local val = parentArgs[params[1]..f]
if val and val ~= '' and mw.ustring.lower(val) ~= 'no' then
if type(propId) == 'number' then
if propId < 0 then propId = -propId end --allow link
if propId > 0 then --link
table.insert( elements, createRow( params[1], params[2]..':', val, getLink( propId, val ).text, true ) )
else --propId == 0; no link
table.insert( elements, createRow( params[1], params[2]..':', val, val, true ) )
end
else
table.insert( elements, createRow( params[1], params[2]..':', val, getLink( propId, val ).text, true ) )
end
if params[1] ~= 'wikidata' and params[1] ~= 'wikispecies' then
sourceCount = sourceCount + 1
end
end
end
if sourceCount >= 40 then categories[22] = '[[Category:Taxonbars with 40+ taxon IDs]]'
elseif sourceCount >= 35 then categories[21] = '[[Category:Taxonbars with 35–39 taxon IDs]]' --endashes
elseif sourceCount >= 30 then categories[20] = '[[Category:Taxonbars with 30–34 taxon IDs]]'
elseif sourceCount >= 25 then categories[19] = '[[Category:Taxonbars with 25–29 taxon IDs]]'
elseif sourceCount >= 20 then categories[18] = '[[Category:Taxonbars with 20–24 taxon IDs]]'
end
--Generate navbox title
if sourceCount > 0 then
rowCount = rowCount + 1
if firstRow == 0 then firstRow = f end
--set title from wikidata if it doesn't exist
if isNilOrEmpty( parentArgs['title'..f] ) then
parentArgs['noTitle'..f] = true
parentArgs['title'..f] = title.text
end
--if it exists now, set row heading to title
if not isNilOrEmpty( parentArgs['title'..f] ) then
navboxParams['group'..f] = TaxonItalics.italicizeTaxonName(parentArgs['title'..f], false)
else
navboxParams['group'..f] = ''
end
navboxParams['list'..f] = table.concat( elements )
elseif currentEntityId and (currentEntityId == parentArgs['from'..f] or fromTitleCount == 1) then
categories[7] = '[[Category:Taxonbars without primary Wikidata taxon IDs]]'
else
categories[8] = '[[Category:Taxonbars without secondary Wikidata taxon IDs]]'
end
--Categorize
if not isNilOrEmpty( parentArgs['from'..f] ) then
--blank "missing from" if 'from' exists
categories[1] = ''
--blank "desynced" if 'from' matches current page
if parentArgs['from'..f] == currentEntityId then categories[2] = '' end
end
--cannot be "desynced" if no 'from' params
if categories[1] ~= '' then categories[2] = '' end
end
end
end --for f = 1, fromTitleCount, 1
if rowCount > 0 then
local Navbox = require('Module:Navbox')
if rowCount > 1 then
--remove duplicates and move page title to top
local rowIDs = {}
for f = 1,fromTitleCount,1
do
if not isNilOrEmpty( parentArgs['title'..f] ) then
if rowIDs[parentArgs['wikidata'..f]] then --remove duplicate
navboxParams['group'..f] = nil
navboxParams['list'..f] = nil
else
rowIDs[parentArgs['wikidata'..f]] = true
if f > firstRow and (parentArgs['title'..f] == currentTitle.text or
parentArgs['wikidata'..f] == currentEntityId) then --move item linked to page to top
if navboxParams['group'..f] and
navboxParams['group'..f] ~= '' and
navboxParams['list'..f] and
navboxParams['list'..f] ~= '' then
local tempGroup, tempList = navboxParams['group'..f], navboxParams['list'..f]
navboxParams['group'..f], navboxParams['list'..f] = navboxParams['group'..firstRow], navboxParams['list'..firstRow]
navboxParams['group'..firstRow], navboxParams['list'..firstRow] = tempGroup, tempList
end
end
end
end
end
--adjust navbox for number of rows
navboxParams['title'] = '[[Help:Şınasnayışê taksoni|Şınasnayış]]'
if rowCount >= 5 then
navboxParams['navbar'] = 'plain'
else
navboxParams['state'] = 'off'
navboxParams['navbar'] = 'off'
end
elseif parentArgs['Title'..firstRow] then
navboxParams['title'..firstRow] = '[[Help:Şınasnayışê taksoni|Şınasnayış]]'
else
navboxParams['title'..firstRow] = '[[Help:Şınasnayışê taksoni|Şınasnayış]]<br />' .. navboxParams['group'..firstRow]
end
--return navbox
outString = Navbox._navbox(navboxParams)
end --if rowCount > 0
--Add categories
if string.sub(currentTitle.subpageText,1,9) == 'testcases' then parentArgs['demo'] = true end
if not isNilOrEmpty( parentArgs['demo'] ) then
outString = outString .. mw.text.nowiki(table.concat(categories)) .. '<br />'
elseif currentTitle.namespace == 0 then
outString = outString .. table.concat(categories)
end
return outString .. errors
end
return p
g50fz5tozn3ube8uhsnfwsl1p0vg1jq
557899
557898
2026-10-03T17:48:55Z
Maviulke
34834
557899
Scribunto
text/plain
require('strict')
local conf = require( 'Module:Taxonbar/conf' ) --configuration module
local TaxonItalics = require( 'Module:TaxonItalics' ) --use a function to conditionally italicize taxon names
--[[==========================================================================]]
--[[ Local functions ]]
--[[==========================================================================]]
local function isNilOrEmpty( thing )
if thing == nil or thing == '' then
return true
end
return nil
end
local function getIdFromWikidata( item, property )
local id = nil
if property == 'PWikispecies:$1' then
local siteLinks = item.sitelinks
if siteLinks then
local speciesWiki = item.sitelinks.specieswiki
if speciesWiki then
id = speciesWiki.title
end
end
return id
elseif item.claims[property] == nil then
return id
end
--[[ this code picks up deprecated values on wikidata; better to use getBestStatements
for _, statement in pairs( item.claims[property] ) do
if statement.mainsnak.datavalue then
id = statement.mainsnak.datavalue.value
break
end
end
]]
local statements = item:getBestStatements(property)[1]
if statements and
statements.mainsnak and
statements.mainsnak.datavalue and
statements.mainsnak.datavalue.value
then
id = statements.mainsnak.datavalue.value
end
return id
end
local function getLink( property, db, val )
local link, returnVal = '', {}
returnVal.isError = false
if mw.ustring.find( val, '//' ) then
link = val
else
if type(property) == 'number' and property > 0 then
local entityObject = mw.wikibase.getEntity('P'..property)
local dataType
if entityObject then dataType = entityObject.datatype
else returnVal.isError = true end
if dataType == 'external-id' then
local formatterURL = nil
if property == 3746 or --Wildflowers of Israel
property == 3795 or --Flora of Israel Online
property == 5397 --Tierstimmenarchiv
then
formatterURL = entityObject:getBestStatements('P1630')[2] --use 2nd formatterURL for English version
end
if formatterURL == nil then formatterURL = entityObject:getBestStatements('P1630')[1] end --default to [1]
if formatterURL then
if formatterURL.mainsnak.datavalue and formatterURL.mainsnak.datavalue.value then --nil check for ABA
link = formatterURL.mainsnak.datavalue.value
end
end
if db == 'bow' then -- for birds of world which uses eBird identifier
link = 'https://birdsoftheworld.org/bow/species/$1'
elseif db == 'speciesfungorum' then -- SpeciesFungorum uses Index Fungorum identifier
link = 'https://www.speciesfungorum.org/Names/NamesRecord.asp?RecordID=$1'
elseif db == 'fossilworks' then
link = 'https://paleobiodb.org/classic/basicTaxonInfo?taxon_no=$1'
end
elseif dataType == 'url' then
local subjectItem = entityObject:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
if officialWebsite then link = officialWebsite.mainsnak.datavalue.value end
end
elseif dataType == 'string' then
local formatterURL = entityObject:getBestStatements('P1630')[1]
if formatterURL then
link = formatterURL.mainsnak.datavalue.value
else
local subjectItem = entityObject:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
if officialWebsite then link = officialWebsite.mainsnak.datavalue.value end
end
end
else
returnVal.isError = true
end
elseif type(property) == 'string' then
link = property
end
--local valurl = val
local valurl = mw.uri.encode( val, 'PATH' )
valurl = string.gsub (valurl, '%%2F', '/') --escape '/' (e.g. issue with P5354); see wikidata T128078 and https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Wikibase/+/664820/3/lib/includes/PropertyInfoSnakUrlExpander.php
if type(property) == 'number' then
--doublecheck language for Wildflowers of Israel ID
if property == 3746 then link = mw.ustring.gsub(link, '/hebrew/', '/english/') end
--format spaces in PfaF binomials, e.g. "Elaeagnus x ebbingei"
if property == 4301 then valurl = mw.ustring.gsub(valurl, '%%20', '+') end
end
valurl = mw.ustring.gsub(valurl,'%%','%%%%')
link = mw.ustring.gsub(link, '$1', valurl)
end
link = mw.ustring.gsub(link, '^[Hh][Tt][Tt][Pp]([Ss]?)://', 'http%1://') --fix wikidata URL
val = mw.ustring.match(val, '([^=/]*)/?$') --get display name from end of URL
if mw.ustring.find( link, '//' ) then
returnVal.text = '['..link..' '..mw.text.encode(mw.uri.decode(val, 'PATH'),'%[%]')..']'
elseif link == '' then
returnVal.text = val
else
returnVal.text = '<span class="external">[['..link..'|'..val..']]</span>'
end
return returnVal
end
local function createRow( id, label, rawValue, link, withUid )
if link then
local outStr = '*<span style="white-space:nowrap;">'..label..' <span'
if withUid then outStr = outStr..' class="uid"' end
return outStr..'>'..link..'</span></span>\n'
else
return '* '..mw.text.tag('span', {class='error'}, 'The identifier '..id..' '..rawValue..' is not valid.')..'\n'
end
end
local function copyTable(inTable)
if type(inTable) ~= 'table' then return inTable end
local outTable = setmetatable({}, getmetatable(inTable))
for key, value in pairs (inTable) do outTable[copyTable(key)] = copyTable(value) end
return outTable
end
local p = {}
--[[==========================================================================]]
--[[ Main ]]
--[[==========================================================================]]
function p.authorityControlTaxon( frame )
local resolveEntity = require( 'Module:ResolveEntityId' )
local whitelist = require( 'Module:Taxonbar/whitelist' ).whitelist --to create acceptableInstanceOf_Strict & acceptableInstanceOf_All
local parentArgs = copyTable(frame:getParent().args)
local currentTitle = mw.title.getCurrentTitle()
local currentEntityId = mw.wikibase.getEntityIdForCurrentPage()
local stringArgs = false
local fromTitleCount, firstRow, rowCount = 1, 0, 0
local outString, errors = '', ''
local iFroms = 0 --integer size of tFroms, b/c Lua
local tFroms = {} --non-sequential table of unique froms
local tCats = {
'[[Category:Taxonbars without from parameter]]',
'[[Category:Taxonbars desynced from Wikidata]]',
'', -- [3] placeholder for [[Category:Taxonbar pages requiring a Wikidata item]]
'', -- [4] placeholder for [[Category:Taxonbars on possible non-taxon pages]]
'', -- [5] placeholder for [[Category:Taxonbars with invalid from parameters]]
'', -- [6] placeholder for [[Category:Taxonbars with duplicate from parameters]]
'', -- [7] placeholder for [[Category:Taxonbars with from2 matching article title]]
'', -- [8] placeholder for [[Category:Taxonbars with from2 matching article title & QID]]
'', -- [9] placeholder for [[Category:Taxonbars with manual taxon IDs]]
'', --[10] placeholder for [[Category:Taxonbars with manual taxon IDs identical to Wikidata]]
'', --[11] placeholder for [[Category:Taxonbars with manual taxon IDs differing from Wikidata]]
'', --[12] placeholder for [[Category:Taxonbars with unknown parameters]]
'', --[13] placeholder for [[Category:Taxonbars with unnamed parameters]]
'', --[14] placeholder for [[Category:Taxonbars with multiple manual Wikidata items]]
'', --[15] placeholder for [[Category:Taxonbars with automatically added basionyms]]
'', --[16] placeholder for [[Category:Taxonbars with automatically added original combinations]]
'', --[17] placeholder for [[Category:Taxonbars with automatically added monotypic species]]
'', --[18] placeholder for [[Category:Taxonbars with automatically added monotypic genera]]
'', --[19] placeholder for [[Category:Taxonbars of monotypic species missing genera on Wikidata]]
'', --[20] placeholder for [[Category:Taxonbars of monotypic genera missing species on Wikidata]]
'', --[21] placeholder for [[Category:Taxonbars without primary Wikidata taxon IDs]]
'', --[22] placeholder for [[Category:Taxonbars without secondary Wikidata taxon IDs]]
'', --[23] placeholder for [[Category:Taxonbars with 20–24 taxon IDs]]
'', --[24] placeholder for [[Category:Taxonbars with 25–29 taxon IDs]]
'', --[25] placeholder for [[Category:Taxonbars with 30–34 taxon IDs]]
'', --[26] placeholder for [[Category:Taxonbars with 35–39 taxon IDs]]
'', --[27] placeholder for [[Category:Taxonbars with 40–44 taxon IDs]]
'', --[28] placeholder for [[Category:Taxonbars with 45+ taxon IDs]]
'', --[29] placeholder for [[Category:Taxonbars of monotypic species missing genera on Wikipedia]]
'', --[30] placeholder for [[Category:Taxonbars of monotypic genera missing species on Wikipedia]]
}
local acceptableInstanceOf_Strict = whitelist{ args = { 'strict' } }
local acceptableInstanceOf_All = whitelist{ args = { 'all' } }
--monotypic flags for WP-side check
local mono = nil
local monoWPok = nil
local monoGenus = nil
local monoSpecies = nil
local monoParent = nil --parent taxon name
--Assess the page's relationship with Wikidata
local currentItem = nil
if currentTitle.namespace == 10 then --i.e. Module:Taxonbar/sandbox, Template:Taxonbar/doc, etc.
if resolveEntity._id(parentArgs['from']) then
currentItem = mw.wikibase.getEntity(parentArgs['from'])
end
if currentItem == nil then
if resolveEntity._id(parentArgs['from1']) then
currentItem = mw.wikibase.getEntity(parentArgs['from1'])
end
end
elseif resolveEntity._id(currentEntityId) then
currentItem = mw.wikibase.getEntity(currentEntityId)
else --currentEntityId == nil/unresolvable
tCats[3] = '[[Category:Taxonbar pages requiring a Wikidata item]]'
end
if currentItem then
tCats[4] = '[[Category:Taxonbars on possible non-taxon pages]]' --unset if acceptable found
for _, instanceOfState in pairs ( currentItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_All[instanceOf] then
tCats[4] = ''
break
end
end
end
--Cleanup args
for k, v in pairs( frame:getParent().args ) do
if type(k) == 'string' then
--make args case insensitive
local lowerk = mw.ustring.lower(k)
if isNilOrEmpty( parentArgs[lowerk] ) then
parentArgs[k] = nil
parentArgs[lowerk] = v
end
--remap abc to abc1
if mw.ustring.find(lowerk,'%d$') == nil then --if no number at end of param
if isNilOrEmpty( parentArgs[lowerk..'1'] ) then
parentArgs[lowerk] = nil
lowerk = lowerk..'1'
parentArgs[lowerk] = v
end
end
if v and v ~= '' then
--remap 'for' to 'title'
if mw.ustring.sub(lowerk,1,3) == 'for' then
local forTitle = mw.ustring.gsub(lowerk,'^for','title',1)
if isNilOrEmpty( parentArgs[forTitle] ) then
parentArgs[lowerk] = nil
lowerk = forTitle
parentArgs[lowerk] = v
end
end
--find highest from or title param
if mw.ustring.sub(lowerk,1,4) == 'from' then
local fromNumber = tonumber(mw.ustring.sub(lowerk,5,-1))
if fromNumber and fromNumber >= fromTitleCount then fromTitleCount = fromNumber end
--look for duplicate froms while we're here
if mw.ustring.find(v, '^Q%d') then
if tFroms[v] then
tCats[6] = '[[Category:Taxonbars with duplicate from parameters]]'
tFroms[v] = tFroms[v] + 1
else
tFroms[v] = 1
iFroms = iFroms + 1
end
if iFroms == 2 then
tCats[14] = '[[Category:Taxonbars with multiple manual Wikidata items]]'
end
end
elseif mw.ustring.sub(lowerk,1,5) == 'title' then
local titleNumber = tonumber(mw.ustring.sub(lowerk,4,-1))
if titleNumber and titleNumber >= fromTitleCount then fromTitleCount = titleNumber end
elseif mw.ustring.lower(v) ~= 'no' and mw.ustring.lower(v) ~= 'yes' then
stringArgs = true
tCats[9] = '[[Category:Taxonbars with manual taxon IDs]]'
end
end
end --if type(k) == 'string'
end --for
--Check for unknown parameters
--create knowns list
local acceptableArgs = { from = true, } --master list of l/c acceptable args
for _, d in pairs( conf.databases ) do
if d[1] ~= 'Wikidata' then --made obsolete by from
acceptableArgs[mw.ustring.lower(d[1])] = true
end
end
for _, a in pairs( conf.aliases ) do
acceptableArgs[mw.ustring.lower(a[1])] = true
end
--create trimmed parents list
local baseParentArgs = {} --condensed list of l/c parent args w/o trailing #s
for k, _ in pairs( parentArgs ) do
if type(k) == 'string' then
local lowerk = mw.ustring.lower(k)
local base = mw.ustring.gsub(lowerk, '[%d]*$', '')
baseParentArgs[base] = true
elseif type(k) == 'number' then
tCats[13] = '[[Category:Taxonbars with unnamed parameters|'..k..']]'
end
end
--compare lists and spit out unknowns
local unknownParams = {}
for k, _ in pairs( baseParentArgs ) do
if acceptableArgs[k] == nil then
tCats[12] = '[[Category:Taxonbars with unknown parameters|'..k..']]'
unknownParams[#unknownParams + 1] = k
end
end
--warn if unknown(s) present
if #unknownParams > 0 then
local plural = 's'
local itthem = 'them'
if #unknownParams == 1 then
plural = ''
itthem = 'it'
end
errors = errors..require('Module:If preview')._warning({
mw.ustring.format(
'Unknown parameter%s <code>%s</code>. Please correct %s or consider adding %s to Wikidata.',
plural,
table.concat(unknownParams, '</code>, <code>'),
itthem,
itthem
)
})
end
--Append basionym to arg list, if not already provided
if currentItem then
local currentBasState = currentItem:getBestStatements('P566')[1] --basionym
if currentBasState then
local datavalue = currentBasState.mainsnak.datavalue
local basionymId = datavalue and datavalue.value.id
if basionymId and resolveEntity._id(basionymId) and tFroms[basionymId] == nil then
--check that basionym is a strict instance of taxon
local basionymItem = mw.wikibase.getEntity(basionymId)
if basionymItem then
for _, instanceOfState in pairs ( basionymItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_Strict[instanceOf] then
--housekeeping
tFroms[basionymId] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append basionym & track
parentArgs['from'..fromTitleCount] = basionymId
tCats[15] = '[[Category:Taxonbars with automatically added basionyms]]'
break
end end end end end end
--Append original combination to arg list, if not already provided
if currentItem then
local currentOCState = currentItem:getBestStatements('P1403')[1] --original combination
if currentOCState then
local orcoId = currentOCState.mainsnak.datavalue.value.id
if orcoId and resolveEntity._id(orcoId) and tFroms[orcoId] == nil then
--check that orco is a strict instance of taxon
local orcoItem = mw.wikibase.getEntity(orcoId)
if orcoItem then
for _, instanceOfState in pairs ( orcoItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_Strict[instanceOf] then
--housekeeping
tFroms[orcoId] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append orco & track
parentArgs['from'..fromTitleCount] = orcoId
tCats[16] = '[[Category:Taxonbars with automatically added original combinations]]'
break
end end end end end end
--Append monotypic genus/species to arg list of monotypic species/genus, if not already provided
if currentItem then
for _, instanceOfState in pairs ( currentItem:getBestStatements('P31') ) do --instance of
local taxonRank = nil
local parentItem = nil
local parentTaxon = nil
local parentTaxonRank = nil
local parentMonoGenus = nil --holy grail/tbd
local childItem = nil
local childTaxon = nil
local childTaxonRank = nil
local childMonoSpecies = nil --holy grail/tbd
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if instanceOf and (instanceOf == 'Q310890' or instanceOf == 'Q47487597') then --monotypic/fossil taxon
--find & save monoParent for future WP-side check
if monoParent == nil then
mono = true
local label = nil
local taxonName = currentItem:getBestStatements('P225')[1] --taxon name
if taxonName then
local datavalue = taxonName.mainsnak.datavalue
if datavalue then
label = datavalue.value
end
end
label = label or currentItem:getLabel()
if label then
monoParent = mw.ustring.gsub(label, ' .+', '')
end
end
local missingP171orP427sortkey = '*'
local taxonRankState = currentItem:getBestStatements('P105')[1] --taxon rank
if taxonRankState then taxonRank = taxonRankState.mainsnak.datavalue.value.id end
if taxonRank and taxonRank == 'Q7432' then --species
--is monotypic species; add genus
monoSpecies = true
local parentTaxonState = currentItem:getBestStatements('P171')[1] --parent taxon
if parentTaxonState then
parentTaxon = parentTaxonState.mainsnak.datavalue.value.id
else
tCats[19] = '[[Category:Taxonbars of monotypic species missing genera on Wikidata|'..missingP171orP427sortkey..']]'
break
end
--confirm parent taxon rank == genus & monotypic
if parentTaxon and resolveEntity._id(parentTaxon) then
parentItem = mw.wikibase.getEntity(parentTaxon)
if parentItem then
local parentTaxonRankState = parentItem:getBestStatements('P105')[1] --taxon rank
if parentTaxonRankState then parentTaxonRank = parentTaxonRankState.mainsnak.datavalue.value.id end
if parentTaxonRank and parentTaxonRank == 'Q34740' then --parent == genus
for _, parentInstanceOfState in pairs ( parentItem:getBestStatements('P31') ) do --instance of
local parentInstanceOf = parentInstanceOfState.mainsnak.datavalue.value.id
if parentInstanceOf and
(parentInstanceOf == 'Q310890' or parentInstanceOf == 'Q47487597') then --monotypic/fossil taxon
parentMonoGenus = parentTaxon --confirmed
break
end
end
if parentMonoGenus and tFroms[parentMonoGenus] == nil then
--housekeeping
tFroms[parentMonoGenus] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append monotypic genus & track
parentArgs['from'..fromTitleCount] = parentMonoGenus
tCats[18] = '[[Category:Taxonbars with automatically added monotypic genera]]'
break
end end end end
if parentMonoGenus == nil or tFroms[parentMonoGenus] == nil then
tCats[19] = '[[Category:Taxonbars of monotypic species missing genera on Wikidata]]'
break
end
elseif taxonRank and taxonRank == 'Q34740' then --genus
--is monotypic genus; add species
--(https://www.wikidata.org/wiki/Wikidata:Property_proposal/child_monotypic_taxon unnecessary thanks to P427!)
monoGenus = true
local childTaxonState = currentItem:getBestStatements('P427')[1] --taxonomic type
if childTaxonState then
childTaxon = childTaxonState.mainsnak.datavalue.value.id
else
tCats[20] = '[[Category:Taxonbars of monotypic genera missing species on Wikidata|'..missingP171orP427sortkey..']]'
break
end
--confirm child taxon rank == species & monotypic
if childTaxon and resolveEntity._id(childTaxon) then
childItem = mw.wikibase.getEntity(childTaxon)
if childItem then
local childTaxonRankState = childItem:getBestStatements('P105')[1] --taxon rank
if childTaxonRankState then childTaxonRank = childTaxonRankState.mainsnak.datavalue.value.id end
if childTaxonRank and childTaxonRank == 'Q7432' then --child == species
for _, childInstanceOfState in pairs ( childItem:getBestStatements('P31') ) do --instance of
local childInstanceOf = childInstanceOfState.mainsnak.datavalue.value.id
if childInstanceOf and
(childInstanceOf == 'Q310890' or childInstanceOf == 'Q47487597') then --monotypic/fossil taxon
childMonoSpecies = childTaxon --confirmed
break
end
end
if childMonoSpecies and tFroms[childMonoSpecies] == nil then
--housekeeping
tFroms[childMonoSpecies] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append monotypic species & track
parentArgs['from'..fromTitleCount] = childMonoSpecies
tCats[17] = '[[Category:Taxonbars with automatically added monotypic species]]'
break
end end end end
if childMonoSpecies == nil or tFroms[childMonoSpecies] == nil then
tCats[20] = '[[Category:Taxonbars of monotypic genera missing species on Wikidata]]'
break
end
end --monotype searches
end --monotype handling
end --for
end --if currentItem
--Setup navbox
local navboxParams = {
name = 'Taxonbar',
bodyclass = 'hlist',
listclass = '',
groupstyle = 'text-align: left;',
}
for f = 1, fromTitleCount, 1
do
local elements, title = {}, nil
--cleanup parameters
if parentArgs['from'..f] == '' then parentArgs['from'..f] = nil end
if parentArgs['title'..f] == '' then parentArgs['title'..f] = nil end
--remap aliases
for _, a in pairs( conf.aliases ) do
local alias, name = mw.ustring.lower(a[1]), mw.ustring.lower(a[2])
if parentArgs[alias..f] and parentArgs[name..f] == nil then
parentArgs[name..f] = parentArgs[alias..f]
parentArgs[alias..f] = nil
end
end
--Fetch Wikidata item
local from = resolveEntity._id(parentArgs['from'..f])
local item = mw.wikibase.getEntity(from)
local label = nil
if type(item) == 'table' then
local statements = item:getBestStatements('P225')[1] --taxon name
if statements then
local datavalue = statements.mainsnak.datavalue
if datavalue then
label = datavalue.value
end
end
label = label or item:getLabel()
else
if parentArgs['from'..f] then
tCats[1] = ''
tCats[5] = '[[Category:Taxonbars with invalid from parameters]]'
errors = errors..mw.text.tag('strong', {class='error'}, 'Error: "'..
parentArgs['from'..f]..'" is not a valid Wikidata entity ID.<br />')
end
end
if label and label ~= '' then
title = mw.title.new(label)
end
if title == nil and parentArgs['title'..f] then
title = mw.title.new(parentArgs['title'..f])
end
if title == nil and f == 1 then
title = currentTitle
end
if title then
if isNilOrEmpty( parentArgs['wikidata'..f] ) and
(title.namespace == 0) then
if parentArgs['from'..f] then
parentArgs['wikidata'..f] = parentArgs['from'..f]
elseif item then
parentArgs['wikidata'..f] = item.id
end
end
if title.namespace == 0 or stringArgs then --only in mainspace or if manual overrides exist
local sourceCount = 0
for _, params in pairs( conf.databases ) do
params[1] = mw.ustring.lower(params[1])
local propId = params[3]
--Wikidata fallback if requested
if (item and item.claims) and
(type(propId) == 'string' or (type(propId) == 'number' and propId > 0))
then
local wikidataId = getIdFromWikidata( item, 'P'..propId )
local v = parentArgs[params[1]..f]
if wikidataId then
if isNilOrEmpty(v) then
parentArgs[params[1]..f] = wikidataId
else
if v and v ~= 'no' and v ~= wikidataId then
tCats[11] = '[[Category:Taxonbars with manual taxon IDs differing from Wikidata]]'
elseif v and v == wikidataId then
tCats[10] = '[[Category:Taxonbars with manual taxon IDs identical to Wikidata]]'
end
end
end
end
if (item and item.claims) and
( (type(propId) == 'number' and propId < 0))
then
local wikidataId = getIdFromWikidata( item, 'P'..-propId )
--mw.addWarning ("propId=" .. tostring(propId) .. "; wikidata=" .. tostring(wikidataId))
local v = parentArgs[params[1]..f]
if v == 'yes' then
if wikidataId then
parentArgs[params[1]..f] = wikidataId
else
parentArgs[params[1]..f] = nil -- don't want to use 'yes' as id
end
end
end
local val = parentArgs[params[1]..f]
if val and val ~= '' and mw.ustring.lower(val) ~= 'no' then
if type(propId) == 'number' then
if propId < 0 then propId = -propId end --allow link
if propId > 0 then --link
table.insert( elements, createRow( params[1], params[2]..':', val, getLink( propId, params[1], val ).text, true ) )
if params[1] == 'fossilworks' then -- fossilworks being use to link to PBDB
if elements[#elements] == elements[#elements-1] then -- check if identical PBDB entry already set
--mw.addWarning("item has both Fossilworks and PBDB identifers:" .. val)
elements[#elements] = nil
end
end
else --propId == 0; no link
table.insert( elements, createRow( params[1], params[2]..':', val, val, true ) )
end
else
table.insert( elements, createRow( params[1], params[2]..':', val, getLink( propId, params[1], val ).text, true ) )
end
if params[1] ~= 'wikidata' and params[1] ~= 'wikispecies' then
sourceCount = sourceCount + 1
end
end
end --for _, params in pairs( conf.databases ) do
if sourceCount >= 45 then tCats[28] = '[[Category:Taxonbars with 45+ taxon IDs]]'
elseif sourceCount >= 40 then tCats[27] = '[[Category:Taxonbars with 40–44 taxon IDs]]' --endashes
elseif sourceCount >= 35 then tCats[26] = '[[Category:Taxonbars with 35–39 taxon IDs]]'
elseif sourceCount >= 30 then tCats[25] = '[[Category:Taxonbars with 30–34 taxon IDs]]'
elseif sourceCount >= 25 then tCats[24] = '[[Category:Taxonbars with 25–29 taxon IDs]]'
elseif sourceCount >= 20 then tCats[23] = '[[Category:Taxonbars with 20–24 taxon IDs]]'
end
--Generate navbox title
if sourceCount > 0 then
rowCount = rowCount + 1
if firstRow == 0 then firstRow = f end
--set title from wikidata if it doesn't exist
if isNilOrEmpty( parentArgs['title'..f] ) then
parentArgs['noTitle'..f] = true
parentArgs['title'..f] = title.text
end
--if it exists now, set row heading to title
if not isNilOrEmpty( parentArgs['title'..f] ) then
navboxParams['group'..f] = TaxonItalics.italicizeTaxonName(parentArgs['title'..f], false)
else
navboxParams['group'..f] = ''
end
navboxParams['list'..f] = table.concat( elements )
elseif currentEntityId and (currentEntityId == parentArgs['from'..f] or fromTitleCount == 1) then
tCats[21] = '[[Category:Taxonbars without primary Wikidata taxon IDs]]'
else
tCats[22] = '[[Category:Taxonbars without secondary Wikidata taxon IDs]]'
end
--Tracking cats
if not isNilOrEmpty( parentArgs['from'..f] ) then
tCats[1] = '' --blank "missing from" if 'from' exists
if parentArgs['from'..f] == currentEntityId then
tCats[2] = '' --blank "desynced" if 'from' matches current page
end
end
if tCats[1] ~= '' then
tCats[2] = '' --cannot be "desynced" if no 'from' params
end
if mono and monoWPok == nil then
if monoSpecies then
if monoParent == label then
monoWPok = true
tCats[29] = ''
else
tCats[29] = '[[Category:Taxonbars of monotypic species missing genera on Wikipedia]]'
end
end
if monoGenus then
local labelGenus = mw.ustring.gsub(label, ' .+', '')
local labelIsBinomial = mw.ustring.match(label, '^[A-Z][a-z]+ [a-z]+')
if labelIsBinomial and monoParent == labelGenus then
monoWPok = true
tCats[30] = ''
else
tCats[30] = '[[Category:Taxonbars of monotypic genera missing species on Wikipedia]]'
end
end
end
end --if title.namespace == 0 or stringArgs
end --if title
end --for f = 1, fromTitleCount, 1
if rowCount > 0 then
local Navbox = require('Module:Navbox')
if rowCount > 1 then
--remove duplicates and don't bother moving page title to top
local rowIDs = {}
for f = 1, fromTitleCount, 1
do
if not isNilOrEmpty( parentArgs['title'..f] ) then
if rowIDs[parentArgs['wikidata'..f]] then --remove duplicate
navboxParams['group'..f] = nil
navboxParams['list'..f] = nil
else
rowIDs[parentArgs['wikidata'..f]] = true
end
end
end
if parentArgs['title'..2] and parentArgs['title'..2] == currentTitle.text then
if currentItem and parentArgs['from'..2] == currentItem['id'] then
tCats[8] = '[[Category:Taxonbars with from2 matching article title & QID]]'
else
tCats[7] = '[[Category:Taxonbars with from2 matching article title]]'
end
end
--adjust navbox for number of rows
navboxParams['title'] = '[[Help:Taxon identifiers|Taxon identifiers]]'
if rowCount >= 4 then
navboxParams['navbar'] = 'plain'
else
navboxParams['state'] = 'off'
navboxParams['navbar'] = 'off'
end
elseif parentArgs['noTitle'..firstRow] then --show title & taxon for 1-row taxonbars, per talk
navboxParams['title'] = '[[Help:Taxon identifiers|Taxon identifiers]]'
navboxParams['state'] = 'off'
navboxParams['navbar'] = 'off'
else
navboxParams['group'..firstRow] = '[[Help:Taxon identifiers|Şınasnayışê taksoni]]<br />'..navboxParams['group'..firstRow]
end
--return navbox
outString = Navbox._navbox(navboxParams)
end --if rowCount > 0
--Add categories
if string.sub(currentTitle.subpageText,1,9) == 'testcases' then parentArgs['demo'] = true end
if not isNilOrEmpty( parentArgs['demo'] ) then
outString = outString..mw.text.nowiki(table.concat(tCats))..'<br />'
elseif currentTitle.namespace == 0 then
outString = outString..table.concat(tCats)
end
return outString..errors
end
function p.taxonbar(frame) return p.authorityControlTaxon( frame:newChild{title = frame:getTitle()} ) end
return p
gu2whlsygefjqtgridejhgiwfl1bpuc
557905
557899
2026-10-03T17:56:18Z
Maviulke
34834
557905
Scribunto
text/plain
require('strict')
local conf = require( 'Module:Taxonbar/conf' ) --configuration module
local TaxonItalics = require( 'Module:TaxonItalics' ) --use a function to conditionally italicize taxon names
--[[==========================================================================]]
--[[ Local functions ]]
--[[==========================================================================]]
local function isNilOrEmpty( thing )
if thing == nil or thing == '' then
return true
end
return nil
end
local function getIdFromWikidata( item, property )
local id = nil
if property == 'PWikispecies:$1' then
local siteLinks = item.sitelinks
if siteLinks then
local speciesWiki = item.sitelinks.specieswiki
if speciesWiki then
id = speciesWiki.title
end
end
return id
elseif item.claims[property] == nil then
return id
end
--[[ this code picks up deprecated values on wikidata; better to use getBestStatements
for _, statement in pairs( item.claims[property] ) do
if statement.mainsnak.datavalue then
id = statement.mainsnak.datavalue.value
break
end
end
]]
local statements = item:getBestStatements(property)[1]
if statements and
statements.mainsnak and
statements.mainsnak.datavalue and
statements.mainsnak.datavalue.value
then
id = statements.mainsnak.datavalue.value
end
return id
end
local function getLink( property, db, val )
local link, returnVal = '', {}
returnVal.isError = false
if mw.ustring.find( val, '//' ) then
link = val
else
if type(property) == 'number' and property > 0 then
local entityObject = mw.wikibase.getEntity('P'..property)
local dataType
if entityObject then dataType = entityObject.datatype
else returnVal.isError = true end
if dataType == 'external-id' then
local formatterURL = nil
if property == 3746 or --Wildflowers of Israel
property == 3795 or --Flora of Israel Online
property == 5397 --Tierstimmenarchiv
then
formatterURL = entityObject:getBestStatements('P1630')[2] --use 2nd formatterURL for English version
end
if formatterURL == nil then formatterURL = entityObject:getBestStatements('P1630')[1] end --default to [1]
if formatterURL then
if formatterURL.mainsnak.datavalue and formatterURL.mainsnak.datavalue.value then --nil check for ABA
link = formatterURL.mainsnak.datavalue.value
end
end
if db == 'bow' then -- for birds of world which uses eBird identifier
link = 'https://birdsoftheworld.org/bow/species/$1'
elseif db == 'speciesfungorum' then -- SpeciesFungorum uses Index Fungorum identifier
link = 'https://www.speciesfungorum.org/Names/NamesRecord.asp?RecordID=$1'
elseif db == 'fossilworks' then
link = 'https://paleobiodb.org/classic/basicTaxonInfo?taxon_no=$1'
end
elseif dataType == 'url' then
local subjectItem = entityObject:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
if officialWebsite then link = officialWebsite.mainsnak.datavalue.value end
end
elseif dataType == 'string' then
local formatterURL = entityObject:getBestStatements('P1630')[1]
if formatterURL then
link = formatterURL.mainsnak.datavalue.value
else
local subjectItem = entityObject:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
if officialWebsite then link = officialWebsite.mainsnak.datavalue.value end
end
end
else
returnVal.isError = true
end
elseif type(property) == 'string' then
link = property
end
--local valurl = val
local valurl = mw.uri.encode( val, 'PATH' )
valurl = string.gsub (valurl, '%%2F', '/') --escape '/' (e.g. issue with P5354); see wikidata T128078 and https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Wikibase/+/664820/3/lib/includes/PropertyInfoSnakUrlExpander.php
if type(property) == 'number' then
--doublecheck language for Wildflowers of Israel ID
if property == 3746 then link = mw.ustring.gsub(link, '/hebrew/', '/english/') end
--format spaces in PfaF binomials, e.g. "Elaeagnus x ebbingei"
if property == 4301 then valurl = mw.ustring.gsub(valurl, '%%20', '+') end
end
valurl = mw.ustring.gsub(valurl,'%%','%%%%')
link = mw.ustring.gsub(link, '$1', valurl)
end
link = mw.ustring.gsub(link, '^[Hh][Tt][Tt][Pp]([Ss]?)://', 'http%1://') --fix wikidata URL
val = mw.ustring.match(val, '([^=/]*)/?$') --get display name from end of URL
if mw.ustring.find( link, '//' ) then
returnVal.text = '['..link..' '..mw.text.encode(mw.uri.decode(val, 'PATH'),'%[%]')..']'
elseif link == '' then
returnVal.text = val
else
returnVal.text = '<span class="external">[['..link..'|'..val..']]</span>'
end
return returnVal
end
local function createRow( id, label, rawValue, link, withUid )
if link then
local outStr = '*<span style="white-space:nowrap;">'..label..' <span'
if withUid then outStr = outStr..' class="uid"' end
return outStr..'>'..link..'</span></span>\n'
else
return '* '..mw.text.tag('span', {class='error'}, 'The identifier '..id..' '..rawValue..' is not valid.')..'\n'
end
end
local function copyTable(inTable)
if type(inTable) ~= 'table' then return inTable end
local outTable = setmetatable({}, getmetatable(inTable))
for key, value in pairs (inTable) do outTable[copyTable(key)] = copyTable(value) end
return outTable
end
local p = {}
--[[==========================================================================]]
--[[ Main ]]
--[[==========================================================================]]
function p.authorityControlTaxon( frame )
local resolveEntity = require( 'Module:ResolveEntityId' )
local whitelist = require( 'Module:Taxonbar/whitelist' ).whitelist --to create acceptableInstanceOf_Strict & acceptableInstanceOf_All
local parentArgs = copyTable(frame:getParent().args)
local currentTitle = mw.title.getCurrentTitle()
local currentEntityId = mw.wikibase.getEntityIdForCurrentPage()
local stringArgs = false
local fromTitleCount, firstRow, rowCount = 1, 0, 0
local outString, errors = '', ''
local iFroms = 0 --integer size of tFroms, b/c Lua
local tFroms = {} --non-sequential table of unique froms
local tCats = {
'[[Category:Taxonbars without from parameter]]',
'[[Category:Taxonbars desynced from Wikidata]]',
'', -- [3] placeholder for [[Category:Taxonbar pages requiring a Wikidata item]]
'', -- [4] placeholder for [[Category:Taxonbars on possible non-taxon pages]]
'', -- [5] placeholder for [[Category:Taxonbars with invalid from parameters]]
'', -- [6] placeholder for [[Category:Taxonbars with duplicate from parameters]]
'', -- [7] placeholder for [[Category:Taxonbars with from2 matching article title]]
'', -- [8] placeholder for [[Category:Taxonbars with from2 matching article title & QID]]
'', -- [9] placeholder for [[Category:Taxonbars with manual taxon IDs]]
'', --[10] placeholder for [[Category:Taxonbars with manual taxon IDs identical to Wikidata]]
'', --[11] placeholder for [[Category:Taxonbars with manual taxon IDs differing from Wikidata]]
'', --[12] placeholder for [[Category:Taxonbars with unknown parameters]]
'', --[13] placeholder for [[Category:Taxonbars with unnamed parameters]]
'', --[14] placeholder for [[Category:Taxonbars with multiple manual Wikidata items]]
'', --[15] placeholder for [[Category:Taxonbars with automatically added basionyms]]
'', --[16] placeholder for [[Category:Taxonbars with automatically added original combinations]]
'', --[17] placeholder for [[Category:Taxonbars with automatically added monotypic species]]
'', --[18] placeholder for [[Category:Taxonbars with automatically added monotypic genera]]
'', --[19] placeholder for [[Category:Taxonbars of monotypic species missing genera on Wikidata]]
'', --[20] placeholder for [[Category:Taxonbars of monotypic genera missing species on Wikidata]]
'', --[21] placeholder for [[Category:Taxonbars without primary Wikidata taxon IDs]]
'', --[22] placeholder for [[Category:Taxonbars without secondary Wikidata taxon IDs]]
'', --[23] placeholder for [[Category:Taxonbars with 20–24 taxon IDs]]
'', --[24] placeholder for [[Category:Taxonbars with 25–29 taxon IDs]]
'', --[25] placeholder for [[Category:Taxonbars with 30–34 taxon IDs]]
'', --[26] placeholder for [[Category:Taxonbars with 35–39 taxon IDs]]
'', --[27] placeholder for [[Category:Taxonbars with 40–44 taxon IDs]]
'', --[28] placeholder for [[Category:Taxonbars with 45+ taxon IDs]]
'', --[29] placeholder for [[Category:Taxonbars of monotypic species missing genera on Wikipedia]]
'', --[30] placeholder for [[Category:Taxonbars of monotypic genera missing species on Wikipedia]]
}
local acceptableInstanceOf_Strict = whitelist{ args = { 'strict' } }
local acceptableInstanceOf_All = whitelist{ args = { 'all' } }
--monotypic flags for WP-side check
local mono = nil
local monoWPok = nil
local monoGenus = nil
local monoSpecies = nil
local monoParent = nil --parent taxon name
--Assess the page's relationship with Wikidata
local currentItem = nil
if currentTitle.namespace == 10 then --i.e. Module:Taxonbar/sandbox, Template:Taxonbar/doc, etc.
if resolveEntity._id(parentArgs['from']) then
currentItem = mw.wikibase.getEntity(parentArgs['from'])
end
if currentItem == nil then
if resolveEntity._id(parentArgs['from1']) then
currentItem = mw.wikibase.getEntity(parentArgs['from1'])
end
end
elseif resolveEntity._id(currentEntityId) then
currentItem = mw.wikibase.getEntity(currentEntityId)
else --currentEntityId == nil/unresolvable
tCats[3] = '[[Category:Taxonbar pages requiring a Wikidata item]]'
end
if currentItem then
tCats[4] = '[[Category:Taxonbars on possible non-taxon pages]]' --unset if acceptable found
for _, instanceOfState in pairs ( currentItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_All[instanceOf] then
tCats[4] = ''
break
end
end
end
--Cleanup args
for k, v in pairs( frame:getParent().args ) do
if type(k) == 'string' then
--make args case insensitive
local lowerk = mw.ustring.lower(k)
if isNilOrEmpty( parentArgs[lowerk] ) then
parentArgs[k] = nil
parentArgs[lowerk] = v
end
--remap abc to abc1
if mw.ustring.find(lowerk,'%d$') == nil then --if no number at end of param
if isNilOrEmpty( parentArgs[lowerk..'1'] ) then
parentArgs[lowerk] = nil
lowerk = lowerk..'1'
parentArgs[lowerk] = v
end
end
if v and v ~= '' then
--remap 'for' to 'title'
if mw.ustring.sub(lowerk,1,3) == 'for' then
local forTitle = mw.ustring.gsub(lowerk,'^for','title',1)
if isNilOrEmpty( parentArgs[forTitle] ) then
parentArgs[lowerk] = nil
lowerk = forTitle
parentArgs[lowerk] = v
end
end
--find highest from or title param
if mw.ustring.sub(lowerk,1,4) == 'from' then
local fromNumber = tonumber(mw.ustring.sub(lowerk,5,-1))
if fromNumber and fromNumber >= fromTitleCount then fromTitleCount = fromNumber end
--look for duplicate froms while we're here
if mw.ustring.find(v, '^Q%d') then
if tFroms[v] then
tCats[6] = '[[Category:Taxonbars with duplicate from parameters]]'
tFroms[v] = tFroms[v] + 1
else
tFroms[v] = 1
iFroms = iFroms + 1
end
if iFroms == 2 then
tCats[14] = '[[Category:Taxonbars with multiple manual Wikidata items]]'
end
end
elseif mw.ustring.sub(lowerk,1,5) == 'title' then
local titleNumber = tonumber(mw.ustring.sub(lowerk,4,-1))
if titleNumber and titleNumber >= fromTitleCount then fromTitleCount = titleNumber end
elseif mw.ustring.lower(v) ~= 'no' and mw.ustring.lower(v) ~= 'yes' then
stringArgs = true
tCats[9] = '[[Category:Taxonbars with manual taxon IDs]]'
end
end
end --if type(k) == 'string'
end --for
--Check for unknown parameters
--create knowns list
local acceptableArgs = { from = true, } --master list of l/c acceptable args
for _, d in pairs( conf.databases ) do
if d[1] ~= 'Wikidata' then --made obsolete by from
acceptableArgs[mw.ustring.lower(d[1])] = true
end
end
for _, a in pairs( conf.aliases ) do
acceptableArgs[mw.ustring.lower(a[1])] = true
end
--create trimmed parents list
local baseParentArgs = {} --condensed list of l/c parent args w/o trailing #s
for k, _ in pairs( parentArgs ) do
if type(k) == 'string' then
local lowerk = mw.ustring.lower(k)
local base = mw.ustring.gsub(lowerk, '[%d]*$', '')
baseParentArgs[base] = true
elseif type(k) == 'number' then
tCats[13] = '[[Category:Taxonbars with unnamed parameters|'..k..']]'
end
end
--compare lists and spit out unknowns
local unknownParams = {}
for k, _ in pairs( baseParentArgs ) do
if acceptableArgs[k] == nil then
tCats[12] = '[[Category:Taxonbars with unknown parameters|'..k..']]'
unknownParams[#unknownParams + 1] = k
end
end
--warn if unknown(s) present
if #unknownParams > 0 then
local plural = 's'
local itthem = 'them'
if #unknownParams == 1 then
plural = ''
itthem = 'it'
end
errors = errors..require('Module:If preview')._warning({
mw.ustring.format(
'Unknown parameter%s <code>%s</code>. Please correct %s or consider adding %s to Wikidata.',
plural,
table.concat(unknownParams, '</code>, <code>'),
itthem,
itthem
)
})
end
--Append basionym to arg list, if not already provided
if currentItem then
local currentBasState = currentItem:getBestStatements('P566')[1] --basionym
if currentBasState then
local datavalue = currentBasState.mainsnak.datavalue
local basionymId = datavalue and datavalue.value.id
if basionymId and resolveEntity._id(basionymId) and tFroms[basionymId] == nil then
--check that basionym is a strict instance of taxon
local basionymItem = mw.wikibase.getEntity(basionymId)
if basionymItem then
for _, instanceOfState in pairs ( basionymItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_Strict[instanceOf] then
--housekeeping
tFroms[basionymId] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append basionym & track
parentArgs['from'..fromTitleCount] = basionymId
tCats[15] = '[[Category:Taxonbars with automatically added basionyms]]'
break
end end end end end end
--Append original combination to arg list, if not already provided
if currentItem then
local currentOCState = currentItem:getBestStatements('P1403')[1] --original combination
if currentOCState then
local orcoId = currentOCState.mainsnak.datavalue.value.id
if orcoId and resolveEntity._id(orcoId) and tFroms[orcoId] == nil then
--check that orco is a strict instance of taxon
local orcoItem = mw.wikibase.getEntity(orcoId)
if orcoItem then
for _, instanceOfState in pairs ( orcoItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_Strict[instanceOf] then
--housekeeping
tFroms[orcoId] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append orco & track
parentArgs['from'..fromTitleCount] = orcoId
tCats[16] = '[[Category:Taxonbars with automatically added original combinations]]'
break
end end end end end end
--Append monotypic genus/species to arg list of monotypic species/genus, if not already provided
if currentItem then
for _, instanceOfState in pairs ( currentItem:getBestStatements('P31') ) do --instance of
local taxonRank = nil
local parentItem = nil
local parentTaxon = nil
local parentTaxonRank = nil
local parentMonoGenus = nil --holy grail/tbd
local childItem = nil
local childTaxon = nil
local childTaxonRank = nil
local childMonoSpecies = nil --holy grail/tbd
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if instanceOf and (instanceOf == 'Q310890' or instanceOf == 'Q47487597') then --monotypic/fossil taxon
--find & save monoParent for future WP-side check
if monoParent == nil then
mono = true
local label = nil
local taxonName = currentItem:getBestStatements('P225')[1] --taxon name
if taxonName then
local datavalue = taxonName.mainsnak.datavalue
if datavalue then
label = datavalue.value
end
end
label = label or currentItem:getLabel()
if label then
monoParent = mw.ustring.gsub(label, ' .+', '')
end
end
local missingP171orP427sortkey = '*'
local taxonRankState = currentItem:getBestStatements('P105')[1] --taxon rank
if taxonRankState then taxonRank = taxonRankState.mainsnak.datavalue.value.id end
if taxonRank and taxonRank == 'Q7432' then --species
--is monotypic species; add genus
monoSpecies = true
local parentTaxonState = currentItem:getBestStatements('P171')[1] --parent taxon
if parentTaxonState then
parentTaxon = parentTaxonState.mainsnak.datavalue.value.id
else
tCats[19] = '[[Category:Taxonbars of monotypic species missing genera on Wikidata|'..missingP171orP427sortkey..']]'
break
end
--confirm parent taxon rank == genus & monotypic
if parentTaxon and resolveEntity._id(parentTaxon) then
parentItem = mw.wikibase.getEntity(parentTaxon)
if parentItem then
local parentTaxonRankState = parentItem:getBestStatements('P105')[1] --taxon rank
if parentTaxonRankState then parentTaxonRank = parentTaxonRankState.mainsnak.datavalue.value.id end
if parentTaxonRank and parentTaxonRank == 'Q34740' then --parent == genus
for _, parentInstanceOfState in pairs ( parentItem:getBestStatements('P31') ) do --instance of
local parentInstanceOf = parentInstanceOfState.mainsnak.datavalue.value.id
if parentInstanceOf and
(parentInstanceOf == 'Q310890' or parentInstanceOf == 'Q47487597') then --monotypic/fossil taxon
parentMonoGenus = parentTaxon --confirmed
break
end
end
if parentMonoGenus and tFroms[parentMonoGenus] == nil then
--housekeeping
tFroms[parentMonoGenus] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append monotypic genus & track
parentArgs['from'..fromTitleCount] = parentMonoGenus
tCats[18] = '[[Category:Taxonbars with automatically added monotypic genera]]'
break
end end end end
if parentMonoGenus == nil or tFroms[parentMonoGenus] == nil then
tCats[19] = '[[Category:Taxonbars of monotypic species missing genera on Wikidata]]'
break
end
elseif taxonRank and taxonRank == 'Q34740' then --genus
--is monotypic genus; add species
--(https://www.wikidata.org/wiki/Wikidata:Property_proposal/child_monotypic_taxon unnecessary thanks to P427!)
monoGenus = true
local childTaxonState = currentItem:getBestStatements('P427')[1] --taxonomic type
if childTaxonState then
childTaxon = childTaxonState.mainsnak.datavalue.value.id
else
tCats[20] = '[[Category:Taxonbars of monotypic genera missing species on Wikidata|'..missingP171orP427sortkey..']]'
break
end
--confirm child taxon rank == species & monotypic
if childTaxon and resolveEntity._id(childTaxon) then
childItem = mw.wikibase.getEntity(childTaxon)
if childItem then
local childTaxonRankState = childItem:getBestStatements('P105')[1] --taxon rank
if childTaxonRankState then childTaxonRank = childTaxonRankState.mainsnak.datavalue.value.id end
if childTaxonRank and childTaxonRank == 'Q7432' then --child == species
for _, childInstanceOfState in pairs ( childItem:getBestStatements('P31') ) do --instance of
local childInstanceOf = childInstanceOfState.mainsnak.datavalue.value.id
if childInstanceOf and
(childInstanceOf == 'Q310890' or childInstanceOf == 'Q47487597') then --monotypic/fossil taxon
childMonoSpecies = childTaxon --confirmed
break
end
end
if childMonoSpecies and tFroms[childMonoSpecies] == nil then
--housekeeping
tFroms[childMonoSpecies] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append monotypic species & track
parentArgs['from'..fromTitleCount] = childMonoSpecies
tCats[17] = '[[Category:Taxonbars with automatically added monotypic species]]'
break
end end end end
if childMonoSpecies == nil or tFroms[childMonoSpecies] == nil then
tCats[20] = '[[Category:Taxonbars of monotypic genera missing species on Wikidata]]'
break
end
end --monotype searches
end --monotype handling
end --for
end --if currentItem
--Setup navbox
local navboxParams = {
name = 'Taxonbar',
bodyclass = 'hlist',
listclass = '',
groupstyle = 'text-align: left;',
}
for f = 1, fromTitleCount, 1
do
local elements, title = {}, nil
--cleanup parameters
if parentArgs['from'..f] == '' then parentArgs['from'..f] = nil end
if parentArgs['title'..f] == '' then parentArgs['title'..f] = nil end
--remap aliases
for _, a in pairs( conf.aliases ) do
local alias, name = mw.ustring.lower(a[1]), mw.ustring.lower(a[2])
if parentArgs[alias..f] and parentArgs[name..f] == nil then
parentArgs[name..f] = parentArgs[alias..f]
parentArgs[alias..f] = nil
end
end
--Fetch Wikidata item
local from = resolveEntity._id(parentArgs['from'..f])
local item = mw.wikibase.getEntity(from)
local label = nil
if type(item) == 'table' then
local statements = item:getBestStatements('P225')[1] --taxon name
if statements then
local datavalue = statements.mainsnak.datavalue
if datavalue then
label = datavalue.value
end
end
label = label or item:getLabel()
else
if parentArgs['from'..f] then
tCats[1] = ''
tCats[5] = '[[Category:Taxonbars with invalid from parameters]]'
errors = errors..mw.text.tag('strong', {class='error'}, 'Error: "'..
parentArgs['from'..f]..'" is not a valid Wikidata entity ID.<br />')
end
end
if label and label ~= '' then
title = mw.title.new(label)
end
if title == nil and parentArgs['title'..f] then
title = mw.title.new(parentArgs['title'..f])
end
if title == nil and f == 1 then
title = currentTitle
end
if title then
if isNilOrEmpty( parentArgs['wikidata'..f] ) and
(title.namespace == 0) then
if parentArgs['from'..f] then
parentArgs['wikidata'..f] = parentArgs['from'..f]
elseif item then
parentArgs['wikidata'..f] = item.id
end
end
if title.namespace == 0 or stringArgs then --only in mainspace or if manual overrides exist
local sourceCount = 0
for _, params in pairs( conf.databases ) do
params[1] = mw.ustring.lower(params[1])
local propId = params[3]
--Wikidata fallback if requested
if (item and item.claims) and
(type(propId) == 'string' or (type(propId) == 'number' and propId > 0))
then
local wikidataId = getIdFromWikidata( item, 'P'..propId )
local v = parentArgs[params[1]..f]
if wikidataId then
if isNilOrEmpty(v) then
parentArgs[params[1]..f] = wikidataId
else
if v and v ~= 'no' and v ~= wikidataId then
tCats[11] = '[[Category:Taxonbars with manual taxon IDs differing from Wikidata]]'
elseif v and v == wikidataId then
tCats[10] = '[[Category:Taxonbars with manual taxon IDs identical to Wikidata]]'
end
end
end
end
if (item and item.claims) and
( (type(propId) == 'number' and propId < 0))
then
local wikidataId = getIdFromWikidata( item, 'P'..-propId )
--mw.addWarning ("propId=" .. tostring(propId) .. "; wikidata=" .. tostring(wikidataId))
local v = parentArgs[params[1]..f]
if v == 'yes' then
if wikidataId then
parentArgs[params[1]..f] = wikidataId
else
parentArgs[params[1]..f] = nil -- don't want to use 'yes' as id
end
end
end
local val = parentArgs[params[1]..f]
if val and val ~= '' and mw.ustring.lower(val) ~= 'no' then
if type(propId) == 'number' then
if propId < 0 then propId = -propId end --allow link
if propId > 0 then --link
table.insert( elements, createRow( params[1], params[2]..':', val, getLink( propId, params[1], val ).text, true ) )
if params[1] == 'fossilworks' then -- fossilworks being use to link to PBDB
if elements[#elements] == elements[#elements-1] then -- check if identical PBDB entry already set
--mw.addWarning("item has both Fossilworks and PBDB identifers:" .. val)
elements[#elements] = nil
end
end
else --propId == 0; no link
table.insert( elements, createRow( params[1], params[2]..':', val, val, true ) )
end
else
table.insert( elements, createRow( params[1], params[2]..':', val, getLink( propId, params[1], val ).text, true ) )
end
if params[1] ~= 'wikidata' and params[1] ~= 'wikispecies' then
sourceCount = sourceCount + 1
end
end
end --for _, params in pairs( conf.databases ) do
if sourceCount >= 45 then tCats[28] = '[[Category:Taxonbars with 45+ taxon IDs]]'
elseif sourceCount >= 40 then tCats[27] = '[[Category:Taxonbars with 40–44 taxon IDs]]' --endashes
elseif sourceCount >= 35 then tCats[26] = '[[Category:Taxonbars with 35–39 taxon IDs]]'
elseif sourceCount >= 30 then tCats[25] = '[[Category:Taxonbars with 30–34 taxon IDs]]'
elseif sourceCount >= 25 then tCats[24] = '[[Category:Taxonbars with 25–29 taxon IDs]]'
elseif sourceCount >= 20 then tCats[23] = '[[Category:Taxonbars with 20–24 taxon IDs]]'
end
--Generate navbox title
if sourceCount > 0 then
rowCount = rowCount + 1
if firstRow == 0 then firstRow = f end
--set title from wikidata if it doesn't exist
if isNilOrEmpty( parentArgs['title'..f] ) then
parentArgs['noTitle'..f] = true
parentArgs['title'..f] = title.text
end
--if it exists now, set row heading to title
if not isNilOrEmpty( parentArgs['title'..f] ) then
navboxParams['group'..f] = TaxonItalics.italicizeTaxonName(parentArgs['title'..f], false)
else
navboxParams['group'..f] = ''
end
navboxParams['list'..f] = table.concat( elements )
elseif currentEntityId and (currentEntityId == parentArgs['from'..f] or fromTitleCount == 1) then
tCats[21] = '[[Category:Taxonbars without primary Wikidata taxon IDs]]'
else
tCats[22] = '[[Category:Taxonbars without secondary Wikidata taxon IDs]]'
end
--Tracking cats
if not isNilOrEmpty( parentArgs['from'..f] ) then
tCats[1] = '' --blank "missing from" if 'from' exists
if parentArgs['from'..f] == currentEntityId then
tCats[2] = '' --blank "desynced" if 'from' matches current page
end
end
if tCats[1] ~= '' then
tCats[2] = '' --cannot be "desynced" if no 'from' params
end
if mono and monoWPok == nil then
if monoSpecies then
if monoParent == label then
monoWPok = true
tCats[29] = ''
else
tCats[29] = '[[Category:Taxonbars of monotypic species missing genera on Wikipedia]]'
end
end
if monoGenus then
local labelGenus = mw.ustring.gsub(label, ' .+', '')
local labelIsBinomial = mw.ustring.match(label, '^[A-Z][a-z]+ [a-z]+')
if labelIsBinomial and monoParent == labelGenus then
monoWPok = true
tCats[30] = ''
else
tCats[30] = '[[Category:Taxonbars of monotypic genera missing species on Wikipedia]]'
end
end
end
end --if title.namespace == 0 or stringArgs
end --if title
end --for f = 1, fromTitleCount, 1
if rowCount > 0 then
local Navbox = require('Module:Navbox')
if rowCount > 1 then
--remove duplicates and don't bother moving page title to top
local rowIDs = {}
for f = 1, fromTitleCount, 1
do
if not isNilOrEmpty( parentArgs['title'..f] ) then
if rowIDs[parentArgs['wikidata'..f]] then --remove duplicate
navboxParams['group'..f] = nil
navboxParams['list'..f] = nil
else
rowIDs[parentArgs['wikidata'..f]] = true
end
end
end
if parentArgs['title'..2] and parentArgs['title'..2] == currentTitle.text then
if currentItem and parentArgs['from'..2] == currentItem['id'] then
tCats[8] = '[[Category:Taxonbars with from2 matching article title & QID]]'
else
tCats[7] = '[[Category:Taxonbars with from2 matching article title]]'
end
end
--adjust navbox for number of rows
navboxParams['title'] = '[[Help:Taxon identifiers|Taksonamiya şınasnayoği]]'
if rowCount >= 4 then
navboxParams['navbar'] = 'plain'
else
navboxParams['state'] = 'off'
navboxParams['navbar'] = 'off'
end
elseif parentArgs['noTitle'..firstRow] then --show title & taxon for 1-row taxonbars, per talk
navboxParams['title'] = '[[Help:Taxon identifiers|Taxon identifiers]]'
navboxParams['state'] = 'off'
navboxParams['navbar'] = 'off'
else
navboxParams['group'..firstRow] = '[[Help:Taxon identifiers|Şınasnayışê taksoni]]<br />'..navboxParams['group'..firstRow]
end
--return navbox
outString = Navbox._navbox(navboxParams)
end --if rowCount > 0
--Add categories
if string.sub(currentTitle.subpageText,1,9) == 'testcases' then parentArgs['demo'] = true end
if not isNilOrEmpty( parentArgs['demo'] ) then
outString = outString..mw.text.nowiki(table.concat(tCats))..'<br />'
elseif currentTitle.namespace == 0 then
outString = outString..table.concat(tCats)
end
return outString..errors
end
function p.taxonbar(frame) return p.authorityControlTaxon( frame:newChild{title = frame:getTitle()} ) end
return p
szpdoubpykslrktnjuj3vvu7pvndn7g
557907
557905
2026-10-03T17:59:06Z
Maviulke
34834
557907
Scribunto
text/plain
require('strict')
local conf = require( 'Module:Taxonbar/conf' ) --configuration module
local TaxonItalics = require( 'Module:TaxonItalics' ) --use a function to conditionally italicize taxon names
--[[==========================================================================]]
--[[ Local functions ]]
--[[==========================================================================]]
local function isNilOrEmpty( thing )
if thing == nil or thing == '' then
return true
end
return nil
end
local function getIdFromWikidata( item, property )
local id = nil
if property == 'PWikispecies:$1' then
local siteLinks = item.sitelinks
if siteLinks then
local speciesWiki = item.sitelinks.specieswiki
if speciesWiki then
id = speciesWiki.title
end
end
return id
elseif item.claims[property] == nil then
return id
end
--[[ this code picks up deprecated values on wikidata; better to use getBestStatements
for _, statement in pairs( item.claims[property] ) do
if statement.mainsnak.datavalue then
id = statement.mainsnak.datavalue.value
break
end
end
]]
local statements = item:getBestStatements(property)[1]
if statements and
statements.mainsnak and
statements.mainsnak.datavalue and
statements.mainsnak.datavalue.value
then
id = statements.mainsnak.datavalue.value
end
return id
end
local function getLink( property, db, val )
local link, returnVal = '', {}
returnVal.isError = false
if mw.ustring.find( val, '//' ) then
link = val
else
if type(property) == 'number' and property > 0 then
local entityObject = mw.wikibase.getEntity('P'..property)
local dataType
if entityObject then dataType = entityObject.datatype
else returnVal.isError = true end
if dataType == 'external-id' then
local formatterURL = nil
if property == 3746 or --Wildflowers of Israel
property == 3795 or --Flora of Israel Online
property == 5397 --Tierstimmenarchiv
then
formatterURL = entityObject:getBestStatements('P1630')[2] --use 2nd formatterURL for English version
end
if formatterURL == nil then formatterURL = entityObject:getBestStatements('P1630')[1] end --default to [1]
if formatterURL then
if formatterURL.mainsnak.datavalue and formatterURL.mainsnak.datavalue.value then --nil check for ABA
link = formatterURL.mainsnak.datavalue.value
end
end
if db == 'bow' then -- for birds of world which uses eBird identifier
link = 'https://birdsoftheworld.org/bow/species/$1'
elseif db == 'speciesfungorum' then -- SpeciesFungorum uses Index Fungorum identifier
link = 'https://www.speciesfungorum.org/Names/NamesRecord.asp?RecordID=$1'
elseif db == 'fossilworks' then
link = 'https://paleobiodb.org/classic/basicTaxonInfo?taxon_no=$1'
end
elseif dataType == 'url' then
local subjectItem = entityObject:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
if officialWebsite then link = officialWebsite.mainsnak.datavalue.value end
end
elseif dataType == 'string' then
local formatterURL = entityObject:getBestStatements('P1630')[1]
if formatterURL then
link = formatterURL.mainsnak.datavalue.value
else
local subjectItem = entityObject:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
if officialWebsite then link = officialWebsite.mainsnak.datavalue.value end
end
end
else
returnVal.isError = true
end
elseif type(property) == 'string' then
link = property
end
--local valurl = val
local valurl = mw.uri.encode( val, 'PATH' )
valurl = string.gsub (valurl, '%%2F', '/') --escape '/' (e.g. issue with P5354); see wikidata T128078 and https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Wikibase/+/664820/3/lib/includes/PropertyInfoSnakUrlExpander.php
if type(property) == 'number' then
--doublecheck language for Wildflowers of Israel ID
if property == 3746 then link = mw.ustring.gsub(link, '/hebrew/', '/english/') end
--format spaces in PfaF binomials, e.g. "Elaeagnus x ebbingei"
if property == 4301 then valurl = mw.ustring.gsub(valurl, '%%20', '+') end
end
valurl = mw.ustring.gsub(valurl,'%%','%%%%')
link = mw.ustring.gsub(link, '$1', valurl)
end
link = mw.ustring.gsub(link, '^[Hh][Tt][Tt][Pp]([Ss]?)://', 'http%1://') --fix wikidata URL
val = mw.ustring.match(val, '([^=/]*)/?$') --get display name from end of URL
if mw.ustring.find( link, '//' ) then
returnVal.text = '['..link..' '..mw.text.encode(mw.uri.decode(val, 'PATH'),'%[%]')..']'
elseif link == '' then
returnVal.text = val
else
returnVal.text = '<span class="external">[['..link..'|'..val..']]</span>'
end
return returnVal
end
local function createRow( id, label, rawValue, link, withUid )
if link then
local outStr = '*<span style="white-space:nowrap;">'..label..' <span'
if withUid then outStr = outStr..' class="uid"' end
return outStr..'>'..link..'</span></span>\n'
else
return '* '..mw.text.tag('span', {class='error'}, 'The identifier '..id..' '..rawValue..' is not valid.')..'\n'
end
end
local function copyTable(inTable)
if type(inTable) ~= 'table' then return inTable end
local outTable = setmetatable({}, getmetatable(inTable))
for key, value in pairs (inTable) do outTable[copyTable(key)] = copyTable(value) end
return outTable
end
local p = {}
--[[==========================================================================]]
--[[ Main ]]
--[[==========================================================================]]
function p.authorityControlTaxon( frame )
local resolveEntity = require( 'Module:ResolveEntityId' )
local whitelist = require( 'Module:Taxonbar/whitelist' ).whitelist --to create acceptableInstanceOf_Strict & acceptableInstanceOf_All
local parentArgs = copyTable(frame:getParent().args)
local currentTitle = mw.title.getCurrentTitle()
local currentEntityId = mw.wikibase.getEntityIdForCurrentPage()
local stringArgs = false
local fromTitleCount, firstRow, rowCount = 1, 0, 0
local outString, errors = '', ''
local iFroms = 0 --integer size of tFroms, b/c Lua
local tFroms = {} --non-sequential table of unique froms
local tCats = {
'[[Category:Taxonbars without from parameter]]',
'[[Category:Taxonbars desynced from Wikidata]]',
'', -- [3] placeholder for [[Category:Taxonbar pages requiring a Wikidata item]]
'', -- [4] placeholder for [[Category:Taxonbars on possible non-taxon pages]]
'', -- [5] placeholder for [[Category:Taxonbars with invalid from parameters]]
'', -- [6] placeholder for [[Category:Taxonbars with duplicate from parameters]]
'', -- [7] placeholder for [[Category:Taxonbars with from2 matching article title]]
'', -- [8] placeholder for [[Category:Taxonbars with from2 matching article title & QID]]
'', -- [9] placeholder for [[Category:Taxonbars with manual taxon IDs]]
'', --[10] placeholder for [[Category:Taxonbars with manual taxon IDs identical to Wikidata]]
'', --[11] placeholder for [[Category:Taxonbars with manual taxon IDs differing from Wikidata]]
'', --[12] placeholder for [[Category:Taxonbars with unknown parameters]]
'', --[13] placeholder for [[Category:Taxonbars with unnamed parameters]]
'', --[14] placeholder for [[Category:Taxonbars with multiple manual Wikidata items]]
'', --[15] placeholder for [[Category:Taxonbars with automatically added basionyms]]
'', --[16] placeholder for [[Category:Taxonbars with automatically added original combinations]]
'', --[17] placeholder for [[Category:Taxonbars with automatically added monotypic species]]
'', --[18] placeholder for [[Category:Taxonbars with automatically added monotypic genera]]
'', --[19] placeholder for [[Category:Taxonbars of monotypic species missing genera on Wikidata]]
'', --[20] placeholder for [[Category:Taxonbars of monotypic genera missing species on Wikidata]]
'', --[21] placeholder for [[Category:Taxonbars without primary Wikidata taxon IDs]]
'', --[22] placeholder for [[Category:Taxonbars without secondary Wikidata taxon IDs]]
'', --[23] placeholder for [[Category:Taxonbars with 20–24 taxon IDs]]
'', --[24] placeholder for [[Category:Taxonbars with 25–29 taxon IDs]]
'', --[25] placeholder for [[Category:Taxonbars with 30–34 taxon IDs]]
'', --[26] placeholder for [[Category:Taxonbars with 35–39 taxon IDs]]
'', --[27] placeholder for [[Category:Taxonbars with 40–44 taxon IDs]]
'', --[28] placeholder for [[Category:Taxonbars with 45+ taxon IDs]]
'', --[29] placeholder for [[Category:Taxonbars of monotypic species missing genera on Wikipedia]]
'', --[30] placeholder for [[Category:Taxonbars of monotypic genera missing species on Wikipedia]]
}
local acceptableInstanceOf_Strict = whitelist{ args = { 'strict' } }
local acceptableInstanceOf_All = whitelist{ args = { 'all' } }
--monotypic flags for WP-side check
local mono = nil
local monoWPok = nil
local monoGenus = nil
local monoSpecies = nil
local monoParent = nil --parent taxon name
--Assess the page's relationship with Wikidata
local currentItem = nil
if currentTitle.namespace == 10 then --i.e. Module:Taxonbar/sandbox, Template:Taxonbar/doc, etc.
if resolveEntity._id(parentArgs['from']) then
currentItem = mw.wikibase.getEntity(parentArgs['from'])
end
if currentItem == nil then
if resolveEntity._id(parentArgs['from1']) then
currentItem = mw.wikibase.getEntity(parentArgs['from1'])
end
end
elseif resolveEntity._id(currentEntityId) then
currentItem = mw.wikibase.getEntity(currentEntityId)
else --currentEntityId == nil/unresolvable
tCats[3] = '[[Category:Taxonbar pages requiring a Wikidata item]]'
end
if currentItem then
tCats[4] = '[[Category:Taxonbars on possible non-taxon pages]]' --unset if acceptable found
for _, instanceOfState in pairs ( currentItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_All[instanceOf] then
tCats[4] = ''
break
end
end
end
--Cleanup args
for k, v in pairs( frame:getParent().args ) do
if type(k) == 'string' then
--make args case insensitive
local lowerk = mw.ustring.lower(k)
if isNilOrEmpty( parentArgs[lowerk] ) then
parentArgs[k] = nil
parentArgs[lowerk] = v
end
--remap abc to abc1
if mw.ustring.find(lowerk,'%d$') == nil then --if no number at end of param
if isNilOrEmpty( parentArgs[lowerk..'1'] ) then
parentArgs[lowerk] = nil
lowerk = lowerk..'1'
parentArgs[lowerk] = v
end
end
if v and v ~= '' then
--remap 'for' to 'title'
if mw.ustring.sub(lowerk,1,3) == 'for' then
local forTitle = mw.ustring.gsub(lowerk,'^for','title',1)
if isNilOrEmpty( parentArgs[forTitle] ) then
parentArgs[lowerk] = nil
lowerk = forTitle
parentArgs[lowerk] = v
end
end
--find highest from or title param
if mw.ustring.sub(lowerk,1,4) == 'from' then
local fromNumber = tonumber(mw.ustring.sub(lowerk,5,-1))
if fromNumber and fromNumber >= fromTitleCount then fromTitleCount = fromNumber end
--look for duplicate froms while we're here
if mw.ustring.find(v, '^Q%d') then
if tFroms[v] then
tCats[6] = '[[Category:Taxonbars with duplicate from parameters]]'
tFroms[v] = tFroms[v] + 1
else
tFroms[v] = 1
iFroms = iFroms + 1
end
if iFroms == 2 then
tCats[14] = '[[Category:Taxonbars with multiple manual Wikidata items]]'
end
end
elseif mw.ustring.sub(lowerk,1,5) == 'title' then
local titleNumber = tonumber(mw.ustring.sub(lowerk,4,-1))
if titleNumber and titleNumber >= fromTitleCount then fromTitleCount = titleNumber end
elseif mw.ustring.lower(v) ~= 'no' and mw.ustring.lower(v) ~= 'yes' then
stringArgs = true
tCats[9] = '[[Category:Taxonbars with manual taxon IDs]]'
end
end
end --if type(k) == 'string'
end --for
--Check for unknown parameters
--create knowns list
local acceptableArgs = { from = true, } --master list of l/c acceptable args
for _, d in pairs( conf.databases ) do
if d[1] ~= 'Wikidata' then --made obsolete by from
acceptableArgs[mw.ustring.lower(d[1])] = true
end
end
for _, a in pairs( conf.aliases ) do
acceptableArgs[mw.ustring.lower(a[1])] = true
end
--create trimmed parents list
local baseParentArgs = {} --condensed list of l/c parent args w/o trailing #s
for k, _ in pairs( parentArgs ) do
if type(k) == 'string' then
local lowerk = mw.ustring.lower(k)
local base = mw.ustring.gsub(lowerk, '[%d]*$', '')
baseParentArgs[base] = true
elseif type(k) == 'number' then
tCats[13] = '[[Category:Taxonbars with unnamed parameters|'..k..']]'
end
end
--compare lists and spit out unknowns
local unknownParams = {}
for k, _ in pairs( baseParentArgs ) do
if acceptableArgs[k] == nil then
tCats[12] = '[[Category:Taxonbars with unknown parameters|'..k..']]'
unknownParams[#unknownParams + 1] = k
end
end
--warn if unknown(s) present
if #unknownParams > 0 then
local plural = 's'
local itthem = 'them'
if #unknownParams == 1 then
plural = ''
itthem = 'it'
end
errors = errors..require('Module:If preview')._warning({
mw.ustring.format(
'Unknown parameter%s <code>%s</code>. Please correct %s or consider adding %s to Wikidata.',
plural,
table.concat(unknownParams, '</code>, <code>'),
itthem,
itthem
)
})
end
--Append basionym to arg list, if not already provided
if currentItem then
local currentBasState = currentItem:getBestStatements('P566')[1] --basionym
if currentBasState then
local datavalue = currentBasState.mainsnak.datavalue
local basionymId = datavalue and datavalue.value.id
if basionymId and resolveEntity._id(basionymId) and tFroms[basionymId] == nil then
--check that basionym is a strict instance of taxon
local basionymItem = mw.wikibase.getEntity(basionymId)
if basionymItem then
for _, instanceOfState in pairs ( basionymItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_Strict[instanceOf] then
--housekeeping
tFroms[basionymId] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append basionym & track
parentArgs['from'..fromTitleCount] = basionymId
tCats[15] = '[[Category:Taxonbars with automatically added basionyms]]'
break
end end end end end end
--Append original combination to arg list, if not already provided
if currentItem then
local currentOCState = currentItem:getBestStatements('P1403')[1] --original combination
if currentOCState then
local orcoId = currentOCState.mainsnak.datavalue.value.id
if orcoId and resolveEntity._id(orcoId) and tFroms[orcoId] == nil then
--check that orco is a strict instance of taxon
local orcoItem = mw.wikibase.getEntity(orcoId)
if orcoItem then
for _, instanceOfState in pairs ( orcoItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_Strict[instanceOf] then
--housekeeping
tFroms[orcoId] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append orco & track
parentArgs['from'..fromTitleCount] = orcoId
tCats[16] = '[[Category:Taxonbars with automatically added original combinations]]'
break
end end end end end end
--Append monotypic genus/species to arg list of monotypic species/genus, if not already provided
if currentItem then
for _, instanceOfState in pairs ( currentItem:getBestStatements('P31') ) do --instance of
local taxonRank = nil
local parentItem = nil
local parentTaxon = nil
local parentTaxonRank = nil
local parentMonoGenus = nil --holy grail/tbd
local childItem = nil
local childTaxon = nil
local childTaxonRank = nil
local childMonoSpecies = nil --holy grail/tbd
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if instanceOf and (instanceOf == 'Q310890' or instanceOf == 'Q47487597') then --monotypic/fossil taxon
--find & save monoParent for future WP-side check
if monoParent == nil then
mono = true
local label = nil
local taxonName = currentItem:getBestStatements('P225')[1] --taxon name
if taxonName then
local datavalue = taxonName.mainsnak.datavalue
if datavalue then
label = datavalue.value
end
end
label = label or currentItem:getLabel()
if label then
monoParent = mw.ustring.gsub(label, ' .+', '')
end
end
local missingP171orP427sortkey = '*'
local taxonRankState = currentItem:getBestStatements('P105')[1] --taxon rank
if taxonRankState then taxonRank = taxonRankState.mainsnak.datavalue.value.id end
if taxonRank and taxonRank == 'Q7432' then --species
--is monotypic species; add genus
monoSpecies = true
local parentTaxonState = currentItem:getBestStatements('P171')[1] --parent taxon
if parentTaxonState then
parentTaxon = parentTaxonState.mainsnak.datavalue.value.id
else
tCats[19] = '[[Category:Taxonbars of monotypic species missing genera on Wikidata|'..missingP171orP427sortkey..']]'
break
end
--confirm parent taxon rank == genus & monotypic
if parentTaxon and resolveEntity._id(parentTaxon) then
parentItem = mw.wikibase.getEntity(parentTaxon)
if parentItem then
local parentTaxonRankState = parentItem:getBestStatements('P105')[1] --taxon rank
if parentTaxonRankState then parentTaxonRank = parentTaxonRankState.mainsnak.datavalue.value.id end
if parentTaxonRank and parentTaxonRank == 'Q34740' then --parent == genus
for _, parentInstanceOfState in pairs ( parentItem:getBestStatements('P31') ) do --instance of
local parentInstanceOf = parentInstanceOfState.mainsnak.datavalue.value.id
if parentInstanceOf and
(parentInstanceOf == 'Q310890' or parentInstanceOf == 'Q47487597') then --monotypic/fossil taxon
parentMonoGenus = parentTaxon --confirmed
break
end
end
if parentMonoGenus and tFroms[parentMonoGenus] == nil then
--housekeeping
tFroms[parentMonoGenus] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append monotypic genus & track
parentArgs['from'..fromTitleCount] = parentMonoGenus
tCats[18] = '[[Category:Taxonbars with automatically added monotypic genera]]'
break
end end end end
if parentMonoGenus == nil or tFroms[parentMonoGenus] == nil then
tCats[19] = '[[Category:Taxonbars of monotypic species missing genera on Wikidata]]'
break
end
elseif taxonRank and taxonRank == 'Q34740' then --genus
--is monotypic genus; add species
--(https://www.wikidata.org/wiki/Wikidata:Property_proposal/child_monotypic_taxon unnecessary thanks to P427!)
monoGenus = true
local childTaxonState = currentItem:getBestStatements('P427')[1] --taxonomic type
if childTaxonState then
childTaxon = childTaxonState.mainsnak.datavalue.value.id
else
tCats[20] = '[[Category:Taxonbars of monotypic genera missing species on Wikidata|'..missingP171orP427sortkey..']]'
break
end
--confirm child taxon rank == species & monotypic
if childTaxon and resolveEntity._id(childTaxon) then
childItem = mw.wikibase.getEntity(childTaxon)
if childItem then
local childTaxonRankState = childItem:getBestStatements('P105')[1] --taxon rank
if childTaxonRankState then childTaxonRank = childTaxonRankState.mainsnak.datavalue.value.id end
if childTaxonRank and childTaxonRank == 'Q7432' then --child == species
for _, childInstanceOfState in pairs ( childItem:getBestStatements('P31') ) do --instance of
local childInstanceOf = childInstanceOfState.mainsnak.datavalue.value.id
if childInstanceOf and
(childInstanceOf == 'Q310890' or childInstanceOf == 'Q47487597') then --monotypic/fossil taxon
childMonoSpecies = childTaxon --confirmed
break
end
end
if childMonoSpecies and tFroms[childMonoSpecies] == nil then
--housekeeping
tFroms[childMonoSpecies] = 1
iFroms = iFroms + 1
fromTitleCount = fromTitleCount + 1
--append monotypic species & track
parentArgs['from'..fromTitleCount] = childMonoSpecies
tCats[17] = '[[Category:Taxonbars with automatically added monotypic species]]'
break
end end end end
if childMonoSpecies == nil or tFroms[childMonoSpecies] == nil then
tCats[20] = '[[Category:Taxonbars of monotypic genera missing species on Wikidata]]'
break
end
end --monotype searches
end --monotype handling
end --for
end --if currentItem
--Setup navbox
local navboxParams = {
name = 'Taxonbar',
bodyclass = 'hlist',
listclass = '',
groupstyle = 'text-align: left;',
}
for f = 1, fromTitleCount, 1
do
local elements, title = {}, nil
--cleanup parameters
if parentArgs['from'..f] == '' then parentArgs['from'..f] = nil end
if parentArgs['title'..f] == '' then parentArgs['title'..f] = nil end
--remap aliases
for _, a in pairs( conf.aliases ) do
local alias, name = mw.ustring.lower(a[1]), mw.ustring.lower(a[2])
if parentArgs[alias..f] and parentArgs[name..f] == nil then
parentArgs[name..f] = parentArgs[alias..f]
parentArgs[alias..f] = nil
end
end
--Fetch Wikidata item
local from = resolveEntity._id(parentArgs['from'..f])
local item = mw.wikibase.getEntity(from)
local label = nil
if type(item) == 'table' then
local statements = item:getBestStatements('P225')[1] --taxon name
if statements then
local datavalue = statements.mainsnak.datavalue
if datavalue then
label = datavalue.value
end
end
label = label or item:getLabel()
else
if parentArgs['from'..f] then
tCats[1] = ''
tCats[5] = '[[Category:Taxonbars with invalid from parameters]]'
errors = errors..mw.text.tag('strong', {class='error'}, 'Error: "'..
parentArgs['from'..f]..'" is not a valid Wikidata entity ID.<br />')
end
end
if label and label ~= '' then
title = mw.title.new(label)
end
if title == nil and parentArgs['title'..f] then
title = mw.title.new(parentArgs['title'..f])
end
if title == nil and f == 1 then
title = currentTitle
end
if title then
if isNilOrEmpty( parentArgs['wikidata'..f] ) and
(title.namespace == 0) then
if parentArgs['from'..f] then
parentArgs['wikidata'..f] = parentArgs['from'..f]
elseif item then
parentArgs['wikidata'..f] = item.id
end
end
if title.namespace == 0 or stringArgs then --only in mainspace or if manual overrides exist
local sourceCount = 0
for _, params in pairs( conf.databases ) do
params[1] = mw.ustring.lower(params[1])
local propId = params[3]
--Wikidata fallback if requested
if (item and item.claims) and
(type(propId) == 'string' or (type(propId) == 'number' and propId > 0))
then
local wikidataId = getIdFromWikidata( item, 'P'..propId )
local v = parentArgs[params[1]..f]
if wikidataId then
if isNilOrEmpty(v) then
parentArgs[params[1]..f] = wikidataId
else
if v and v ~= 'no' and v ~= wikidataId then
tCats[11] = '[[Category:Taxonbars with manual taxon IDs differing from Wikidata]]'
elseif v and v == wikidataId then
tCats[10] = '[[Category:Taxonbars with manual taxon IDs identical to Wikidata]]'
end
end
end
end
if (item and item.claims) and
( (type(propId) == 'number' and propId < 0))
then
local wikidataId = getIdFromWikidata( item, 'P'..-propId )
--mw.addWarning ("propId=" .. tostring(propId) .. "; wikidata=" .. tostring(wikidataId))
local v = parentArgs[params[1]..f]
if v == 'yes' then
if wikidataId then
parentArgs[params[1]..f] = wikidataId
else
parentArgs[params[1]..f] = nil -- don't want to use 'yes' as id
end
end
end
local val = parentArgs[params[1]..f]
if val and val ~= '' and mw.ustring.lower(val) ~= 'no' then
if type(propId) == 'number' then
if propId < 0 then propId = -propId end --allow link
if propId > 0 then --link
table.insert( elements, createRow( params[1], params[2]..':', val, getLink( propId, params[1], val ).text, true ) )
if params[1] == 'fossilworks' then -- fossilworks being use to link to PBDB
if elements[#elements] == elements[#elements-1] then -- check if identical PBDB entry already set
--mw.addWarning("item has both Fossilworks and PBDB identifers:" .. val)
elements[#elements] = nil
end
end
else --propId == 0; no link
table.insert( elements, createRow( params[1], params[2]..':', val, val, true ) )
end
else
table.insert( elements, createRow( params[1], params[2]..':', val, getLink( propId, params[1], val ).text, true ) )
end
if params[1] ~= 'wikidata' and params[1] ~= 'wikispecies' then
sourceCount = sourceCount + 1
end
end
end --for _, params in pairs( conf.databases ) do
if sourceCount >= 45 then tCats[28] = '[[Category:Taxonbars with 45+ taxon IDs]]'
elseif sourceCount >= 40 then tCats[27] = '[[Category:Taxonbars with 40–44 taxon IDs]]' --endashes
elseif sourceCount >= 35 then tCats[26] = '[[Category:Taxonbars with 35–39 taxon IDs]]'
elseif sourceCount >= 30 then tCats[25] = '[[Category:Taxonbars with 30–34 taxon IDs]]'
elseif sourceCount >= 25 then tCats[24] = '[[Category:Taxonbars with 25–29 taxon IDs]]'
elseif sourceCount >= 20 then tCats[23] = '[[Category:Taxonbars with 20–24 taxon IDs]]'
end
--Generate navbox title
if sourceCount > 0 then
rowCount = rowCount + 1
if firstRow == 0 then firstRow = f end
--set title from wikidata if it doesn't exist
if isNilOrEmpty( parentArgs['title'..f] ) then
parentArgs['noTitle'..f] = true
parentArgs['title'..f] = title.text
end
--if it exists now, set row heading to title
if not isNilOrEmpty( parentArgs['title'..f] ) then
navboxParams['group'..f] = TaxonItalics.italicizeTaxonName(parentArgs['title'..f], false)
else
navboxParams['group'..f] = ''
end
navboxParams['list'..f] = table.concat( elements )
elseif currentEntityId and (currentEntityId == parentArgs['from'..f] or fromTitleCount == 1) then
tCats[21] = '[[Category:Taxonbars without primary Wikidata taxon IDs]]'
else
tCats[22] = '[[Category:Taxonbars without secondary Wikidata taxon IDs]]'
end
--Tracking cats
if not isNilOrEmpty( parentArgs['from'..f] ) then
tCats[1] = '' --blank "missing from" if 'from' exists
if parentArgs['from'..f] == currentEntityId then
tCats[2] = '' --blank "desynced" if 'from' matches current page
end
end
if tCats[1] ~= '' then
tCats[2] = '' --cannot be "desynced" if no 'from' params
end
if mono and monoWPok == nil then
if monoSpecies then
if monoParent == label then
monoWPok = true
tCats[29] = ''
else
tCats[29] = '[[Category:Taxonbars of monotypic species missing genera on Wikipedia]]'
end
end
if monoGenus then
local labelGenus = mw.ustring.gsub(label, ' .+', '')
local labelIsBinomial = mw.ustring.match(label, '^[A-Z][a-z]+ [a-z]+')
if labelIsBinomial and monoParent == labelGenus then
monoWPok = true
tCats[30] = ''
else
tCats[30] = '[[Category:Taxonbars of monotypic genera missing species on Wikipedia]]'
end
end
end
end --if title.namespace == 0 or stringArgs
end --if title
end --for f = 1, fromTitleCount, 1
if rowCount > 0 then
local Navbox = require('Module:Navbox')
if rowCount > 1 then
--remove duplicates and don't bother moving page title to top
local rowIDs = {}
for f = 1, fromTitleCount, 1
do
if not isNilOrEmpty( parentArgs['title'..f] ) then
if rowIDs[parentArgs['wikidata'..f]] then --remove duplicate
navboxParams['group'..f] = nil
navboxParams['list'..f] = nil
else
rowIDs[parentArgs['wikidata'..f]] = true
end
end
end
if parentArgs['title'..2] and parentArgs['title'..2] == currentTitle.text then
if currentItem and parentArgs['from'..2] == currentItem['id'] then
tCats[8] = '[[Category:Taxonbars with from2 matching article title & QID]]'
else
tCats[7] = '[[Category:Taxonbars with from2 matching article title]]'
end
end
--adjust navbox for number of rows
navboxParams['title'] = '[[Help:Taxon identifiers|Taksonamiya şınasnayoği]]'
if rowCount >= 4 then
navboxParams['navbar'] = 'plain'
else
navboxParams['state'] = 'off'
navboxParams['navbar'] = 'off'
end
elseif parentArgs['noTitle'..firstRow] then --show title & taxon for 1-row taxonbars, per talk
navboxParams['title'] = 'Taksonomiya şınasnayoği'
navboxParams['state'] = 'off'
navboxParams['navbar'] = 'off'
else
navboxParams['group'..firstRow] = '[[Help:Taxon identifiers|Şınasnayışê taksoni]]<br />'..navboxParams['group'..firstRow]
end
--return navbox
outString = Navbox._navbox(navboxParams)
end --if rowCount > 0
--Add categories
if string.sub(currentTitle.subpageText,1,9) == 'testcases' then parentArgs['demo'] = true end
if not isNilOrEmpty( parentArgs['demo'] ) then
outString = outString..mw.text.nowiki(table.concat(tCats))..'<br />'
elseif currentTitle.namespace == 0 then
outString = outString..table.concat(tCats)
end
return outString..errors
end
function p.taxonbar(frame) return p.authorityControlTaxon( frame:newChild{title = frame:getTitle()} ) end
return p
lfeq89pubuc20ydh2ab20a9h9vxlxvf
Everyday Is Christmas (album)
0
68582
557914
516466
2026-10-03T18:21:37Z
Maviulke
34834
557914
wikitext
text/x-wiki
{{Databox}}
'''''Everyday Is Christmas''''' yew albumê deyirvaca [[Sia]]ya.
{{Kontrolê_otoriteyi}}
{{Sia}}
[[Kategoriye:Albumê Siaye]]
[[Kategoriye:Albumê ke 2017 de veciyayê]]
3tptnkraa4h938jr8j80hzjzqamnf25
Cesset
0
78929
557915
539737
2026-10-03T18:23:05Z
Maviulke
34834
557915
wikitext
text/x-wiki
{{Databox}}
'''Cesset''', dewleta [[Fransa]] de, mıntıqaya [[Auvergne-Rhône-Alpes]] miyan de yew [[Komune|komuna]] wılayetê [[Allier]]iya.
== Bıvênên ==
* [[Komunê Alyeyi]]
{{Commonscat}}
{{Kontrolê_otoriteyi}}
{{Komunê Alyeyi}}
[[Kategoriye:Komunê Alyeyi]]
qjprsebvqd9e5zfsk1u3btuu7xllajn
Ternana Calcio
0
79171
557925
443839
2026-10-04T02:10:48Z
InternetArchiveBot
21954
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.6
557925
wikitext
text/x-wiki
{{Klubi
}}
'''Ternana Calcio''' yew klubê [[futbol]]iyê dewleta [[İtalya]]yo.
==Linkê Teberi==
* [https://web.archive.org/web/20200808225349/https://ternanacalcio.com/ Siteyo Resmi]
{{Serie A}}
[[Kategoriye:Klubê futboliê İtalya]]
d03pwjtg9aj397prcgdvwd6avyxa08a
Modul:Databox
828
83930
557896
557709
2026-10-03T17:38:55Z
Maviulke
34834
557896
Scribunto
text/plain
-- It is supposed to work for any language.
-- Properties excluded for all Databoxes in Zazaki Wikipedia
local site_excluded_properties = {
'P360', --is a list of
'P4224', --category contains
'P935', -- Commons gallery
'P1472', -- Commons Creator page
'P1612', -- Commons Institution page
'P373', -- Commons category
'P3722', -- Commons maps category
'P1151', -- topic's main Wikimedia portal
'P1424', -- topic's main template
'P910', -- topic's main category
'P1200', -- bodies of water basin category
'P1792', -- category of associated people
'P1464', -- category for people born here
'P1465', -- category for people who died here
'P1791', -- category of people buried here
'P1740', -- category for films shot at this location
'P2033', -- Category for pictures taken with camera
'P2517', -- category for recipients of this award
'P4195', -- category for employees of the organization
'P1754', -- category related to list
'P301', -- category's main topic
'P971', -- category combines topics
'P3876', -- category for alumni of educational institution
'P1753', -- list related to category
'P3921', -- Wikidata SPARQL query equivalent
'P1204', -- Wikimedia portal's main topic
'P1423', -- template's main topic
'P1709', -- equivalent class
'P3950', -- narrower external class
'P2888', -- exact match
'P1382', -- coincident with
'P527', -- has part
'P2670', -- has parts of the class
'P3113', -- does not have part
'P2737', -- union of
'P2738', -- disjoint union of
'P2445', -- metasubclass of
'P1963', -- properties for this type
'P3176', -- uses property
'P1889', -- different from
'P460', -- said to be the same as
'P2959', -- permanent duplicated item
'P2860', -- cites
'P5125', -- wikimedia outline
'P5008', -- on focus list of Wikimedia project
'P2559', -- Wikidata usage instructions
'P1343', -- described by source
'P972', -- catalogu
'P1282', -- OSM tag or key
'P4839', -- Wolfram Language entity code
'P6104', -- Maintained by Wikiproject
'P2357', -- Code Classification of Instructional Program
'P5996' -- Category for films in this language
}
function valuesToKeys(array)
local result = {}
for _, v in pairs(array) do
result[v] = true
end
return result
end
local p = {}
function p.databox(frame)
local args = frame:getParent().args
local argsLocal = frame.args
local itemId = nil
if args.item then
itemId = args.item
end
local argsLocal = frame.args
local useImage = nil
if argsLocal.useImage then
useImage = argsLocal["useImage"]
end
-- excludeProperties is a local parameter to exclude given properties for a Databox on a specific page
local excludeProperties = {}
if argsLocal.excludeProperties then
for item in string.gmatch(argsLocal.excludeProperties, "[^,]+") do
table.insert(excludeProperties, item)
end
end
local lang = mw.language.getContentLanguage()
local item = mw.wikibase.getEntity(itemId)
if item == nil then
mw.addWarning("Wikidata item not found")
return ""
end
local databoxRoot = mw.html.create('div')
:addClass('infobox')
:css({
float = 'right',
border = '1px solid #fff',
['max-width'] = '300px',
padding = '0 0.4em',
margin = '0 0 0.4em 0.4em',
})
--Title
databoxRoot:tag('div')
:css({
['text-align'] = 'center',
['background-color'] = 'goldenrod',
padding = '0.5em 0',
margin = '0.5em 0',
['font-size'] = '120%',
['font-weight'] = 'bold',
})
:wikitext(item:getLabel() or mw.title.getCurrentTitle().text)
--Image
local databoxImage = nil
if useImage and useImage ~= "" then
local allWikidataImages = item:getAllStatements('P18')
if #allWikidataImages >= 1 then
for _, image in ipairs( allWikidataImages ) do
if image.mainsnak.datavalue.value == useImage then
databoxImage = useImage
break
end
end
end
end
if databoxImage == nil then
local bestWikidataImages = item:getBestStatements('P18')
if #bestWikidataImages >= 1 then
databoxImage = bestWikidataImages[1].mainsnak.datavalue.value
end
end
if databoxImage then
databoxRoot
:tag('div')
:wikitext('[[File:' .. databoxImage .. '|frameless|300px]]')
end
--Table
local dataTable = databoxRoot
:tag('table')
:css({
['text-align'] = 'left',
['font-size'] = '90%',
['word-break'] = 'break-word',
['width'] = '100%',
['table-layout'] = 'fixed',
})
dataTable:tag('caption')
:addClass('notheme')
:css({
['background-color'] = 'goldenrod',
['font-weight'] = 'bold',
['margin-top'] = '0.2em',
})
:wikitext(item:formatStatements('P31').value)
local properties = mw.wikibase.orderProperties(item:getProperties())
local site_excluded_properties_hash = valuesToKeys(site_excluded_properties)
site_excluded_properties_hash['P31'] = true --Special property
local excludeProperties_hash = valuesToKeys(excludeProperties)
local edit_message = mw.message.new('vector-view-edit'):plain()
for _, property in pairs(properties) do
local datatype = item.claims[property][1].mainsnak.datatype
local valueCount = #item:getBestStatements(property)
if datatype ~= 'commonsMedia' and datatype ~= 'external-id' and datatype ~= 'quantity' and datatype ~= 'wikibase-property' and datatype ~= 'geo-shape' and datatype ~= 'tabular-data' and not site_excluded_properties_hash[property] and not excludeProperties_hash[property] and valueCount > 0 and valueCount <= 5 then
local propertyValue = item:formatStatements(property)
dataTable:tag('tr')
:tag('th')
:attr('scope', 'row')
:wikitext(lang:ucfirst(propertyValue.label)):done()
:tag('td')
:wikitext(frame:preprocess(propertyValue.value))
:wikitext(' [[File:OOjs UI icon edit-ltr.svg|' .. edit_message .. '|12px|baseline|class=noviewer|link=https://www.wikidata.org/wiki/' .. item.id .. '#' .. property .. ']]')
end
end
--Map
local coordinates_statements = item:getBestStatements('P625')
if #coordinates_statements >= 1 and coordinates_statements[1].mainsnak.datavalue and coordinates_statements[1].mainsnak.datavalue.value.globe == 'http://www.wikidata.org/entity/Q2' then
--We build the call to mapframe
local latitude = coordinates_statements[1].mainsnak.datavalue.value.latitude
local longitude = coordinates_statements[1].mainsnak.datavalue.value.longitude
local geojson = {
type = 'Feature',
geometry = {
type = 'Point',
coordinates = { longitude, latitude }
},
properties = {
title = item:getLabel() or mw.title.getCurrentTitle().text,
['marker-symbol'] = 'marker',
['marker-color'] = '#009900',
}
}
databoxRoot:wikitext(frame:extensionTag('mapframe', mw.text.jsonEncode(geojson), {
height = 300,
width = 300,
frameless = 'frameless',
align = 'center',
latitude = latitude,
longitude = longitude,
zoom = zoom
}))
end
--Wikidata Link
databoxRoot:tag('div')
:css({
['display'] = 'flex',
padding = '0.3em 0',
['width'] = '100%',
['font-size'] = '90%',
})
:addClass('databox-from-wikidata-link')
:wikitext(' [[File:Wikidata-logo.svg|22px|class=noviewer skin-invert|link=https://www.wikidata.org/wiki/' .. item.id .. ']]')
:tag('div')
:css({
margin = '0.05em 0 0 0',
})
:wikitext(' [[d:' .. item.id .. '|Wikidata sera]]')
return tostring(databoxRoot)
end
return p
fjy45qjkgunf79mntdd19topahdvg4n
557910
557896
2026-10-03T18:11:36Z
Maviulke
34834
557910
Scribunto
text/plain
-- It is supposed to work for any language.
-- Properties excluded for all Databoxes in Zazaki Wikipedia
local site_excluded_properties = {
'P360', --is a list of
'P4224', --category contains
'P935', -- Commons gallery
'P1472', -- Commons Creator page
'P1612', -- Commons Institution page
'P373', -- Commons category
'P3722', -- Commons maps category
'P1151', -- topic's main Wikimedia portal
'P1424', -- topic's main template
'P910', -- topic's main category
'P1200', -- bodies of water basin category
'P1792', -- category of associated people
'P1464', -- category for people born here
'P1465', -- category for people who died here
'P1791', -- category of people buried here
'P1740', -- category for films shot at this location
'P2033', -- Category for pictures taken with camera
'P2517', -- category for recipients of this award
'P4195', -- category for employees of the organization
'P1754', -- category related to list
'P301', -- category's main topic
'P971', -- category combines topics
'P3876', -- category for alumni of educational institution
'P1753', -- list related to category
'P3921', -- Wikidata SPARQL query equivalent
'P1204', -- Wikimedia portal's main topic
'P1423', -- template's main topic
'P1709', -- equivalent class
'P3950', -- narrower external class
'P2888', -- exact match
'P1382', -- coincident with
'P527', -- has part
'P2670', -- has parts of the class
'P3113', -- does not have part
'P2737', -- union of
'P2738', -- disjoint union of
'P2445', -- metasubclass of
'P1963', -- properties for this type
'P3176', -- uses property
'P1889', -- different from
'P460', -- said to be the same as
'P2959', -- permanent duplicated item
'P2860', -- cites
'P5125', -- wikimedia outline
'P5008', -- on focus list of Wikimedia project
'P2559', -- Wikidata usage instructions
'P1343', -- described by source
'P972', -- catalogu
'P1282', -- OSM tag or key
'P4839', -- Wolfram Language entity code
'P6104', -- Maintained by Wikiproject
'P2357', -- Code Classification of Instructional Program
'P5996' -- Category for films in this language
}
function valuesToKeys(array)
local result = {}
for _, v in pairs(array) do
result[v] = true
end
return result
end
local p = {}
function p.databox(frame)
local args = frame:getParent().args
local argsLocal = frame.args
local itemId = nil
if args.item then
itemId = args.item
end
local argsLocal = frame.args
local useImage = nil
if argsLocal.useImage then
useImage = argsLocal["useImage"]
end
-- excludeProperties is a local parameter to exclude given properties for a Databox on a specific page
local excludeProperties = {}
if argsLocal.excludeProperties then
for item in string.gmatch(argsLocal.excludeProperties, "[^,]+") do
table.insert(excludeProperties, item)
end
end
local lang = mw.language.getContentLanguage()
local item = mw.wikibase.getEntity(itemId)
if item == nil then
mw.addWarning("Wikidata item not found")
return ""
end
local databoxRoot = mw.html.create('div')
:addClass('infobox')
:css({
float = 'right',
border = '1px solid goldenrod',
['max-width'] = '300px',
padding = '0 0.4em',
margin = '0 0 0.4em 0.4em',
})
--Title
databoxRoot:tag('div')
:css({
['text-align'] = 'center',
['background-color'] = 'goldenrod',
padding = '0.5em 0',
margin = '0.5em 0',
['font-size'] = '120%',
['font-weight'] = 'bold',
})
:wikitext(item:getLabel() or mw.title.getCurrentTitle().text)
--Image
local databoxImage = nil
if useImage and useImage ~= "" then
local allWikidataImages = item:getAllStatements('P18')
if #allWikidataImages >= 1 then
for _, image in ipairs( allWikidataImages ) do
if image.mainsnak.datavalue.value == useImage then
databoxImage = useImage
break
end
end
end
end
if databoxImage == nil then
local bestWikidataImages = item:getBestStatements('P18')
if #bestWikidataImages >= 1 then
databoxImage = bestWikidataImages[1].mainsnak.datavalue.value
end
end
if databoxImage then
databoxRoot
:tag('div')
:wikitext('[[File:' .. databoxImage .. '|frameless|300px]]')
end
--Table
local dataTable = databoxRoot
:tag('table')
:css({
['text-align'] = 'left',
['font-size'] = '90%',
['word-break'] = 'break-word',
['width'] = '100%',
['table-layout'] = 'fixed',
})
dataTable:tag('caption')
:addClass('notheme')
:css({
['background-color'] = 'goldenrod',
['font-weight'] = 'bold',
['margin-top'] = '0.2em',
})
:wikitext(item:formatStatements('P31').value)
local properties = mw.wikibase.orderProperties(item:getProperties())
local site_excluded_properties_hash = valuesToKeys(site_excluded_properties)
site_excluded_properties_hash['P31'] = true --Special property
local excludeProperties_hash = valuesToKeys(excludeProperties)
local edit_message = mw.message.new('vector-view-edit'):plain()
for _, property in pairs(properties) do
local datatype = item.claims[property][1].mainsnak.datatype
local valueCount = #item:getBestStatements(property)
if datatype ~= 'commonsMedia' and datatype ~= 'external-id' and datatype ~= 'quantity' and datatype ~= 'wikibase-property' and datatype ~= 'geo-shape' and datatype ~= 'tabular-data' and not site_excluded_properties_hash[property] and not excludeProperties_hash[property] and valueCount > 0 and valueCount <= 5 then
local propertyValue = item:formatStatements(property)
dataTable:tag('tr')
:tag('th')
:attr('scope', 'row')
:wikitext(lang:ucfirst(propertyValue.label)):done()
:tag('td')
:wikitext(frame:preprocess(propertyValue.value))
:wikitext(' [[File:OOjs UI icon edit-ltr.svg|' .. edit_message .. '|12px|baseline|class=noviewer|link=https://www.wikidata.org/wiki/' .. item.id .. '#' .. property .. ']]')
end
end
--Map
local coordinates_statements = item:getBestStatements('P625')
if #coordinates_statements >= 1 and coordinates_statements[1].mainsnak.datavalue and coordinates_statements[1].mainsnak.datavalue.value.globe == 'http://www.wikidata.org/entity/Q2' then
--We build the call to mapframe
local latitude = coordinates_statements[1].mainsnak.datavalue.value.latitude
local longitude = coordinates_statements[1].mainsnak.datavalue.value.longitude
local geojson = {
type = 'Feature',
geometry = {
type = 'Point',
coordinates = { longitude, latitude }
},
properties = {
title = item:getLabel() or mw.title.getCurrentTitle().text,
['marker-symbol'] = 'marker',
['marker-color'] = '#009900',
}
}
databoxRoot:wikitext(frame:extensionTag('mapframe', mw.text.jsonEncode(geojson), {
height = 300,
width = 300,
frameless = 'frameless',
align = 'center',
latitude = latitude,
longitude = longitude,
zoom = zoom
}))
end
--Wikidata Link
databoxRoot:tag('div')
:css({
['display'] = 'flex',
padding = '0.3em 0',
['width'] = '100%',
['font-size'] = '90%',
})
:addClass('databox-from-wikidata-link')
:wikitext(' [[File:Wikidata-logo.svg|22px|class=noviewer skin-invert|link=https://www.wikidata.org/wiki/' .. item.id .. ']]')
:tag('div')
:css({
margin = '0.05em 0 0 0',
})
:wikitext(' [[d:' .. item.id .. '|Wikidata sera]]')
return tostring(databoxRoot)
end
return p
oo1f2r0t99tsusrjaij4e7umon3a3m5
557911
557910
2026-10-03T18:15:36Z
Maviulke
34834
557911
Scribunto
text/plain
-- It is supposed to work for any language.
-- Properties excluded for all Databoxes in Zazaki Wikipedia
local site_excluded_properties = {
'P360', --is a list of
'P4224', --category contains
'P935', -- Commons gallery
'P1472', -- Commons Creator page
'P1612', -- Commons Institution page
'P373', -- Commons category
'P3722', -- Commons maps category
'P1151', -- topic's main Wikimedia portal
'P1424', -- topic's main template
'P910', -- topic's main category
'P1200', -- bodies of water basin category
'P1792', -- category of associated people
'P1464', -- category for people born here
'P1465', -- category for people who died here
'P1791', -- category of people buried here
'P1740', -- category for films shot at this location
'P2033', -- Category for pictures taken with camera
'P2517', -- category for recipients of this award
'P4195', -- category for employees of the organization
'P1754', -- category related to list
'P301', -- category's main topic
'P971', -- category combines topics
'P3876', -- category for alumni of educational institution
'P1753', -- list related to category
'P3921', -- Wikidata SPARQL query equivalent
'P1204', -- Wikimedia portal's main topic
'P1423', -- template's main topic
'P1709', -- equivalent class
'P3950', -- narrower external class
'P2888', -- exact match
'P1382', -- coincident with
'P527', -- has part
'P2670', -- has parts of the class
'P3113', -- does not have part
'P2737', -- union of
'P2738', -- disjoint union of
'P2445', -- metasubclass of
'P1963', -- properties for this type
'P3176', -- uses property
'P1889', -- different from
'P460', -- said to be the same as
'P2959', -- permanent duplicated item
'P2860', -- cites
'P5125', -- wikimedia outline
'P5008', -- on focus list of Wikimedia project
'P2559', -- Wikidata usage instructions
'P1343', -- described by source
'P972', -- catalogu
'P1282', -- OSM tag or key
'P4839', -- Wolfram Language entity code
'P6104', -- Maintained by Wikiproject
'P2357', -- Code Classification of Instructional Program
'P5996' -- Category for films in this language
}
function valuesToKeys(array)
local result = {}
for _, v in pairs(array) do
result[v] = true
end
return result
end
local p = {}
function p.databox(frame)
local args = frame:getParent().args
local argsLocal = frame.args
local itemId = nil
if args.item then
itemId = args.item
end
local argsLocal = frame.args
local useImage = nil
if argsLocal.useImage then
useImage = argsLocal["useImage"]
end
-- excludeProperties is a local parameter to exclude given properties for a Databox on a specific page
local excludeProperties = {}
if argsLocal.excludeProperties then
for item in string.gmatch(argsLocal.excludeProperties, "[^,]+") do
table.insert(excludeProperties, item)
end
end
local lang = mw.language.getContentLanguage()
local item = mw.wikibase.getEntity(itemId)
if item == nil then
mw.addWarning("Wikidata item not found")
return ""
end
local databoxRoot = mw.html.create('div')
:addClass('infobox')
:css({
float = 'right',
border = '1px solid goldenrod',
['max-width'] = '300px',
padding = '0 0.3em',
margin = '0 0 0.3em 0.3em',
})
--Title
databoxRoot:tag('div')
:css({
['text-align'] = 'center',
['background-color'] = 'goldenrod',
padding = '0.4em 0',
margin = '0.4em 0',
['font-size'] = '130%',
['font-weight'] = 'bold',
})
:wikitext(item:getLabel() or mw.title.getCurrentTitle().text)
--Image
local databoxImage = nil
if useImage and useImage ~= "" then
local allWikidataImages = item:getAllStatements('P18')
if #allWikidataImages >= 1 then
for _, image in ipairs( allWikidataImages ) do
if image.mainsnak.datavalue.value == useImage then
databoxImage = useImage
break
end
end
end
end
if databoxImage == nil then
local bestWikidataImages = item:getBestStatements('P18')
if #bestWikidataImages >= 1 then
databoxImage = bestWikidataImages[1].mainsnak.datavalue.value
end
end
if databoxImage then
databoxRoot
:tag('div')
:wikitext('[[File:' .. databoxImage .. '|frameless|300px]]')
end
--Table
local dataTable = databoxRoot
:tag('table')
:css({
['text-align'] = 'left',
['font-size'] = '100%',
['word-break'] = 'break-word',
['width'] = '100%',
['table-layout'] = 'fixed',
})
dataTable:tag('caption')
:addClass('notheme')
:css({
['background-color'] = 'goldenrod',
['font-weight'] = 'bold',
['margin-top'] = '0.3em',
})
:wikitext(item:formatStatements('P31').value)
local properties = mw.wikibase.orderProperties(item:getProperties())
local site_excluded_properties_hash = valuesToKeys(site_excluded_properties)
site_excluded_properties_hash['P31'] = true --Special property
local excludeProperties_hash = valuesToKeys(excludeProperties)
local edit_message = mw.message.new('vector-view-edit'):plain()
for _, property in pairs(properties) do
local datatype = item.claims[property][1].mainsnak.datatype
local valueCount = #item:getBestStatements(property)
if datatype ~= 'commonsMedia' and datatype ~= 'external-id' and datatype ~= 'quantity' and datatype ~= 'wikibase-property' and datatype ~= 'geo-shape' and datatype ~= 'tabular-data' and not site_excluded_properties_hash[property] and not excludeProperties_hash[property] and valueCount > 0 and valueCount <= 5 then
local propertyValue = item:formatStatements(property)
dataTable:tag('tr')
:tag('th')
:attr('scope', 'row')
:wikitext(lang:ucfirst(propertyValue.label)):done()
:tag('td')
:wikitext(frame:preprocess(propertyValue.value))
:wikitext(' [[File:OOjs UI icon edit-ltr.svg|' .. edit_message .. '|12px|baseline|class=noviewer|link=https://www.wikidata.org/wiki/' .. item.id .. '#' .. property .. ']]')
end
end
--Map
local coordinates_statements = item:getBestStatements('P625')
if #coordinates_statements >= 1 and coordinates_statements[1].mainsnak.datavalue and coordinates_statements[1].mainsnak.datavalue.value.globe == 'http://www.wikidata.org/entity/Q2' then
--We build the call to mapframe
local latitude = coordinates_statements[1].mainsnak.datavalue.value.latitude
local longitude = coordinates_statements[1].mainsnak.datavalue.value.longitude
local geojson = {
type = 'Feature',
geometry = {
type = 'Point',
coordinates = { longitude, latitude }
},
properties = {
title = item:getLabel() or mw.title.getCurrentTitle().text,
['marker-symbol'] = 'marker',
['marker-color'] = '#0a07de',
}
}
databoxRoot:wikitext(frame:extensionTag('mapframe', mw.text.jsonEncode(geojson), {
height = 300,
width = 300,
frameless = 'frameless',
align = 'center',
latitude = latitude,
longitude = longitude,
zoom = zoom
}))
end
--Wikidata Link
databoxRoot:tag('div')
:css({
['display'] = 'flex',
padding = '0.3em 0',
['width'] = '100%',
['font-size'] = '100%',
})
:addClass('databox-from-wikidata-link')
:wikitext(' [[File:Wikidata-logo.svg|22px|class=noviewer skin-invert|link=https://www.wikidata.org/wiki/' .. item.id .. ']]')
:tag('div')
:css({
margin = '0.05em 0 0 0',
})
:wikitext(' [[d:' .. item.id .. '|Wikidata seri bıvênên]]')
return tostring(databoxRoot)
end
return p
mykpbywhfw7z1y2gd572pmejf616uvo
557912
557911
2026-10-03T18:16:19Z
Maviulke
34834
557912
Scribunto
text/plain
-- It is supposed to work for any language.
-- Properties excluded for all Databoxes in Zazaki Wikipedia
local site_excluded_properties = {
'P360', --is a list of
'P4224', --category contains
'P935', -- Commons gallery
'P1472', -- Commons Creator page
'P1612', -- Commons Institution page
'P373', -- Commons category
'P3722', -- Commons maps category
'P1151', -- topic's main Wikimedia portal
'P1424', -- topic's main template
'P910', -- topic's main category
'P1200', -- bodies of water basin category
'P1792', -- category of associated people
'P1464', -- category for people born here
'P1465', -- category for people who died here
'P1791', -- category of people buried here
'P1740', -- category for films shot at this location
'P2033', -- Category for pictures taken with camera
'P2517', -- category for recipients of this award
'P4195', -- category for employees of the organization
'P1754', -- category related to list
'P301', -- category's main topic
'P971', -- category combines topics
'P3876', -- category for alumni of educational institution
'P1753', -- list related to category
'P3921', -- Wikidata SPARQL query equivalent
'P1204', -- Wikimedia portal's main topic
'P1423', -- template's main topic
'P1709', -- equivalent class
'P3950', -- narrower external class
'P2888', -- exact match
'P1382', -- coincident with
'P527', -- has part
'P2670', -- has parts of the class
'P3113', -- does not have part
'P2737', -- union of
'P2738', -- disjoint union of
'P2445', -- metasubclass of
'P1963', -- properties for this type
'P3176', -- uses property
'P1889', -- different from
'P460', -- said to be the same as
'P2959', -- permanent duplicated item
'P2860', -- cites
'P5125', -- wikimedia outline
'P5008', -- on focus list of Wikimedia project
'P2559', -- Wikidata usage instructions
'P1343', -- described by source
'P972', -- catalogu
'P1282', -- OSM tag or key
'P4839', -- Wolfram Language entity code
'P6104', -- Maintained by Wikiproject
'P2357', -- Code Classification of Instructional Program
'P5996' -- Category for films in this language
}
function valuesToKeys(array)
local result = {}
for _, v in pairs(array) do
result[v] = true
end
return result
end
local p = {}
function p.databox(frame)
local args = frame:getParent().args
local argsLocal = frame.args
local itemId = nil
if args.item then
itemId = args.item
end
local argsLocal = frame.args
local useImage = nil
if argsLocal.useImage then
useImage = argsLocal["useImage"]
end
-- excludeProperties is a local parameter to exclude given properties for a Databox on a specific page
local excludeProperties = {}
if argsLocal.excludeProperties then
for item in string.gmatch(argsLocal.excludeProperties, "[^,]+") do
table.insert(excludeProperties, item)
end
end
local lang = mw.language.getContentLanguage()
local item = mw.wikibase.getEntity(itemId)
if item == nil then
mw.addWarning("Wikidata item not found")
return ""
end
local databoxRoot = mw.html.create('div')
:addClass('infobox')
:css({
float = 'right',
border = '1px solid goldenrod',
['max-width'] = '300px',
padding = '0 0.3em',
margin = '0 0 0.3em 0.3em',
})
--Title
databoxRoot:tag('div')
:css({
['text-align'] = 'center',
['background-color'] = 'goldenrod',
padding = '0.4em 0',
margin = '0.4em 0',
['font-size'] = '130%',
['font-weight'] = 'bold',
})
:wikitext(item:getLabel() or mw.title.getCurrentTitle().text)
--Image
local databoxImage = nil
if useImage and useImage ~= "" then
local allWikidataImages = item:getAllStatements('P18')
if #allWikidataImages >= 1 then
for _, image in ipairs( allWikidataImages ) do
if image.mainsnak.datavalue.value == useImage then
databoxImage = useImage
break
end
end
end
end
if databoxImage == nil then
local bestWikidataImages = item:getBestStatements('P18')
if #bestWikidataImages >= 1 then
databoxImage = bestWikidataImages[1].mainsnak.datavalue.value
end
end
if databoxImage then
databoxRoot
:tag('div')
:wikitext('[[File:' .. databoxImage .. '|frameless|300px]]')
end
--Table
local dataTable = databoxRoot
:tag('table')
:css({
['text-align'] = 'left',
['font-size'] = '100%',
['word-break'] = 'break-word',
['width'] = '100%',
['table-layout'] = 'fixed',
})
dataTable:tag('caption')
:addClass('notheme')
:css({
['background-color'] = 'goldenrod',
['font-weight'] = 'bold',
['margin-top'] = '0.3em',
})
:wikitext(item:formatStatements('P31').value)
local properties = mw.wikibase.orderProperties(item:getProperties())
local site_excluded_properties_hash = valuesToKeys(site_excluded_properties)
site_excluded_properties_hash['P31'] = true --Special property
local excludeProperties_hash = valuesToKeys(excludeProperties)
local edit_message = mw.message.new('vector-view-edit'):plain()
for _, property in pairs(properties) do
local datatype = item.claims[property][1].mainsnak.datatype
local valueCount = #item:getBestStatements(property)
if datatype ~= 'commonsMedia' and datatype ~= 'external-id' and datatype ~= 'quantity' and datatype ~= 'wikibase-property' and datatype ~= 'geo-shape' and datatype ~= 'tabular-data' and not site_excluded_properties_hash[property] and not excludeProperties_hash[property] and valueCount > 0 and valueCount <= 5 then
local propertyValue = item:formatStatements(property)
dataTable:tag('tr')
:tag('th')
:attr('scope', 'row')
:wikitext(lang:ucfirst(propertyValue.label)):done()
:tag('td')
:wikitext(frame:preprocess(propertyValue.value))
:wikitext(' [[File:OOjs UI icon edit-ltr.svg|' .. edit_message .. '|12px|baseline|class=noviewer|link=https://www.wikidata.org/wiki/' .. item.id .. '#' .. property .. ']]')
end
end
--Map
local coordinates_statements = item:getBestStatements('P625')
if #coordinates_statements >= 1 and coordinates_statements[1].mainsnak.datavalue and coordinates_statements[1].mainsnak.datavalue.value.globe == 'http://www.wikidata.org/entity/Q2' then
--We build the call to mapframe
local latitude = coordinates_statements[1].mainsnak.datavalue.value.latitude
local longitude = coordinates_statements[1].mainsnak.datavalue.value.longitude
local geojson = {
type = 'Feature',
geometry = {
type = 'Point',
coordinates = { longitude, latitude }
},
properties = {
title = item:getLabel() or mw.title.getCurrentTitle().text,
['marker-symbol'] = 'marker',
['marker-color'] = '#0a07de',
}
}
databoxRoot:wikitext(frame:extensionTag('mapframe', mw.text.jsonEncode(geojson), {
height = 300,
width = 300,
frameless = 'frameless',
align = 'center',
latitude = latitude,
longitude = longitude,
zoom = zoom
}))
end
--Wikidata Link
databoxRoot:tag('div')
:css({
['display'] = 'flex',
padding = '0.3em 0',
['width'] = '100%',
['font-size'] = '100%',
})
:addClass('databox-from-wikidata-link')
:wikitext(' [[File:Wikidata-logo.svg|22px|class=noviewer skin-invert|link=https://www.wikidata.org/wiki/' .. item.id .. ']]')
:tag('div')
:css({
margin = '0.05em 0 0 0',
})
:wikitext(' [[d:' .. item.id .. '|Wikidata sero bıvênên]]')
return tostring(databoxRoot)
end
return p
5clio4u5jtj4y31n7d63y9zhe6zjj9b
Öykü Karayel
0
93538
557926
466235
2026-10-04T02:33:08Z
InternetArchiveBot
21954
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.6
557926
wikitext
text/x-wiki
{{Merdumi}}
'''Öykü Karayel''' (b. 1990, [[Estanbol]]), yew [[kayker]]a [[Tırk]]a.
Karayel serra 1990 de,[[Estanbol]] de biya. Lisa Çemberlitaşi ra biya mezune. Yew waya ae esta.<ref>http://www.medyafaresi.com/haber/Oyku-Karayel-ikiz-kardesinin-yasadigi-zorlugu-anlatti_94259.html</ref> Ae Têatroê Kenteri de wendo, 2007 de kewto Universitey Estanboli Konservauarê Dewlete. Key ke oca biya wendekare, filmê ''Güzel Şeyler Bizim Tarafta'' de rol gırewto, kay kerdo. Ney ra tepeya kewta kadroê filmê [[Kuzey Güney]]i u rolê ''Cemre'' de kay kerdo.<ref>{{Cite web |archiveurl=https://web.archive.org/web/20150716232421/http://www.hurriyet.com.tr/kelebek/paparazzi/27770989.asp |archivedate=2015-07-16 |title=Archive copy |url=http://www.hurriyet.com.tr/kelebek/paparazzi/27770989.asp |access-date=2020-12-02}}</ref> Tewr peyên [[film]]ê [[Netflix]]i ''[[Bir Başkadır]]''i de kay kerdo.
== Filmografiya xo ==
{| border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 90%;"
|- bgcolor="#B0C4DE" align="center"
! Serre
! Vıraştış
! Rol
! Noti
! Tewr
|-
| 2011-2013 || ''[[Kuzey Güney]]'' || Cemre Çayak Tekinoğlu || Rolo serên || Series
|-
| 2014-2015 || ''[[Kara Para Aşk]]'' || İpek || Rolo kınare || Series
|-
|2015 || ''[[Bulantı|Bulantı]]'' || Aslı || Rolo serên || [[Film]]
|-
| 2015 || ''[[Toz]]'' || Azra Naziri || Rolo serên || [[Film]]
|-
| 2016 || ''[[Muhteşem Yüzyıl Kösem ]]'' || Dilruba Sultan || Rolê kınare || Series
|-
| 2017-2018 || ''[[Kalp Atışı]] '' || Eylül Erdem || Rolo serên || Series
|-
| 2017 || ''[[İşe Yarar Bir Şey]]'' || Canan || Rolo serên || [[Film]]
|-
| 2018 || ''[[Put Şeylere]]'' || Elif || Rolo serên || [[Film]]
|-
| 2018-2019 || ''[[Muhteşem İkili|Muhteşem İkili]] || Yağmur Bulut|| Rolo peyên || Series
|-
| 2019 || ''[[Jet Sosyete]]'' || Sinem || Kaykero meyman (episodê 45) || Series
|-
| 2020 || ''[[Bir Başkadır]]'' || Meryem || Rolo serên || Filmê [[Netflix]]i
|}
== Referansi ==
{{Reflist}}
[[Kategoriye:Şarê Estanboli]]
[[Kategoriye:Kaykerê Tırkiya]]
azelkb161tkqsw9ixs58oz5fxjdwkon
Chordate
0
100705
557883
2026-10-03T15:30:42Z
Maviulke
34834
Şıkıt era [[Goştwer]] ser
557883
wikitext
text/x-wiki
#REDIRECT[[Goştwer]]
km3ymlawtw61xbnpztvx4rlkscsjo5x
557884
557883
2026-10-03T15:32:27Z
Maviulke
34834
[[Goştwer]] ra serşıkıtış dariya we
557884
wikitext
text/x-wiki
== Sınıflandırma ==
* '''Şube Chordata'''
** Alt şube {{bt-lattr|Cephalochordata|Kafatassızlar}}
** Klad [[Olfactores]]
*** Alt şube {{bt-lattr|Urochordata|Tulumlular}}
*** Alt şube {{bt-lattr|Vertebrata|Omurgalılar}}
**** İnfra şube {{bt-lattr|Agnatha|Çenesiz balıklar}}
***** Sınıf {{bt-lattr|Myxini {{!}}Myxini veya Hyperotreti|}}
***** Sınıf {{bt-lattr|Conodonta|Konodontlar}}
***** Sınıf {{bt-lattr|Hyperoartia|}}
***** Sınıf {{bt-lattr|Cephalaspidomorphi|Yuvarlak ağızlılar}}
***** Sınıf {{bt-lattr|Pteraspidomorphi|}}
**** İnfra şube {{bt-lattr|Gnathostomata|Gerçek çeneliler}}
***** Sınıf {{bt-lattr|Placodermi|Zırhlı balıklar}}
***** Sınıf {{bt-lattr|Chondrichthyes|Kıkırdaklı balıklar}}
***** Sınıf {{bt-lattr|Acanthodii|Dikenli yüzgeçliler}}
***** Üst sınıf {{bt-lattr|Osteichthyes|Kemikli balıklar}}
****** Sınıf {{bt-lattr|Actinopterygii|Işınsal yüzgeçliler}}
****** Sınıf {{bt-lattr|Sarcopterygii|Et yüzgeçliler}}
***** Üst sınıf {{bt-lattr|Tetrapoda|Dört üyeliler|Dört bacaklı omurgalılar}}
****** Sınıf {{bt-lattr|Amphibia|amfibyumlar}}
****** Seri {{bt-lattr|Amniota|Amniyotik yumurtalılar}}
******* Sınıf {{bt-lattr|Sauropsida|Sürüngenler}}
******* Sınıf {{bt-lattr|Aves|Kuşlar}}
******* Sınıf {{bt-lattr|Synapsida|Memelimsi sürüngenler}}
******* Sınıf {{bt-lattr|Mammalia|Memeliler}}
28hd9p6pdg7q1l8ksts85fx63mg2dic
557885
557884
2026-10-03T15:33:20Z
Maviulke
34834
557885
wikitext
text/x-wiki
== Sınıflandırma ==
* '''Şube Chordata'''
** bın şube {{bt-lattr|Cephalochordata|Kafatassızlar}}
** Klad [[Olfactores]]
*** bın şube {{bt-lattr|Urochordata|Tulumlular}}
*** bın şube {{bt-lattr|Vertebrata|Omurgalılar}}
**** İnfra şube {{bt-lattr|Agnatha|Çenesiz balıklar}}
***** Sınıf {{bt-lattr|Myxini {{!}}Myxini veya Hyperotreti|}}
***** Sınıf {{bt-lattr|Conodonta|Konodontlar}}
***** Sınıf {{bt-lattr|Hyperoartia|}}
***** Sınıf {{bt-lattr|Cephalaspidomorphi|Yuvarlak ağızlılar}}
***** Sınıf {{bt-lattr|Pteraspidomorphi|}}
**** İnfra şube {{bt-lattr|Gnathostomata|Gerçek çeneliler}}
***** Sınıf {{bt-lattr|Placodermi|Zırhlı balıklar}}
***** Sınıf {{bt-lattr|Chondrichthyes|Kıkırdaklı balıklar}}
***** Sınıf {{bt-lattr|Acanthodii|Dikenli yüzgeçliler}}
***** ser sınıf {{bt-lattr|Osteichthyes|Kemikli balıklar}}
****** Sınıf {{bt-lattr|Actinopterygii|Işınsal yüzgeçliler}}
****** Sınıf {{bt-lattr|Sarcopterygii|Et yüzgeçliler}}
***** ser sınıf {{bt-lattr|Tetrapoda|Dört üyeliler|Dört bacaklı omurgalılar}}
****** Sınıf {{bt-lattr|Amphibia|amfibyumlar}}
****** Seri {{bt-lattr|Amniota|Amniyotik yumurtalılar}}
******* Sınıf {{bt-lattr|Sauropsida|Sürüngenler}}
******* Sınıf {{bt-lattr|Aves|Kuşlar}}
******* Sınıf {{bt-lattr|Synapsida|Memelimsi sürüngenler}}
******* Sınıf {{bt-lattr|Mammalia|Memeliler}}
889h1cwamhtj8zn1p7uq22w1qd4n49p
557886
557885
2026-10-03T15:35:45Z
Maviulke
34834
557886
wikitext
text/x-wiki
== Sınıflandırma ==
* '''Şube Chordata'''
** bın şube {{bt-latdiq|Cephalochordata|Kafatassızlar}}
** Klad [[Olfactores]]
*** bın şube {{bt-latdiq|Urochordata|Tulumlular}}
*** bın şube {{bt-latdiq|Vertebrata|Omurgalılar}}
**** İnfra şube {{bt-latdiq|Agnatha|Çenesiz balıklar}}
***** Sınıf {{bt-latdiq|Myxini {{!}}Myxini veya Hyperotreti|}}
***** Sınıf {{bt-latdiq|Conodonta|Konodontlar}}
***** Sınıf {{bt-latdiq|Hyperoartia|}}
***** Sınıf {{bt-latdiq|Cephalaspidomorphi|Yuvarlak ağızlılar}}
***** Sınıf {{bt-latdiq|Pteraspidomorphi|}}
**** İnfra şube {{bt-latdiq|Gnathostomata|Gerçek çeneliler}}
***** Sınıf {{bt-latdiq|Placodermi|Zırhlı balıklar}}
***** Sınıf {{bt-latdiq|Chondrichthyes|Kıkırdaklı balıklar}}
***** Sınıf {{bt-latdiq|Acanthodii|Dikenli yüzgeçliler}}
***** ser sınıf {{bt-latdiq|Osteichthyes|Kemikli balıklar}}
****** Sınıf {{bt-latdiq|Actinopterygii|Işınsal yüzgeçliler}}
****** Sınıf {{bt-latdiq|Sarcopterygii|Et yüzgeçliler}}
***** ser sınıf {{bt-latdiq|Tetrapoda|Dört üyeliler|Dört bacaklı omurgalılar}}
****** Sınıf {{bt-latdiq|Amphibia|amfibyumlar}}
****** Seri {{bt-lattr|Amniota|Amniyotik yumurtalılar}}
******* Sınıf {{bt-latdiq|Sauropsida|Sürüngenler}}
******* Sınıf {{bt-latdiq|Aves|Kuşlar}}
******* Sınıf {{bt-latdiq|Synapsida|Memelimsi sürüngenler}}
******* Sınıf {{bt-latdiq|Mammalia|Memeliler}}
qk4orl6yx7kz6x5pvfuboyl3wnfg9nu
557887
557886
2026-10-03T15:36:00Z
Maviulke
34834
added [[Category:Chordate]] using [[Help:Gadget-HotCat|HotCat]]
557887
wikitext
text/x-wiki
== Sınıflandırma ==
* '''Şube Chordata'''
** bın şube {{bt-latdiq|Cephalochordata|Kafatassızlar}}
** Klad [[Olfactores]]
*** bın şube {{bt-latdiq|Urochordata|Tulumlular}}
*** bın şube {{bt-latdiq|Vertebrata|Omurgalılar}}
**** İnfra şube {{bt-latdiq|Agnatha|Çenesiz balıklar}}
***** Sınıf {{bt-latdiq|Myxini {{!}}Myxini veya Hyperotreti|}}
***** Sınıf {{bt-latdiq|Conodonta|Konodontlar}}
***** Sınıf {{bt-latdiq|Hyperoartia|}}
***** Sınıf {{bt-latdiq|Cephalaspidomorphi|Yuvarlak ağızlılar}}
***** Sınıf {{bt-latdiq|Pteraspidomorphi|}}
**** İnfra şube {{bt-latdiq|Gnathostomata|Gerçek çeneliler}}
***** Sınıf {{bt-latdiq|Placodermi|Zırhlı balıklar}}
***** Sınıf {{bt-latdiq|Chondrichthyes|Kıkırdaklı balıklar}}
***** Sınıf {{bt-latdiq|Acanthodii|Dikenli yüzgeçliler}}
***** ser sınıf {{bt-latdiq|Osteichthyes|Kemikli balıklar}}
****** Sınıf {{bt-latdiq|Actinopterygii|Işınsal yüzgeçliler}}
****** Sınıf {{bt-latdiq|Sarcopterygii|Et yüzgeçliler}}
***** ser sınıf {{bt-latdiq|Tetrapoda|Dört üyeliler|Dört bacaklı omurgalılar}}
****** Sınıf {{bt-latdiq|Amphibia|amfibyumlar}}
****** Seri {{bt-lattr|Amniota|Amniyotik yumurtalılar}}
******* Sınıf {{bt-latdiq|Sauropsida|Sürüngenler}}
******* Sınıf {{bt-latdiq|Aves|Kuşlar}}
******* Sınıf {{bt-latdiq|Synapsida|Memelimsi sürüngenler}}
******* Sınıf {{bt-latdiq|Mammalia|Memeliler}}
[[Kategoriye:Chordate]]
qhpt2zmfq2vz3bs0qaao76or307z12l
557889
557887
2026-10-03T15:41:19Z
Maviulke
34834
/* Sınıflandırma */
557889
wikitext
text/x-wiki
== Sınıflandırma ==
* '''Şube Chordata'''
** bın şube {{bt-latdiq|Cephalochordata|Kafatassızlar}}
** Klad [[Olfactores]]
*** bın şube {{bt-latdiq|Urochordata|Tulumlular}}
*** bın şube {{bt-latdiq|Vertebrata|Omurgalılar}}
**** İnfra şube {{bt-latdiq|Agnatha|Çenesiz balıklar}}
***** Sınıf {{bt-latdiq|Myxini {{!}}Myxini veya Hyperotreti|}}
***** Sınıf {{bt-latdiq|Conodonta|}}
***** Sınıf {{bt-latdiq|Hyperoartia|}}
***** Sınıf {{bt-latdiq|Cephalaspidomorphi|Klorek fekınıni}}
***** Sınıf {{bt-latdiq|Pteraspidomorphi|}}
**** İnfra şube {{bt-latdiq|Gnathostomata|Raştay henıkıni}}
***** Sınıf {{bt-latdiq|Placodermi|Maseyê zırhıni}}
***** Sınıf {{bt-latdiq|Chondrichthyes|Kıkırdaklı balıklar}}
***** Sınıf {{bt-latdiq|Acanthodii|Dikenli yüzgeçliler}}
***** ser sınıf {{bt-latdiq|Osteichthyes|Kemikli balıklar}}
****** Sınıf {{bt-latdiq|Actinopterygii|Işınsal yüzgeçliler}}
****** Sınıf {{bt-latdiq|Sarcopterygii|Et yüzgeçliler}}
***** ser sınıf {{bt-latdiq|Tetrapoda|Çehar lıngıni}}
****** Sınıf {{bt-latdiq|Amphibia|amfibiki}}
****** Seri {{bt-latdiq|Amniota|Amniyotik hakınıni}}
******* Sınıf {{bt-latdiq|Sauropsida|Sürüngenler}}
******* Sınıf {{bt-latdiq|Aves|Mırıçıki}}
******* Sınıf {{bt-latdiq|Synapsida|Memelimsi sürüngenler}}
******* Sınıf {{bt-latdiq|Mammalia|Çıceyıni}}
[[Kategoriye:Chordate]]
8b7wjeqe1f9lkaeztsp68uqg81ibohq
557890
557889
2026-10-03T15:42:04Z
Maviulke
34834
557890
wikitext
text/x-wiki
== Rêznayış ==
* '''Şube Chordata'''
** bın şube {{bt-latdiq|Cephalochordata|Kafatassızlar}}
** Klad [[Olfactores]]
*** bın şube {{bt-latdiq|Urochordata|Tulumlular}}
*** bın şube {{bt-latdiq|Vertebrata|Omurgalılar}}
**** İnfra şube {{bt-latdiq|Agnatha|Çenesiz balıklar}}
***** Sınıf {{bt-latdiq|Myxini {{!}}Myxini veya Hyperotreti|}}
***** Sınıf {{bt-latdiq|Conodonta|}}
***** Sınıf {{bt-latdiq|Hyperoartia|}}
***** Sınıf {{bt-latdiq|Cephalaspidomorphi|Klorek fekınıni}}
***** Sınıf {{bt-latdiq|Pteraspidomorphi|}}
**** İnfra şube {{bt-latdiq|Gnathostomata|Raştay henıkıni}}
***** Sınıf {{bt-latdiq|Placodermi|Maseyê zırhıni}}
***** Sınıf {{bt-latdiq|Chondrichthyes|Kıkırdaklı balıklar}}
***** Sınıf {{bt-latdiq|Acanthodii|Dikenli yüzgeçliler}}
***** ser sınıf {{bt-latdiq|Osteichthyes|Kemikli balıklar}}
****** Sınıf {{bt-latdiq|Actinopterygii|Işınsal yüzgeçliler}}
****** Sınıf {{bt-latdiq|Sarcopterygii|Et yüzgeçliler}}
***** ser sınıf {{bt-latdiq|Tetrapoda|Çehar lıngıni}}
****** Sınıf {{bt-latdiq|Amphibia|amfibiki}}
****** Seri {{bt-latdiq|Amniota|Amniyotik hakınıni}}
******* Sınıf {{bt-latdiq|Sauropsida|Sürüngenler}}
******* Sınıf {{bt-latdiq|Aves|Mırıçıki}}
******* Sınıf {{bt-latdiq|Synapsida|Memelimsi sürüngenler}}
******* Sınıf {{bt-latdiq|Mammalia|Çıceyıni}}
[[Kategoriye:Chordate]]
c29trcaikjjy3d2jw8qjtipabzgn2i4
557891
557890
2026-10-03T15:42:25Z
Maviulke
34834
557891
wikitext
text/x-wiki
== Rêznayış ==
* '''Şube Chordata'''
** bın şube {{bt-latdiq|Cephalochordata|Kafatassızlar}}
** Klad [[Olfactores]]
*** bın şube {{bt-latdiq|Urochordata|Tulumlular}}
*** bın şube {{bt-latdiq|Vertebrata|Omurgalılar}}
**** İnfra şube {{bt-latdiq|Agnatha|Çenesiz balıklar}}
***** Sınıf {{bt-latdiq|Myxini {{!}}Myxini veya Hyperotreti|}}
***** Sınıf {{bt-latdiq|Conodonta|}}
***** Sınıf {{bt-latdiq|Hyperoartia|}}
***** Sınıf {{bt-latdiq|Cephalaspidomorphi|Klorek fekınıni}}
***** Sınıf {{bt-latdiq|Pteraspidomorphi|}}
**** İnfra şube {{bt-latdiq|Gnathostomata|Raştay henıkıni}}
***** Sınıf {{bt-latdiq|Placodermi|Maseyê zırhıni}}
***** Sınıf {{bt-latdiq|Chondrichthyes|Kıkırdaklı balıklar}}
***** Sınıf {{bt-latdiq|Acanthodii|Dikenli yüzgeçliler}}
***** ser sınıf {{bt-latdiq|Osteichthyes|Kemikli balıklar}}
****** Sınıf {{bt-latdiq|Actinopterygii|Işınsal yüzgeçliler}}
****** Sınıf {{bt-latdiq|Sarcopterygii|Et yüzgeçliler}}
***** ser sınıf {{bt-latdiq|Tetrapoda|Çehar lıngıni}}
****** Sınıf {{bt-latdiq|Amphibia|amfibiki}}
****** Seri {{bt-latdiq|Amniota|Amniyotik hakınıni}}
******* Sınıf {{bt-latdiq|Sauropsida|Sürüngenler}}
******* Sınıf {{bt-latdiq|Aves|Mırıçıki}}
******* Sınıf {{bt-latdiq|Synapsida|Memelimsi sürüngenler}}
******* Sınıf {{bt-latdiq|Mammalia|Çıceyıni}}
{{Taxonbar}}
[[Kategoriye:Chordate]]
j5cvsmyafv6ai45kqj1hoxfokfsty5r
557892
557891
2026-10-03T17:25:37Z
Maviulke
34834
557892
wikitext
text/x-wiki
{{Databox }}
== Rêznayış ==
* '''Şube Chordata'''
** bın şube {{bt-latdiq|Cephalochordata|Bêkafıki}}
** Klad [[Olfactores]]
*** bın şube {{bt-latdiq|Urochordata|}}
*** bın şube {{bt-latdiq|Vertebrata|}}
**** İnfra şube {{bt-latdiq|Agnatha|Maseyê bêhenıkıni}}
***** Sınıf {{bt-latdiq|Myxini {{!}}Myxini veya Hyperotreti|}}
***** Sınıf {{bt-latdiq|Conodonta|}}
***** Sınıf {{bt-latdiq|Hyperoartia|}}
***** Sınıf {{bt-latdiq|Cephalaspidomorphi|Klorek fekınıni}}
***** Sınıf {{bt-latdiq|Pteraspidomorphi|}}
**** İnfra şube {{bt-latdiq|Gnathostomata|Raştay henıkıni}}
***** Sınıf {{bt-latdiq|Placodermi|Maseyê zırhıni}}
***** Sınıf {{bt-latdiq|Chondrichthyes|}}
***** Sınıf {{bt-latdiq|Acanthodii|}}
***** ser sınıf {{bt-latdiq|Osteichthyes|Maseyê esteyıni}}
****** Sınıf {{bt-latdiq|Actinopterygii|}}
****** Sınıf {{bt-latdiq|Sarcopterygii|}}
***** ser sınıf {{bt-latdiq|Tetrapoda|Çehar lıngıni}}
****** Sınıf {{bt-latdiq|Amphibia|amfibiki}}
****** Seri {{bt-latdiq|Amniota|Amniyotik hakınıni}}
******* Sınıf {{bt-latdiq|Sauropsida|}}
******* Sınıf {{bt-latdiq|Aves|Mırıçıki}}
******* Sınıf {{bt-latdiq|Synapsida|}}
******* Sınıf {{bt-latdiq|Mammalia|Çıceyıni}}
{{Taxonbar}}
[[Kategoriye:Chordate]]
kh06hisvq7ifd7f8rjgy1f2l2sgyiv3
557906
557892
2026-10-03T17:57:21Z
Maviulke
34834
557906
wikitext
text/x-wiki
{{Databox }}
== Rêznayış ==
* '''Şube Chordata'''
** bın şube {{bt-latdiq|Cephalochordata|Bêkafıki}}
** Klad [[Olfactores]]
*** bın şube {{bt-latdiq|Urochordata|}}
*** bın şube {{bt-latdiq|Vertebrata|}}
**** İnfra şube {{bt-latdiq|Agnatha|Maseyê bêhenıkıni}}
***** Sınıf {{bt-latdiq|Myxini {{!}}Myxini veya Hyperotreti|}}
***** Sınıf {{bt-latdiq|Conodonta|}}
***** Sınıf {{bt-latdiq|Hyperoartia|}}
***** Sınıf {{bt-latdiq|Cephalaspidomorphi|Klorek fekınıni}}
***** Sınıf {{bt-latdiq|Pteraspidomorphi|}}
**** İnfra şube {{bt-latdiq|Gnathostomata|Raştay henıkıni}}
***** Sınıf {{bt-latdiq|Placodermi|Maseyê zırhıni}}
***** Sınıf {{bt-latdiq|Chondrichthyes|}}
***** Sınıf {{bt-latdiq|Acanthodii|}}
***** ser sınıf {{bt-latdiq|Osteichthyes|Maseyê esteyıni}}
****** Sınıf {{bt-latdiq|Actinopterygii|}}
****** Sınıf {{bt-latdiq|Sarcopterygii|}}
***** ser sınıf {{bt-latdiq|Tetrapoda|Çehar lıngıni}}
****** Sınıf {{bt-latdiq|Amphibia|amfibiki}}
****** Seri {{bt-latdiq|Amniota|Amniyotik hakınıni}}
******* Sınıf {{bt-latdiq|Sauropsida|}}
******* Sınıf {{bt-latdiq|Aves|Mırıçıki}}
******* Sınıf {{bt-latdiq|Synapsida|}}
******* Sınıf {{bt-latdiq|Mammalia|Çıceyıni}}
{{Kontrolê_otoriteyi}}
{{Taxonbar}}
[[Kategoriye:Chordate]]
i2s8uzzyiyfd81f8f2bhhlazebim3d7
Şablon:Bt-latdiq
10
100706
557888
2026-10-03T15:37:27Z
Maviulke
34834
Ebe zerrekê '<includeonly>{{#if:{{{s|}}}|{{#switch:{{{s}}}|0=|1=<span style{{Eq}}"color:#696969">|2=<nowiki>[</nowiki>[[syn.]] |3=<span style{{Eq}}"color:#696969"><nowiki>[</nowiki>[[syn.]] |<span style{{Eq}}"color:{{{s}}}">}} {{#if:{{{1|}}}|<span style{{Eq}}"font-style:italic;" xml:lang{{Eq}}"LA" lang{{Eq}}"LA">{{{1}}}</span>{{#if:{{{aut|}}}|<span style{{Eq}}"font-variant:small-caps;font-style:normal;"> {{{aut}}}</span>}}{{#if:{{{txt|}}}| {{{t...' ra pela newiye vıraziye
557888
wikitext
text/x-wiki
<includeonly>{{#if:{{{s|}}}|{{#switch:{{{s}}}|0=|1=<span style{{Eq}}"color:#696969">|2=<nowiki>[</nowiki>[[syn.]] |3=<span style{{Eq}}"color:#696969"><nowiki>[</nowiki>[[syn.]] |<span style{{Eq}}"color:{{{s}}}">}} {{#if:{{{1|}}}|<span style{{Eq}}"font-style:italic;" xml:lang{{Eq}}"LA" lang{{Eq}}"LA">{{{1}}}</span>{{#if:{{{aut|}}}|<span style{{Eq}}"font-variant:small-caps;font-style:normal;"> {{{aut}}}</span>}}{{#if:{{{txt|}}}| {{{txt}}}}}{{#if:{{{2|}}}| — }}}}{{#if:{{{2|}}}|{{{2}}}}}{{#if:{{{3|}}}|
 ya da {{{3}}}}}{{#if:{{{4|}}}| ya da {{{4}}}}}{{#if:{{{5|}}}| ya da {{{5}}}}}{{#if:{{{6|}}}| ya da {{{6}}}}}{{#switch:{{{s}}}|0=|1=</span>|2=]|3=]</span>|</span>}}|{{#if:{{{1|}}}|<span style{{Eq}}"font-style:italic;" xml:lang{{Eq}}"LA" lang{{Eq}}"LA">{{#if:{{{b|}}}|'''[[{{{1|}}}]]'''|[[{{{1}}}]]}}</span>{{#if:{{{aut|}}}|<span style{{Eq}}"font-variant:small-caps;font-style:normal;"> {{{aut}}}</span>}}{{#if:{{{txt|}}}| {{{txt}}}}}{{#if:{{{2|}}}| — }}}}{{#if:{{{2|}}}|[[{{{2}}}]]}}{{#if:{{{3|}}}| ya da [[{{{3}}}]]}}{{#if:{{{4|}}}| ya da [[{{{4}}}]]}}{{#if:{{{5|}}}| ya da [[{{{5}}}]]}}{{#if:{{{6|}}}| ya da [[{{{6}}}]]}}}}</includeonly><noinclude>{{doc}}[[Kategori:Biyoloji şablonları|{{SAYFAADI}}]]</noinclude>
57lws6iwy1hktpq34hpl2hq6xyrvbm6
Modul:Taxonbar/whitelist
828
100707
557902
2026-10-03T17:52:54Z
Maviulke
34834
Ebe zerrekê 'local p = {} --returns any combination of strict/lax/all acceptable instance-of's, --either as a table for use inside [[Module:Taxonbar]] or another module, --or as an ordered list for use in documentation. function p.whitelist( frame ) local listType = frame.args[1] local documentation = frame.args[2] local outList = {} local acceptableInstanceOf_Strict = { --table order == display order 'Q16521', --taxon 'Q310890', --monotypic taxon 'Q4...' ra pela newiye vıraziye
557902
Scribunto
text/plain
local p = {}
--returns any combination of strict/lax/all acceptable instance-of's,
--either as a table for use inside [[Module:Taxonbar]] or another module,
--or as an ordered list for use in documentation.
function p.whitelist( frame )
local listType = frame.args[1]
local documentation = frame.args[2]
local outList = {}
local acceptableInstanceOf_Strict = { --table order == display order
'Q16521', --taxon
'Q310890', --monotypic taxon
'Q47487597', --monotypic fossil taxon
'Q2568288', --ichnotaxon
'Q23038290', --fossil taxon
'Q59278506', --ootaxon
'Q98961713', --extinct taxon
'Q58051350', --paraphyletic group (subclass of taxon)
}
local acceptableInstanceOf_Lax = { --table order == display order
'Q42621', --hybrid
'Q235536', --incertae sedis
'Q713623', --clade
'Q848328', --serotype
'Q857968', --candidatus
'Q17487588', --unavailable combination
'Q124477390', --taxon hypothesis
}
if listType == 'strict' then outList = acceptableInstanceOf_Strict
elseif listType == 'lax' then outList = acceptableInstanceOf_Lax
else --elseif listType == 'all' then --concatenate strict + lax IIF requested
local acceptableInstanceOf_All = {}
local i = 0
for _, v in pairs( acceptableInstanceOf_Strict ) do
i = i + 1
acceptableInstanceOf_All[i] = v
end
for _, v in pairs( acceptableInstanceOf_Lax ) do
i = i + 1
acceptableInstanceOf_All[i] = v
end
outList = acceptableInstanceOf_All
end
if (documentation == nil) or --module only
(documentation and documentation == '')
then
local out = {}
for k, v in pairs( outList ) do
out[v] = k --output Q# as keys for easier searching within Module:Taxonbar
end
return out
elseif (documentation == 'docdoc') then --self-documentation only
local selfdocout = 'myWhitelist = {\n'
for k, q in pairs( outList ) do
selfdocout = selfdocout..'\t\''..q..'\' = '..k..',\n'
end
selfdocout = selfdocout..'}'
local args = { ['lang'] = 'lua',
['code'] = selfdocout }
out = frame:expandTemplate{ title = 'Syntaxhighlight', args = args }
return out
else --normal documentation only
local out = ''
for _, q in pairs( outList ) do
local Q = frame:expandTemplate{ title = 'Q', args = { q } }
out = out..'# '..Q..'\n'
end
out = mw.ustring.gsub(out, '%s+$', '')
return out
end
end
return p
40qycyg4pq5dgwa2t859ci1hk9zyx1n
Dı sımeyıni
0
100708
557920
2026-10-03T19:25:45Z
Asmen
19
Asmen, pela [[Dı sımeyıni]] ra kırışt pela [[Dısımıni]]: Raştkerdış (gramer, imla ûçb.)
557920
wikitext
text/x-wiki
#HETENAYIŞ [[Dısımıni]]
6aeeexptqgy3fxzfnor6nrr2zfbnieb