Módulo:Infobox/Funções/Pessoa
DescriçãoEste Módulo tem funções auxiliares para criar infocaixas sobre pessoas. Faz parte da predefinição {{Infobox biografia2}}. Por favor consulte a predefinição para mais instruções. UsoOutra documentação:
-- Funções utilizadas dentro das infobox sobre pessoas
local p = {}
local localdata = require( 'Módulo:Infobox/Localdata' )
local item = localdata.item
local wikidata = require( "Módulo:Infobox/Wikidata" )
local general = require "Módulo:Infobox/Funções"
local datemodule = require "Módulo:Data"
local complexdate = require "Módulo:Data complexa"
local linguistic = require "Módulo:Linguística"
local militaryranks = require "Módulo:Dicionário Wikidata/Graus militares"
--=== Acordo em género
-- define a variável genêro para o elemento
local function getgender(id)
local vals = {
['Q6581072'] = 'f',
['Q6581097'] = 'm',
default = '?'
}
local gender = wikidata.formatStatements{entity = id, property = 'P21', displayformat = 'raw'}
return vals[gender] or vals.default
end
local gender = getgender(item)
-- recuperação de rótulos genotipados da Wikidata
local function genderedlabel(id, labelgender)
local label
if not labelgender then
labelgender = gender -- se o gênero não é indicado, é o da pessoa cuja infobox
end
if labelgender == 'f' then -- feminino: procure o texto em P2521 (texto feminino)
label = wikidata.formatStatements{entity = id, property = 'P2521', isinlang = 'pt', numval = 1, ucfirst = '-'}
elseif labelgender == 'm' then -- homem : procurar para o texto em P3321 (texto masculino)
label = wikidata.formatStatements{entity = id, property = 'P3321', isinlang = 'pt', numval = 1, ucfirst = '-'}
end
if not label then
label = wikidata.getLabel(id)
end
return label
end
-- === Gestão das datas
-- Links temáticos para datas
local datelinks = { -- link para a área apropriada de atividade
Q483501 = 'nas artes plásticas', -- artista
Q1028181 = 'nas artes plásticas', -- pintura
Q1281618 = 'nas artes plásticas', -- escultura
Q2309784 = 'no ciclismo', -- ciclista
Q16947657 = 'nas artes plásticas', -- litografia
Q11569986 = 'nas artes plásticas', -- gravura
Q13365770 = 'nas artes plásticas', -- gravador de cobre
Q21925567 = 'nas artes plásticas', -- serigrafia
Q10862983 = 'nas artes plásticas', -- aquafortiste
}
local function getdatetopic() -- Obtém o link mais apropriado para uma data baseada na ocupação
local claims = wikidata.stringTable{entity = item, property = 'P106', excludespecial = true, displayformat = "raw"}
if not claims then
return nil
end
for i, j in pairs(claims) do
if datelinks[j] then
return datelinks[j]
end
end
end
local linktopic = getdatetopic()
local unknowndatelabel = "data desconhecida"
local birthdate = localdata['data_nascimento'] or
localdata['nascimento_data'] or
wikidata.formatAndCat{
entity = item,
property = 'P569',
unknownlabel = unknowndatelabel,
minprecision = 9,
conjtype = 'or',
sorttype = 'chronological'
}
local dead = wikidata.getClaims{entity = item, property = 'P570'} -- usado como um booleano que diz que se uma pessoa está morta para mudar algum elemento de exibição
local deathdate = localdata ['morte_data'] or localdata['data_morte']
local wddeathdate = wikidata.formatAndCat{
entity = item,
property = 'P570',
unknownlabel = unknowndatelabel,
minprecision = 9,
conjtype = 'or',
sorttype = 'chronological',
}
local function format1(event, period, predecessor, together, successor, displayformat)
local mainstr = event
if predecessor then
local s = 'precedido por ' .. predecessor
if gender == 'f' then
s = 'precedido por ' .. predecessor
end
mainstr = mainstr .. '<small><br /> ' .. s .. '</small>'
end
if together then
local s = 'com ' .. together
mainstr = mainstr .. '<small><br /> ' .. s .. '</small>'
end
if successor then
local s = 'sucedido por ' .. successor
if gender == 'f' then
s = 'sucedido por ' .. successor
end
mainstr = mainstr .. '<small><br /> ' .. s .. '</small>'
end
return {type = 'row', label = period or '', value = function() return mainstr end}
end
-----------------
local function format2(event, period, predecessor, together, successor, displayformat)
if (not event) then
return nil
end
local rows = {}
local eventrow = {type = 'row1col', color = 'secondcolor', value = event }
table.insert(rows, eventrow)
if period then
period = '<span style="font-weight:normal">' .. period .. '</span>'
local periodrow = {type = 'row1col', color = '#F9F9F9', value = period }
table.insert(rows, periodrow)
end
if predecessor then
local prederow = {type = 'row', label = 'Predecessor', value = function() return predecessor end}
table.insert(rows, prederow)
end
if together then
local succrow = {type = 'row', label = 'Com', value = function() return together end}
table.insert(rows, succrow)
end
if successor then
local succrow = {type = 'row', label = 'Sucessor', value = function() return successor end}
table.insert(rows, succrow)
end
return {type = 'multi', rows = rows}
end
local function format3(event, period, predecessor, together, successor, displayformat, details)
if details then
details = '<span style="font-weight:normal">' .. details .. '</span>'
event = linguistic.conj({event, details}, "new line")
end
local mainrow = {type = 'row1col', color = 'secondcolor', value = event }
if period then
period = '<span style="font-weight:normal">' .. period .. '</span>'
end
local periodrow = {type = 'row1col', color = '#F9F9F9', value = period }
local successionrow = {
style = {['background-color'] = '#F9F9F9', ['padding-bottom'] = '2%'},
type = 'navbox',
inner = true,
previousval = function() return predecessor end,
nextval = function() return successor end,
}
return {type = 'multi', rows = {mainrow, periodrow, successionrow}}
end
local function timeline(localparam, wdconf, timelineformat, title, singtitle, details) -- data do poster: event (assume eventos já classificados)
local rows = {}
local function returnTable()
return {
type = "table",
title = title,
rows = rows
}
end
-- com dados locais
local val = localdata[localparam]
if val == '-' then
return nil
elseif val then
table.insert(rows, {type = 'row1col', color = 'secondcolor', value = val})
return returnTable()
end
-- com dados wikidata
if not wdconf then
return nil
end
wdconf.entity = wdconf.entity or item
wdconf.sorttype = wdconf.sorttype or "chronological"
wdconf.labelformat = wdconf.labelformat or function(id) return genderedlabel(id) end
wdconf.linktopic = wdconf.linktopic or "-"
wdconf.stilltrue = not dead -- se a pessoa está viva, nós usamos "de" em vez de "de" (mas quando está terminado, mas a data final está faltando, ela se torna falsa) em tradução
local statements = wikidata.getClaims(wdconf)
if not statements then
return nil
end
if #statements == 1 then
title = singtitle
end
local displayformats = {
A = format1,
B = format2,
C = format3,
}
local applyformat = displayformats[timelineformat] or displayformats['A']
rows = {}
for i, statement in pairs(statements) do
local event = linguistic.ucfirst(wikidata.formatStatement(statement, wdconf))
local predecessor = wikidata.getFormattedQualifiers(statement, {'P155', 'P1365'})
local together = wikidata.getFormattedQualifiers(statement, {'P1706', ''})
local successor = wikidata.getFormattedQualifiers(statement, {'P156', 'P1366'})
local period = wikidata.getFormattedDate(statement, {linktopic = wdconf.linktopic, stilltrue = not dead } ) -- dont pass all wdconf or else qualifiers will show up
local detailstr
if type(details) == "function" then
detailstr = details(statement)
end
local row = applyformat(event, period, predecessor, together, successor, wdconf, detailstr)
if row then
table.insert(rows, row)
end
end
table.insert(rows, {type = "external text", value = function() return wikidata.addTrackingCat(wdconf.property) end})
return returnTable()
end
local function dateandplace(thedate, theplace)
if thedate and theplace and mw.ustring.find(thedate, "desconhecido") and mw.ustring.find(theplace, "desconhecido") then
theplace = nil
thedate = mw.ustring.gsub(thedate, linguistic.ucfirst(unknowndatelabel), "Data e local desconhecido")
end
return linguistic.conj({thedate, theplace}, "new line")
end
--Título
function p.title(icon, style)
return general.title(icon, style)
end
--Imagem
function p.mainimage(cat)
-- pedido de ilustração apenas se a pessoa nasceu ou morreu depois de 1900, caso contrário, muitas vezes é impossível encontrar
local defaultimage = 'Padrao 2.svg'
local age = wikidata.stringTable{property = 'P569,P570', entity = item, displayformat = 'raw', excludespecial = true}
if age then
local pattern = "(%W)(%d+)%-(%d+)%-(%d+)"
local era, year = age[1]:match(pattern)
if (era == '-') or (tonumber(year)) < 1900 then
defaultimage = nil
end
end
return general.mainimage(cat or '!Artigos de biografia sem imagens', defaultimage)
end
-- Nomes
function p.othernames()
local names = {
--{'P1477', 'Nome nativo', 'Nomes nativos', 'nome nativo'}, --nome de nascimento mesmo que P1559
{'P1559', 'Nome no idioma nativo', 'Nomes nos idiomas nativos', 'nomecompleto', 'nome nativo'}, --nome de nascimento no idioma nativo
{'P1449', 'Apelido', 'Apelidos', 'apelido'}, -- sobrenome
{'P2001', 'Romanização revisada', 'Romanização revisada', 'romanização'},
{'P1942', 'McCune-Reischauer', 'McCune-Reischauer', 'romanização mccune-reischauer'},
-- {'P460', 'Pseudónimo', 'Pseudónimos', 'pseudónimo'}, -- igual a P742
{'P742', 'Pseudónimo', 'Pseudónimos', 'pseudónimo'},
{'P1782', 'Nome de cortesia', 'Nomes de cortesias', 'nome de cortesia'},
{'P1786', 'Nome póstumo', 'Nomes póstumos', 'nome póstumo'},
{'P1785', 'Nome de templo', 'Nomes de templo', 'nome de templo'},
{'P1787', 'Nome artístico', 'Nomes artísticos', 'nome artístico'},
{'P428', 'Abreviação em botânica', 'Abreviações em botânica', 'abreviação em botânica'}, --abreviação do autor botânico
{'P835', 'Abreviação', 'Abreviações', 'abreviação'}, -- citação de autor
{nil, 'Outros nomes', 'Outros nomes', 'outros_nomes'},
{nil, 'Conhecido por', 'Conhecido por', 'conhecido_por'},
}
local birthnamerow = { -- um pouco peculiar, tão distante
type = "row",
wikidata = function()
local s = wikidata.formatAndCat{entity = item, property = "P1559"}
if (not s) then
return nil
end
-- ver se o nome do valor se parece com o texto (tendo em conta a poluição dos marcadores de idioma
local label = mw.ustring.lower(wikidata.getLabel(item) or "")
local useless
if mw.ustring.find(mw.ustring.lower(s), mw.ustring.lower(label), 0, true) then
useless = true
end
if useless then
return nil
end
return s
end,
label = 'Nome nativo',
plurallabel = 'Nomes nativos',
value = {'nome_completo', 'nome_nativo'},
}
local rows = {type = "multi", rows = {birthnamerow}}
for i, j in pairs(names) do
local query
if j[1] and not localdata['outros nomes'] then -- quando existe um parâmetro "outros nomes", o Wikidata fica desabilitado para evitar riscos duplicados
query = {property = j[1], showqualifiers = {'P1721'}, conjtype = 'new line'}
end
table.insert(rows.rows, {type = 'row', value = j[4], wikidata = query, label = j[2], plurallabel = j[3]})
end
return rows
end
-- NASCIMENTO E MORTE
function p.birth() -- data de nascimento na primeira linha, local do nascimento no segundo
return {
type = 'row',
label = 'Nascimento',
value =
function()
local thedate = datemodule.dataInfobox{args = {[1] = 'nascimento', [2] = birthdate or '', [3] = deathdate or wddeathdate or '', qualificativo = linktopic, unknownlabel = "data desconhecida"}}
local theplace = localdata ['local_nascimento'] or localdata ['nascimento_local'] or localdata ['cidadenatal'] or wikidata.formatAndCat({entity =item, property= 'P19', rank = 'best', conjtype= ' ou ', unknownlabel = "local desconhecido"})
return dateandplace(thedate, theplace)
end
}
end
function p.death() -- mesma função que a função p.birth
--- de Wikidata apenas na ausência de dados locais
local ddate = deathdate --declarado para o módulo inteiro
if (not ddate) and (not localdata['data de desaparecimento']) then
deathdate = wddeathdate
end
local thedate = datemodule.dataInfobox{args = {[1] = 'morte', [2] = birthdate or '', [3] = deathdate or '', qualificativo = linktopic, unknownlabel = "data desconhecida"}}
local theplace = localdata['local_morte'] or wikidata.formatAndCat{entity = item, property= 'P20', rank = 'best', conjtype= ' ou ', unknownlabel = "local desconhecido"}
local val = dateandplace(thedate, theplace)
return
-- {type = 'row', rows = {
-- { -- desaparecimento
-- type = 'row',
-- label = 'Desaparecimento',
-- value = function() return --val end,
-- },
{ -- morte
type = 'row',
label = 'Morte',
value = function() return val end,
}
-- }}
end
function p.atividade()
return {
type = 'row',
label = "Período de atividade",
value = "período de atividade",
wikidata = function()
local startDate = wikidata.formatAndCat{entity = item, property = "P2031", conjtype = "or", sorttype = "chronological"}
local endDate = wikidata.formatAndCat{entity = item, property = "P2032", conjtype = "or", sorttype = "chronological"}
if not (startDate or endDate) then
return wikidata.formatAndCat{entity = item, property = 'P1317'}
end
return complexdate.daterange(startDate, endDate, {precision = 11})
end
}
end
function p.placeofburial()
return
{type = 'row', label = "Sepultamento", value = "sepultamento", property = 'P119'}
end
function p.nationality()
-- para melhorar as maneiras que Wikidata lida com nacionalidade: Império Alemão (1901-1918) República de Weimar (1918-1933))
local function wdDate()
local nation = require "Módulo:Country data".nationality
-- desativação se data de nascimento antes da era contemporânea: muitas imprecisões e anacronismos
local mindate = '1789'
local birthdate = wikidata.formatStatements{entity = item, property = 'P569', displayformat = 'raw', numval = 1}
if (not birthdate) or complexdate.before(mindate, birthdate) then
return nil
end
return {
property = 'P27',
-- vals = statements, -- statments é uma variável não declarada neste módulo
showdate = true,
entity = item,
conjtype = 'comma',
removedupes = true,
linktopic = '-',
displayformat =
function(snak)
local g = gender -- tipo da pessoa, para exibição do gentio
if g == '?' then -- se desconhecido, em masculino
g = 'm'
end
local val, success = nation(wikidata.getId(snak), g)
if not success then
val = wikidata.formatSnak(snak)
end
return val
end
}
end
return {
type = 'row',
label = 'Cidadania',
plurallabel = 'Cidadanias',
value = {'nacionalidade', 'cidadania', 'país'},
wikidata = wdDate() -- wdDate() devolve uma tabela
}
end
--Etnia
function p.etnia()
return
{type = 'row', label = "[[Etnia]]", value = "etnia", property = 'P172'}
end
-- língua materna
function p.nativelanguage()
return
{type = 'row', label = 'Língua materna', value = 'língua materna', property = 'P103'}
end
-- Domicílios
function p.places()
return {type = 'multi', rows = {
{
type = 'row',
label = 'Demo',
plurallabel = 'Demos',
value = 'demo',
wikidata = {property = 'P2462', showdate = true, sorttype= 'chronological', precision = 'year'},
},
{
type = 'row',
label = 'Residência',
plurallabel = 'Residências',
value = {'residência', 'residencia'},
wikidata = {property = 'P551', showdate = true, sorttype= 'chronological', precision = 'year'},
},
{
type = 'row',
label = 'Local de trabalho',
plurallabel = 'Local de trabalho',
value = 'local de trabalho',
wikidata = {property = 'P937', sorttype= 'chronological', showdate = true, precision = 'year'},
},
}}
end
-- carreira acadêmica
function p.education() -- a melhorar
return {
type = 'multi',
rows = {
{
type = 'row',
value = {'alma mater', 'formação', 'educação', 'formaçao'},
wikidata = {sorttype= 'chronological', property = 'P69', showdate = true, showqualifiers = 'P512', conjtype = 'new line', linktopic = '-'},
label = '[[Alma mater]]',
}, {
type = 'row',
value = {'orientador', 'orientadora', 'orientadores', 'orientadoras'},
property = 'P184',
label = '[[Orientador(a)(es/s)]]',
}
}
}
end
function p.occupation()
local speciallabels = {
f = {
['Q33999'] = '[[atriz]]',
['Q10798782'] = '[[atriz]]',
['Q10800557'] = '[[atriz]]',
['Q2405480'] = '[[atriz]]',
['Q2259451'] = '[[atriz]]',
['Q948329'] = '[[atriz]]'
},
m = {
['Q33999'] = '[[ator]]',
['Q10798782'] = '[[ator]]',
['Q10800557'] = '[[ator]]',
['Q10798782'] = '[[ator]]',
['Q2405480'] = '[[ator]]',
['Q2259451'] = '[[ator]]',
['Q948329'] = '[[ator]]'
}
}
return {
type = 'row',
value = {'atividade', 'atividades', 'profissão', 'ocupação', 'desporto'},
wikidata = {
property = 'P106',
defaultlink = '-',
defaultlinkquery = {property = 'P425'},
labelformat = function(id) return genderedlabel(id) end,
speciallabels = speciallabels[gender] or speciallabels['m'],
removedupes = true,
excludevalues = { -- ocupações que não merecem ser exibidas
'Q482980', -- autor
--'Q15980158', "autor de não-ficção" já foi traduzido como "ensaísta"
'Q18814623', -- autobiografia
'Q1209498', -- jurista-poeta
}
},
label = 'Atividade',
plurallabel = 'Atividades'
}
end
function p.employer()
return {
type = 'row',
value = 'empregador',
wikidata = {property = 'P108', showdate = true, sorttype= 'chronological'},
label = function() return localdata['titulo empregador'] or 'Empregador' end,
}
end
function p.victories()
local title, singtitle = "Vitórias", "Vitória"
local localparam = "vitoria"
local wdconf = {property = 'P2522'}
local displayformat = "B"
return timeline(localparam, wdconf, displayformat, title, singtitle)
end
function p.officialposition()
local title, singtitle = "Funções", "Função"
local localparam = "função"
local wdconf = {
property = 'P39',
rank = 'valid',
sorttype = 'inverted',
defaultlinkquery = {property = {'P2354', 'P2389', 'P453', 'P361', 'P108'}}, -- links padrão: lista, corpo direcionado ao corpo, "membro de", "parte de", empregador
}
-- em uma linha separada: jurisdição, "de", distrito eleitoral, diocese, afiliação, assembleia, partido, empregador
local details = function(statement) return wikidata.getFormattedQualifiers(statement, {'P1001', 'P642', 'P768', 'P708', 'P1416', 'P194', 'P108', 'P937'}) end
local displayformat = "C"
return timeline(localparam, wdconf, displayformat, title, singtitle, details)
end
function p.nobilitytitle()
local title, singtitle = "Títulos de nobreza", "Título de nobreza"
local localparam = "titulo de nobreza"
local wdconf = {
property = 'P97',
entity = item, rank = 'valid',
showqualifiers = {'P642'},
defaultlinkquery = {property = {'P2354', 'P361'}}, -- links padrão: list, body directed, "member of" e "part of"
}
local displayformat = "B"
return timeline(localparam, wdconf, displayformat, title, singtitle)
end
function p.honorifictitle()
local title, singtitle = "Título honoríficos", "Títulos honoríficos"
local localparam = "titulo honorifico"
local wdconf = {property = 'P511', entity = item, rank = 'valid'}
local displayformat = "C"
return timeline(localparam, wdconf, displayformat, title, singtitle)
end
function p.sepultura()
return {
type = 'images',
imageparameters = {'sepultura'},
defaultimages = nil,
defaultupright = 1,
uprightparameter = 'upright sepultura',
sizeparameter = 'tamanho urna', -- obsoleto
captionparameter = 'legenda sepultura',
defaultcaption = 'Vista da sepultura.',
property = 'P1442',
numval = 1,
}
end
function p.placa()
return {
type = 'images',
imageparameters = {'placa'},
defaultimages = nil,
defaultupright = 1,
uprightparameter = 'upright placa',
sizeparameter = 'tamanho placa', -- obsoleto
captionparameter = 'legenda placa',
defaultcaption = 'placa comemorativa',
property = 'P1801',
numval = 1,
}
end
function p.brazao()
return {
type = 'images',
imageparameters = {'brazão'},
defaultimages = nil,
defaultupright = 0.7,
uprightparameter = 'upright brazão',
sizeparameter = 'tamanho brazão', -- obsoleto
captionparameter = 'legenda brazão',
defaultcaption = 'brasão',
property = 'P94',
numval = 1,
}
end
function p.sinete()
return {
type = 'images',
imageparameters = {'emblema'},
defaultimages = nil,
defaultupright = 0.7,
uprightparameter = 'upright emblema',
sizeparameter = 'tamanho emblema', -- obsoleto
captionparameter = 'legenda emblema',
defaultcaption = 'emblema',
property = 'P158',
numval = 1,
}
end
function p.monogram()
return {
type = 'images',
imageparameters = {'monograma'},
defaultimages = nil,
defaultsize = '100px',
sizeparameter = 'tamanho monograma',
captionparameter = 'legenda monograma',
defaultcaption = 'Monograma',
property = 'P1543',
numval = 1,
}
end
function p.flag()
return {
type = 'images',
imageparameters = {'bandeira'},
defaultimages = nil,
defaultsize = '150px',
sizeparameter = 'tamanho bandeira',
captionparameter = 'legenda bandeira',
defaultcaption = 'Bandeira',
property = 'P41',
numval = 1,
}
end
function p.logo()
return {
type = 'images',
imageparameters = {'logotipo'},
defaultimages = nil,
defaultsize = '150px',
sizeparameter = 'tamanho logotipo',
captionparameter = 'legenda logotipo',
defaultcaption = 'Marca ou logotipo',
property = 'P154',
numval = 1,
}
end
function p.politicalparty()
return {
type = 'row',
value = 'partido político',
label = 'Partido político',
plurallabel = 'Partidos políticos',
wikidata = { property = 'P102', sorttype= 'chronological', showdate = true, conjtype = 'new line', excludespecial = true},
}
end
function p.memberof()
return {type = 'multi', rows = {
{
type = 'row',
value = 'ordem de cavalaria',
label = 'Ordens de Cavalarias',
plurallabel = 'Ordens de Cavalarias',
wikidata = {property = 'P550', sorttype= 'chronological', showdate = true},
},
{
type = 'row',
label = 'Membro de',
value = {'membro de', 'filiação'},
wikidata = {property = 'P463', sorttype= 'chronological', showdate = true, precision = 'year', textformat = 'minimum', conjtype = 'new line'},
},
}}
end
function p.awards()
local function awardsList()
local majorawards = require "Módulo:Dicionário Wikidata/Distinções"
local query = {
entity = item,
property= 'P166',
sorttype= 'chronological',
grouped = true,
showqualifiers = 'P642',
showdate= true,
precision = 'year',
conjtype = 'new line',
textformat = 'minimum',
linktopic = '-',
defaultlinkquery = {property = {'P2354', 'P361' , 'P1027'}},
excludevalues = 'Q15631401', -- membro da Royal Society, redundância com o campo "membro de" (P463)
speciallabels = majorawards,
labelformat = function(id) return genderedlabel(id) end,
}
local claims = wikidata.getClaims(query)
if (not claims) then
return nil
end
local str = wikidata.formatAndCat(query)
if #claims < 4 then
return str, #claims
end
--Se muitos valores, apenas exibir os importantes de [[Módulo: Dicionário Wikidata / Distinções]], e colocar os outros em um menu dobrável
--- recuperação dos importantes
local majorStr
local targetvalues = {}
for i, j in pairs(majorawards) do
table.insert(targetvalues, i)
end
query.targetvalue = targetvalues
query.value, query.claims, query.valuetable = nil, nil, nil -- aparentemente se não, por quê? BUG IMPORTANTE
majorStr = wikidata.formatAndCat(query)
--- dobrar dos outros
local message = "'''Lista detalhada'''"
local allAwardsTable = mw.html.create('div')
:addClass("toccolours mw-collapsible mw-collapsed")
:wikitext(message)
:css{border = "none"}
:tag('div')
:addClass("mw-collapsible-content")
:css{['line-height'] = '150%'} -- caso contrário, é realmente apertado
:wikitext( str)
:done()
:allDone()
return linguistic.conj({majorStr, tostring(allAwardsTable)}, "<br />"), #claims
end
return {
type = 'row',
value = {'prêmios', 'prémios', 'distincoes', 'distinções'},
label = 'Distinções',
singularlabel = 'Distinção',
wikidata = function() return awardsList() end
}
end
-- Influences
function p.influencedby()
return {
type = 'row',
label =
function(localdata, item)
if gender == 'f' then
return 'Influenciada por'
elseif gender == 'f' then
return 'Influenciado por'
else
return 'Influências'
end
end,
value = {'influencias', 'influências'},
wikidata = {property = 'P737'},
}
end
function p.influenced()
return {
type = 'row',
label = 'Influenciados',
value = {'influenciados', 'influenciou'},
}
end
-- Movimentos
function p.movement()
return
{
type = 'row',
label = 'Movimento',
value = {'movimento', 'movimentos', 'movimento(s)'},
wikidata = {property = 'P135', sorttype= 'chronological', showdate = true, precision = 'year'},
}
end
-- Religião
function p.religion()
return {type = 'multi', rows = {
{
type = 'row',
label = 'Religão',
plurallabel = 'Religiões',
value = {'religião', 'religiao'},
wikidata = {property = 'P140', sorttype= 'chronological', showdate = true, precision = 'year', excludevalues = 'Q7066'},
},
{
type = 'row',
label = 'Data de baptismo',
value = {'data de baptismo', 'data de batismo'},
property = 'P1636',
},
{
type = 'row',
label = 'Paróquia',
plurallabel = 'Paróquias',
value = {'paroquia', 'paróquia'},
property = 'P1290',
},
{
type = 'row',
label = 'Nome em religião',
plurallabel = 'Nomes em religião',
value = {'nome em religiao', 'nome em religião'},
property = 'P1635',
},
{
type = 'row',
label = 'Ordem religiosa',
plurallabel = 'Ordens religiosas',
value = 'ordem religiosa',
property = 'P611',
},
{
type = 'row',
label = 'Consagramento',
plurallabel = 'Consagramentos',
value = 'consagramento',
property = 'P1598',
},
{
type = 'row',
label =
function(localdata, item)
if gender == 'f' then
return 'Venerada por'
elseif gender == 'm' then
return 'Venerado por'
else
return 'Venerada por'
end
end,
value = 'venerado por',
property = 'P1049',
},
{
type = 'row',
label = 'Etapa de canonização',
value = 'etapa de canonização',
wikidata = {
property = 'P411',
labelformat = function(id) return genderedlabel(id) end,
},
},
}}
end
-- Carreira militar
function p.military()
return {type = 'multi', rows = {
{
type = 'row',
label = 'Exército',
plurallabel = 'Exércitos',
value = 'arma',
wikidata = {property = 'P241', showdate = true, sorttype= 'chronological', precision = 'year'},
},
{
type = 'row',
label = 'Grau militar',
plurallabel = 'Graus militares',
value = 'grau militar',
wikidata = {property = 'P410', showdate = true, sorttype= 'chronological', precision = 'year', speciallabels = militaryranks, conjtype ='new line'},
},
{
type = 'row',
label = 'Conflito',
plurallabel = 'Conflitos',
value = 'conflito',
wikidata = {property = 'P607', conjtype = 'new line', showdate = true, sorttype= 'chronological', precision = 'year'},
},
}}
end
-- Carreira de toureiro
function p.toureiro()
return {type = 'multi', rows = {
{
type = "row",
label = "Alternativo",
value = "alternativo",
wikidata = function() return wikidata.keyDate("Q2840411", item) end
},
{
type = "row",
label = "Confirmação alternativa",
value = "confirmacao alt",
wikidata = function() return wikidata.keyDate("Q23308805", item) end
},
}}
end
-- Desporto
function p.sport()
return {type = 'multi', rows = {
{
type = 'row',
label = 'Especialidade',
plurallabel = 'Especialidades',
value = 'especialidade',
wikidata = {property = 'P413',
labelformat = function(id) return genderedlabel(id) end,
},
},
{
type = 'row',
label = 'Disciplina desportiva',
plurallabel = 'Disciplinas desportivas',
value = {'disciplina desportiva', 'disciplina'},
wikidata = {property = 'P2416'},
},
{
type = 'row',
label = 'Mão de jogo',
value = 'mao de jogo',
wikidata = {property = 'P741'},
},
{
type = 'row',
label = 'Destreza de',
value = 'destreza',
wikidata = {property = 'P423'},
},
{
type = 'row',
label = 'Repescagem por',
plurallabel = 'Repescagens por',
value = 'repescagem',
wikidata = {
property = 'P647',
statementformat = function(statement)
local team = wikidata.formatStatement(statement)
local moment = wikidata.getFormattedQualifiers(statement, {'P793'}) or wikidata.getFormattedQualifiers(statement, {'P585'})
local rank = wikidata.getFormattedQualifiers(statement, {'P1836'})
if rank then
rank = require "Módulo:Name2text".ordinal(rank) .. ' escolha'
end
local qualifs = linguistic.conj({moment, rank}, ' – ')
if not qualifs then
return team
end
return team .. ' <small>(' .. qualifs .. ')</small>'
end
},
},
{
type = 'row',
label = 'Equipa',
plurallabel = 'Equipas',
value = 'equipa',
wikidata = {
property = 'P54',
sorttype= 'chronological',
conjtype = "new line",
statementformat = function(statement)
local str = wikidata.formatStatement(statement, {showdate = true})
local compets = wikidata.getFormattedQualifiers(statement, {"P1350"})
if tonumber(compets) and (tonumber(compets) > 1) then
compets = compets .. " jogos jogados"
elseif compets then
compets = compets .. " jogo jogado"
end
local points = wikidata.getFormattedQualifiers(statement, {"P1351"})
if tonumber(points) and (tonumber(points) > 1) then
points = points .. " pontos marcados"
elseif points then
points = points .. "ponto marcado"
end
local qualifiers = linguistic.conj{compets, points}
if qualifiers then
str= str .. " <small> – " .. qualifiers .. " </small>"
end
return str
end
}
},
{
type = 'row',
label = 'Jogos internationais',
value = 'jogos',
wikidata = {property = 'P1129', numval = 1},
},
{
type = 'row',
label = 'Título no xadrez',
plurallabel = 'Títulos no xadrez',
value = 'titulo no xadrez',
wikidata = {property = 'P2962', sorttype= 'chronological', showdate = true, precision = 'year'},
},
{
type = 'row',
label = 'Classificação Elo',
value = 'classificação elo',
wikidata = {property = 'P1087', numval = '3', sorttype = 'inverted', conjtype = 'new line', showdate = true, precision = 'month', removedupes = true},
},
{
type = 'row',
label = 'Registo realizado',
plurallabel = 'Registos realizados',
value = {'registo realizado', 'registro realizado'},
wikidata = {property = 'P1000', sorttype= 'chronological', showdate = true},
},
{
type = 'row',
label = 'Treinador',
plurallabel = 'Treinadores',
value = 'treinador',
wikidata = {property = 'P286', sorttype= 'chronological', showdate = true, precision = 'year'},
},
{
type = 'row',
label = 'Co-piloto',
plurallabel = 'Co-pilotos',
value = 'co-piloto',
wikidata = {property = 'P2095', sorttype= 'chronological', showdate = true, precision = 'year'},
},
{
type = 'row',
label = 'Patrocinador',
plurallabel = 'Patrocinadores',
value = {'patrono', 'patrocinador'},
wikidata = {property = 'P859', sorttype= 'chronological', showdate = true, precision = 'year'},
},
}}
end
-- Contatos
function p.contacts()
return {type = 'multi', rows = {
{
type = 'row',
label = localdata['estudante de'] or 'estudante',
plurallabel = 'estudantes',
value = {'estudante', 'estudantes'},
wikidata = {property = 'P1066', sorttype= 'chronological', showdate = true, precision = 'year'},
},
{
type = 'row',
label = 'Orientador de doutorado',
plurallabel = 'Orientador de doutorado',
value = 'orientador de doutorado',
wikidata = {property = 'P184', sorttype= 'chronological', showdate = true, precision = 'year'},
},
{
type = 'row',
label = 'Agente',
label =
function(localdata, item)
if gender == 'f' then
return 'Representada por'
elseif gender == 'm' then
return 'Representado por'
else
return 'Representado por'
end
end,
value = 'representado por',
wikidata = {property = 'P1875'},
},
{
type = 'row',
label = 'Sócio',
plurallabel = 'Sócios',
value = {'sócio', 'socio'},
wikidata = {property = 'P1327'},
},
{
type = 'row',
label = localdata['instituto superior'] or 'Superior',
plurallabel = 'Superiores',
value = {'superior', 'superiores'},
wikidata = {property = 'P802', sorttype= 'chronological', showdate = true, precision = 'year', numval = 5},
},
{
type = 'row',
label = 'Estudante de doutorado',
plurallabel = 'Estudantes de doutoramento',
value = 'estudante de doutoramento',
wikidata = {property = 'P185', sorttype= 'chronological', showdate = true, precision = 'year', numval = 5},
},
{
type = 'row',
label = 'Pessoa relacionada',
plurallabel = 'Pessoas relacionadas',
value = 'pessoa relacionada',
wikidata = {property = 'P3342', numval = 5, showqualifiers = 'P794'},
},
}}
end
-- Mecenato
function p.patron()
return {
type = 'row',
label = '[[Mecenato|Mecena]]',
singularlabel = '[[Mecenato|Mecena]]',
plurallabel = '[[Mecenato|Mecenas]]',
value = 'mecenas',
wikidata = {property = 'P1962', showdate = true, sorttype = 'chronological', conjtype = 'comma'},
}
end
-- Música
function p.music()
return {type = 'multi', rows = {
{
type = 'row',
label = 'Alcance',
value = 'alcance',
property = 'P412',
},
{
type = 'row',
label = 'Fach',
value = 'fach',
property = 'P1731',
},
{
type = 'row',
label = 'Instrumento',
plurallabel = 'Instrumentos',
value = 'instrumento',
wikidata = {property = 'P1303', sorttype= 'chronological'},
},
{
type = 'row',
label = 'Editora discográfica',
plurallabel = 'Editoras discográficas',
value = {'editora discografica', 'label'},
wikidata = {property = 'P264', sorttype= 'chronological', showdate = true, precision = 'year'},
},
}}
end
-- Vitímas
function p.victims()
return {type = 'multi', rows = {
{
type = 'row',
label = 'Vitímas',
value = {'vitímas', 'vitimas'},
wikidata = {property = 'P1345'},
},
}}
end
-- Condenações
function p.penalties()
return {type = 'multi', rows = {
{
type = 'row',
label =
function(localdata, item)
if gender == 'f' then
return 'Condenada por'
elseif gender == 'm' then
return 'Condenado por'
else
return 'Condenado por'
end
end,
value = 'condenado por',
wikidata = {property = 'P1399', showdate = true, sorttype = 'chronological', precision = 'year', conjtype = 'comma'},
},
{
type = 'row',
label = 'Condenação',
plurallabel = 'Condenações',
value = {'condenacao', 'condenação'},
wikidata = {property = 'P1596', showdate = true, sorttype = 'chronological', precision = 'year', conjtype = 'comma'},
},
{
type = 'row',
label = 'Ordem de detenção',
plurallabel = 'Ordem de detenção',
value = {'ordem de detenção', 'ordem de detencao'},
wikidata = {property = 'P2632', showdate = true, sorttype = 'chronological', precision = 'year', conjtype = 'comma'},
},
}}
end
-- Físico
function p.appearance()
return {type = 'multi', rows = {
{
type = 'row',
label = 'Altura',
value = {'tamanho', 'altura'},
wikidata = {property = 'P2048', targetunit = 'm', rounding = '2'},
},
--[[
{
type = 'row',
label = 'Peso',
value = 'peso',
wikidata = {property = 'P2067', targetunit = 'kg', rounding = '1'},
},
]]--
{
type = 'row',
label = 'Cabelo',
value = 'cabelo',
wikidata = {property = 'P1884'},
},
{
type = 'row',
label = 'Olhos',
value = 'olhos',
wikidata = {property = 'P1340'},
},
}}
end
-- Família
function p.family()
return {type = 'multi', rows = {
{
type = 'row',
label = 'Família',
plurallabels = 'Famílias',
value = {'família', 'familia'},
property = 'P53',
},
{
type = 'row',
label = 'Pai',
value = 'pai',
wikidata = {property = 'P22', conjtype = ' ou '},
},
{
type = 'row',
label = 'Mãe',
value = {'mãe', 'mae'},
wikidata = {property = 'P25', conjtype = ' ou '},
},
{
type = 'row',
label = 'Padrastro', --progenitor ?
plurallabel = 'Padrastros',
value = {'padrastro', 'madrastra'},
property = 'P3448',
},
{
type = 'row',
label = 'Irmãos',
value = {'irmãos', 'irmaos'},
wikidata = {
property = 'P3373',
sorttype = 'chronological',
conjtype = 'new line',
textformat = 'long',
precision = 'year',
stilltrue = not dead,
}
},
{
type = 'row',
label = 'Cônjuge', -- todo : adaptar a redação em genéro ?
plurallabel = 'Cônjuges',
value = {'cônjuge', 'conjuge'},
wikidata = {
property = 'P26',
showdate = true,
sorttype = 'chronological',
conjtype = 'new line',
textformat = 'long',
precision = 'year',
stilltrue = not dead,
precision = 'year',
}
},
{
type = 'row',
label = localdata['criança titulada'] or 'Descendentes',-- todo : adaptar a redação em genéro ?
plurallabel = 'Descendentes',
value = 'descendentes',
wikidata = {
property = 'P40',
conjtype = 'new line',
textformat = 'long',
precision = 'year',
stilltrue = (not dead),
precision = 'year',
}
},
{
type = 'row',
label = 'Parentesco',
value = 'parentesco',
wikidata = {
property = 'P1038',
excludespecial = true,
conjtype = 'new line',
statementformat = function(statement)
local personid = wikidata.getMainId(statement)
local personlabel = wikidata.formatEntity(personid)
local persongender = getgender(personid)
local kintype = wikidata.getFormattedQualifiers(
statement,
"P1039",
{
labelformat = function(id) return genderedlabel(id, persongender) end,
link = "-"
}
)
if kintype then
return personlabel .. " " .. linguistic.inparentheses(kintype)
end
return personlabel
end,
}
},
}}
end
-- Escravos
function p.slavery()
return {type = 'multi', rows = {
{
type = 'row',
label = 'Estatuto',
value = 'estatuto',
wikidata = {property = 'P3716', defaultlinkquery = 'P425'},
},
{
type = 'row',
label = 'Proprietário',
plurallabels = 'Proprietários',
value = {'proprietário', 'proprietario'},
property = 'P127',
},
}}
end
-- Obras
function p.works(params)
params = params or {}
local title = params.title or "''''[[Magnum opus]]''''"
local wikidata = {
excludespecial = true,
numval = 5,
property = 'P800',
defaultlink = 'image',
showdate= true,
labelformat = function(id) local label = wikidata.getLabel(id) if label then return '<i>' .. label .. '</i>' end end,
}
for i, j in pairs(params) do
wikidata[i] = j
end
return
{type = 'table', title = title, rows = -- singulartitle = singulartitle dava erro
{
{type = 'row',
value = {'obras principais', 'obras', 'magnum_opus', 'obrasdestacadas'},
wikidata = wikidata
}
}
}
end
function p.filmography()
local title = 'Filmes notáveis'
return
{
type = 'row',
label = 'Filmes notáveis',
value = {'filmes notáveis', 'filmes'},
property = 'P1283'
}
end
function p.discography()
local title = 'Discografia'
return
{
type = 'row',
label = 'Discografia',
value = 'discografia',
property = 'P358'
}
end
-- causa da morte
function p.causamorte(default)
return {
type = 'row',
label = 'Causa da morte',
value = 'causa morte',
property = 'P509'
}
end
-- Assinatura
function p.assinatura(default)
local nome = localdata.nome or mw.title.getCurrentTitle().text
local alt = 'assinatura de ' .. nome
if mw.ustring.match( nome, '^[AEÈÉIOUY]' ) then
alt = "assinatura de" .. nome
end
return {
type = 'images',
imageparameters = {'assinatura'},
defaultimage = default,
captionparameter = 'legenda assinatura',
defaultcaption = 'assinatura',
uprightparameter = 'upright assinatura',
defaultupright = 0.5,
defaultalt = alt,
property = 'P109',
numval = 1
}
end
-- Registos vocais
function p.voice()
local function selectsound()
-- prioridade em português
if wikidata.getClaims{entity = item, property = 'P990', qualifier = {'P407'}, qualifiervalue = {'Q5146'} } then
return {property = 'P990', qualifier = {'P407'}, qualifiervalue = {'Q5146'} }
end
return {property = 'P990'}
end
return {
type = 'images',
style = {['padding-top'] = '25px'},--{['border-width'] = '10px', ['border-style'] = 'solid'},
label = 'Registo vocal',
captionparameter = 'legenda voz',
value = 'voz',
wikidata = selectsound (),
numval = 1,
}
end
--== Web site
function p.website()
return general.website()
end
return p
|
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve
Portal di Ensiklopedia Dunia