Módulo:WikidataCheck

Documentação do módulo[ver] [editar] [histórico] [purgar]

Esta predefinição permite comparar um parâmetro da predefinição a uma propriedade da Wikidata. Ele funciona através do módulo Lua Módulo:WikidataCheck.

Pode fazer uma chamada ao módulo desta maneira : {{WikidataCheck|property=p###|value={{{value|}}}|categoria=Category prefix|namespaces=0,14}}

  • |property= é a propriedade de p###. O "p" deve ser em minúscula.
  • |value= é o valor que se usa da predefinição. Este deve ser algo assim {{{id|}}}
  • |category= é o prefixo usado antes dos nomes das categorias. A categoria criada são "[prefix] não no Wikidata", "[prefix] mesmo que no Wikidata", e "[prefix] diferente do Wikidata".
    • É recomendado que você crie estas categorias com {{Categoria oculta}} antes de aplicar esta predefinição.
  • |namespaces= é uma lista númerica separada por vírgulas dos nomes de domínio que se aplicam nesta predefinição. O valor padrão é 0, o qual é o domínio de artigos.
Exemplo

Para a predefinição {{MusicBrainz artista}}, o código seguinte e o que se adiciona:

{{WikidataCheck|property=p343|value={{{mbid|{{{id|{{{1|}}}}}}}}}|category=MusicBrainz artist id|namespaces=0}}

Ver também

{{Tracks Wikidata}}

local p = {}

function p.wikidatacheck(frame)
    local pframe = frame:getParent()
    local config = frame.args -- os argumentos passados PELA predefinição, no wikitexto da própria predefinição
    local args = pframe.args -- os argumentos passados PARA a predefinição, no wikitexto que transclui a predefinição
    
    local property = config.property
    local value = config.value or ""
    local catbase = config.category
    local namespaces = config.namespaces
    local ok = false -- marcação de uma só forma para verificar se está em um bom namespace
    local ns = mw.title.getCurrentTitle().namespace
    for v in mw.text.gsplit( namespaces, ",", true) do
        if tonumber(v) == ns then
            ok = true
        end
    end
    if not ok then -- não está um dos namespaces aprovados
        return ""
    end
    local entity = mw.wikibase.getEntityObject()
    if not entity then -- sem item do Wikidata
        return "[[Categoria:!" .. catbase .. " que não está no Wikidata]]"
    end
    local claims = entity.claims or {}
    local hasProp = claims[property]
    if not hasProp then -- nenhuma reivindicação desta propriedade
        return "[[Categoria:!" .. catbase .. " que não está no Wikidata]]" -- ruim. Os bots precisam adicionar a propriedade
    end
    local propValue = hasProp[1].mainsnak.datavalue.value -- Esta deve, eventualmente, iterar sobre todos os valores possíveis?
    if value == "" then
        return nil -- Usando o Wikidata
    elseif propValue == value then
        return "[[Categoria:!" .. catbase .. " igual ao Wikidata]]" -- yay!
    else
        return "[[Categoria:!" .. catbase .. " diferente do Wikidata]]" -- necessita de revisão humana :(
    end
end

return p