Modul:Åtgärdskategorier Wikidata
Utseende
Dokumentation [visa] [redigera] [historik] [rensa sidcachen]
Den här modulen lägger in åtgärdskategorier relaterade till Wikidata. Modulen ligger normalt inte direkt i artiklar, utan via andra moduler eller mallar. Idag ligger den bara i gruppen av utvalda artiklar, men den mängden går att utöka när man vill. funktionen p.atgard ska ha ett WD-objekt som invärde. Om det saknas, så hämtas Wikidata-objektet för den artikel modulen ligger i.
En undantagslista för Property P569 (födelsedatum) ligger överst. Den är för artiklar där det i praktiken är omöjligt att lägga in ett värde på Wikidata. Innan ett sådant undantag läggs in, överväg att istället lägga in ett värde med dålig precision eller med somevalue.
--Undantagslista för P569
local p569 = {['Oxiemästaren'] = ''}
local p570 = {['testsida'] = ''}
local pcomcat = {['Ödestuga'] = ''}
p = {}
function p.P373(frame)
local ns = mw.title.getCurrentTitle().namespace
if ns ~= 14 and ns ~= 0 then
return ''
end
if pcomcat[mw.title.getCurrentTitle().text] then
return ''
end
local link = frame:getParent().args[1] or mw.title.getCurrentTitle().text
link = mw.text.trim(link)
if frame:getParent().args[1] and mw.getCurrentFrame():preprocess('{{PAGENAME:' .. frame:getParent().args[1] .. '}}') ~= frame:getParent().args[1] then
link = mw.getCurrentFrame():preprocess('{{PAGENAME:' .. frame:getParent().args[1] .. '}}')
end
link = mw.getCurrentFrame():preprocess('{{#titleparts:'..link..'}}')
local entity = mw.wikibase.getEntityObject()
if not entity then
if ns == 0 then
return '[[Kategori:Wikipedia:Artiklar som saknar Wikidataobjekt]][[Kategori:Wikipedia:Alla artiklar med åtgärdsbehov relaterade till Wikidata]]'
elseif ns == 14 then
return '[[Kategori:Wikipedia:Sidor som saknar Wikidataobjekt]]'
end
end
if not entity.claims or not entity.claims.P373 then
if ns == 0 then
return '[[Kategori:Wikipedia:Artiklar med Commonscatmall som saknar property P373]][[Kategori:Wikipedia:Alla artiklar med åtgärdsbehov relaterade till Wikidata]]'
elseif ns == 14 then
return '[[Kategori:Wikipedia:Sidor med Commonscatmall som saknar property P373]]'
end
else
if entity.claims.P373[1].mainsnak.snaktype == 'value' then
local linkwd = entity.claims.P373[1].mainsnak.datavalue.value
if linkwd ~= link then
if ns == 0 then
return '[[Kategori:Wikipedia:Artiklar med Commonscatmall där property P373 har ett annat värde än mallen]][[Kategori:Wikipedia:Alla artiklar med åtgärdsbehov relaterade till Wikidata]]'
elseif ns == 14 then
return '[[Kategori:Wikipedia:Sidor med Commonscatmall där property P373 har ett annat värde än mallen]]'
end
else
return ''-- Om allt funkar som det ska
end
else
if ns == 0 then
return '[[Kategori:Wikipedia:Artiklar med Commonscatmall där property P373 har novalue eller somevalue]][[Kategori:Wikipedia:Alla artiklar med åtgärdsbehov relaterade till Wikidata]]'
elseif ns == 14 then
return '[[Kategori:Wikipedia:Sidor med Commonscatmall där property P373 har novalue eller somevalue]]'
end
end
end
end
function p.atgard(item)
local title = mw.title.getCurrentTitle()
if title.namespace ~= 0 then
return ''
end
if not item or not item.id then
item = mw.wikibase.getEntityObject()
end
if not item then
return '[[Kategori:Wikipedia:Artiklar som saknar Wikidataobjekt]][[Kategori:Wikipedia:Alla artiklar med åtgärdsbehov relaterade till Wikidata]]'
end
local numberoflabels = 0
if item.labels then
for i, label in pairs(item.labels) do
numberoflabels = numberoflabels + 1
end
end
local numberofdescriptions = 0
if item.descriptions then
for i, label in pairs(item.descriptions) do
numberofdescriptions = numberofdescriptions + 1
end
end
cat = {}
local manniska = false
if not item.claims then
table.insert(cat, '[[Kategori:Wikipedia:Artiklar som helt saknar Wikidata-egenskaper]]')
else
if not item.claims.P31 and not item.claims.P279 then
table.insert(cat, '[[Kategori:Wikipedia:Artiklar som saknar grundläggande Wikidata-egenskap P31/P279]]')
else
if item.claims.P31 then
for i, claim in pairs(item.claims.P31) do
if claim.mainsnak.snaktype == 'value' and claim.mainsnak.datavalue.value['numeric-id'] == 5 then --P31:Q5 "instance of human"
manniska = true
end
end
end
end
end
if not item.labels or not item.labels.sv then
table.insert(cat, '[[Kategori:Wikipedia:Artiklar som saknar svensk Wikidata-etikett]]')
end
if numberoflabels < 2 then
table.insert(cat, '[[Kategori:Wikipedia:Artiklar som har Wikidata-etikett på färre än två språk]]')
end
if numberofdescriptions < 2 then
table.insert(cat, '[[Kategori:Wikipedia:Artiklar som har Wikidata-beskrivning på färre än två språk]]')
elseif not item.descriptions.sv then
table.insert(cat, '[[Kategori:Wikipedia:Artiklar som saknar svensk Wikidata-beskrivning]]')
end
if manniska and not item.claims.P21 then
table.insert(cat, '[[Kategori:Wikipedia:Biografier som saknar Wikidata-egenskap för kön P21]]')
end
if manniska and not item.claims.P569 and not p569[title.text] then
table.insert(cat, '[[Kategori:Wikipedia:Biografier som saknar Wikidata-egenskap för födelsedatum P569]]')
end
if manniska and (item.claims.P569 or p569[title.text]) and not item.claims.P570 and not p570[title.text] then
--kollar om födelsedag finns (alternativt finns i undantagslistan) och det saknas dödsdag, samt kollar att det inte finns i undantagslistan
local fodelsedag = 0
if item.claims.P569 and item.claims.P569[1].mainsnak.snaktype == 'value' then -- krånglar inte till det, utan tar bara första värdet och kollar så det inte är "no/somevalue" här
local s = item.claims.P569[1].mainsnak.datavalue.value.time
if string.sub(s, 1, 1) == '-' then -- årtal före kristus
fodelsedag = 0
else
s = string.sub(s, 2) -- tar bort inledande +-tecken
s = string.sub(s, 1, string.find( s, '-' ) -1)
fodelsedag = tonumber(s)
end
if fodelsedag + 125 < tonumber(os.date('%Y')) then -- Om någon anges vara äldre än 125 år, så borde det finnas ett dödsdatum
table.insert(cat, '[[Kategori:Wikipedia:Biografier som saknar Wikidata-egenskap för dödsdatum P570]]')
end
end
end
if #cat > 0 then
return table.concat(cat) .. '[[Kategori:Wikipedia:Alla artiklar med åtgärdsbehov relaterade till Wikidata]]'
end
return ''
end
return p