Modul:Overgrupper

Fra Wikipedia, den frie encyklopedi
Moduldokumentasjon

Formål[rediger kilde]

For bruk i artikler om biologiske grupper. Henter nærmeste overgruppe fra Wikidata, med lenke til artikkel hvis det finnes.

Skal etter hvert utvides til å kunne gi tre (eller valgfritt antall?) overgrupper i «stigende» rekkefølge, separert med <br />, men først må Wikidata API få støtte for å hente mer enn bare etikett og lenke fra andre items enn inneværende. Mulighet for å falle tilbake på vitenskapelig navn ved manglende etikett, og for å formatere vitenskapelig arts- og slektsnavn i kursivv, må også vente på dette. Se m:Talk:Wikidata/Deployment Questions#Phase II and Lua.

Bruk[rediger kilde]

Modulen brukes ved å legge inn {{#invoke:Overgrupper|liste}} i en mal. Malen {{Overgrupper}} har implementert dette.

Vedlikeholdskategorier[rediger kilde]

local p = {}
 
-- Returner overgruppe(r) til artikkelen

function cE(prop)
    if prop then
        local qnr =  prop[1].mainsnak.datavalue.value["numeric-id"]
        local lenke = mw.wikibase.sitelink('Q' .. qnr)
        local etikett =  mw.wikibase.label('Q' .. qnr)
        if lenke and etikett then
            return '[[' .. lenke .. '|' .. etikett .. ']]'
        elseif lenke then
            return '[[' .. lenke .. ']][[Kategori:Artikler med overgrupper som mangler etikett på Wikidata]]'
        elseif etikett then
            return '[[' .. etikett .. ']][[Kategori:Artikler med overgrupper som mangler nowiki-lenke på Wikidata]]'
            -- kan i noen tilfeller gi blå lenker som skulle vært røde, men likevel bedre enn ulenket?
        else
        	return '[[Kategori:Artikler med overgrupper som mangler etikett på Wikidata]][[Kategori:Artikler med overgrupper som mangler nowiki-lenke på Wikidata]]'
		end
    else
        return false
	end
end

function p.liste(frame)
    if not mw.wikibase then
        return ""
    end
    local artikkel = mw.wikibase.getEntityObject()
    if not artikkel then
        return "[[Kategori:Artikler som ikke er koblet til Wikidata]]"
    end
    local claims = artikkel.claims
    if not claims then
        return "[[Kategori:Artikler som mangler utsagn på Wikidata]]"
    end
	if cE(artikkel.claims.P171) then -- nærmeste overgruppe
		return cE(artikkel.claims.P171)
	end
    local p105 = artikkel.claims.P105 -- taksonomisk kategori
    if not p105 then
		return "[[Kategori:Artikler som mangler utsagn om taksonomisk kategori på Wikidata]]"
	end
	local kat = artikkel.claims.P105[1].mainsnak.datavalue.value["numeric-id"]
	if kat == 36732 then -- kingdom
		if cE(artikkel.claims.P273) then -- domain
			return cE(artikkel.claims.P273)
		end
	elseif kat == 38348 then -- phylum
		if cE(artikkel.claims.P75) then -- kingdom
			return cE(artikkel.claims.P75)
		elseif cE(artikkel.claims.P273) then -- domain
			return cE(artikkel.claims.P273)
		end
	elseif kat == 37517 then -- class
		if cE(artikkel.claims.P76) then -- phylum
			return cE(artikkel.claims.P76)
		elseif cE(artikkel.claims.P75) then -- kingdom
			return cE(artikkel.claims.P75)
		elseif cE(artikkel.claims.P273) then -- domain
			return cE(artikkel.claims.P273)
		end
	elseif kat == 36602 then -- order
		if cE(artikkel.claims.P77) then -- class
			return cE(artikkel.claims.P77)
		elseif cE(artikkel.claims.P76) then -- phylum
			return cE(artikkel.claims.P76)
		elseif cE(artikkel.claims.P75) then -- kingdom
			return cE(artikkel.claims.P75)
		elseif cE(artikkel.claims.P273) then -- domain
			return cE(artikkel.claims.P273)
		end
	elseif kat == 35409 then -- family
		if cE(artikkel.claims.P70) then -- order
			return cE(artikkel.claims.P70)
		elseif cE(artikkel.claims.P77) then -- class
			return cE(artikkel.claims.P77)
		elseif cE(artikkel.claims.P76) then -- phylum
			return cE(artikkel.claims.P76)
		elseif cE(artikkel.claims.P75) then -- kingdom
			return cE(artikkel.claims.P75)
		elseif cE(artikkel.claims.P273) then -- domain
			return cE(artikkel.claims.P273)
		end
	elseif kat == 34740 then -- genus
		if cE(artikkel.claims.P71) then -- family
			return cE(artikkel.claims.P71)
		elseif cE(artikkel.claims.P70) then -- order
			return cE(artikkel.claims.P70)
		elseif cE(artikkel.claims.P77) then -- class
			return cE(artikkel.claims.P77)
		elseif cE(artikkel.claims.P76) then -- phylum
			return cE(artikkel.claims.P76)
		elseif cE(artikkel.claims.P75) then -- kingdom
			return cE(artikkel.claims.P75)
		elseif cE(artikkel.claims.P273) then -- domain
			return cE(artikkel.claims.P273)
		end
	elseif kat == 7432 then -- species
		if cE(artikkel.claims.P74) then -- genus
			return cE(artikkel.claims.P74)
		elseif cE(artikkel.claims.P71) then -- family
			return cE(artikkel.claims.P71)
		elseif cE(artikkel.claims.P70) then -- order
			return cE(artikkel.claims.P70)
		elseif cE(artikkel.claims.P77) then -- class
			return cE(artikkel.claims.P77)
		elseif cE(artikkel.claims.P76) then -- phylum
			return cE(artikkel.claims.P76)
		elseif cE(artikkel.claims.P75) then -- kingdom
			return cE(artikkel.claims.P75)
		elseif cE(artikkel.claims.P273) then -- domain
			return cE(artikkel.claims.P273)
		end
	elseif kat == 68947 then -- subspecies
		if cE(artikkel.claims.P89) then -- species
			return cE(artikkel.claims.P89)
		elseif cE(artikkel.claims.P74) then -- genus
			return cE(artikkel.claims.P74)
		elseif cE(artikkel.claims.P71) then -- family
			return cE(artikkel.claims.P71)
		elseif cE(artikkel.claims.P70) then -- order
			return cE(artikkel.claims.P70)
		elseif cE(artikkel.claims.P77) then -- class
			return cE(artikkel.claims.P77)
		elseif cE(artikkel.claims.P76) then -- phylum
			return cE(artikkel.claims.P76)
		elseif cE(artikkel.claims.P75) then -- kingdom
			return cE(artikkel.claims.P75)
		elseif cE(artikkel.claims.P273) then -- domain
			return cE(artikkel.claims.P273)
		end
	end
end
return p