Usuário:Danilo.mac/Info
Esta é uma ideia para a reformulação da {{Info}}
, fazendo-a funcionar através de um módulo.
Compatibilidade
editarA nova Info terá que ser totalmente compatível com a atual, não sendo necessárias mudanças no preenchimento das infocaixas atuais para que elas continuem funcionando.
Wikidata
editarPara obter os dados do Wikidata a nova Info terá a possibilidade de usar um código iniciado por "WD:" nos campos, o que fará a infobox pegar os dados do Wikidata.
O código "WD:" deve ser seguido pelo identificador da propriedade para obter essa propriedade do Wikidata, por exemplo "WD:P123". Quando um campo começar com "WD:" o módulo vai tratá-lo sempre como uma função para buscar dados no Wikidata e nunca como o texto do campo.
Algumas propriedades podem ter uma função de preenchimento definida internamente no código do módulo, por exemplo a P569 que é a data de nascimento pode ter uma função para que a data seja preenchida do mesmo modo que a {{dni}}
quando essa propriedade for usada, desse modo "WD:P569" será o suficiente para preencher esse campo da forma usual. Funções definidas no código do módulo também podem ser usados no lugar de propriedades, por exemplo "WD:nascimento" pode ser usado para juntar a data e local de nascimento.
Além do identificador da propriedade, podem ser adicionados filtros para dizer como aquela propriedade deve ser exibida, por exemplo "WD:P123:link" vai colocar o dado retornado do Wikidata em uma ligação interna se o artigo existir. O filtro ":todos" pode fazer com que todos os valores da propriedade sejam retornados. Enfim, vários filtros podem ser criados conforme a necessidade.
A propriedade também pode ser seguida por outra propriedade, por exemplo "WD:P123:P456" o que significa que deve ser obtido o valor do qualificador P456 do primeiro valor da propriedade P123. Se a propriedade for seguida por uma propriedade e um item, por exemplo "WD:P123:P456:Q789" então deve ser obtido o valor da propriedade P123 para o qual o qualificador P456 é igual a Q789. E se a propriedade for seguida por um item e uma propriedade, por exemplo "WD:P123:Q456:P789" então deve ser obtido o valor do qualificador P789 da propriedade P123 onde o valor da propriedade é Q456.
Campos wikidataN
editarA {{Info}}
é preenchida usando os campos rótuloN e dadosN, onde N é um número, por exemplo rótulo12 e dados12 para preencher o rótulo e dados da linha 12. Seguindo esse padrão pode ser adicionado o campo wikidataN (seria wikidata12 no exemplo dado). Esse campo tem a função de separar o que é dado do Wikidata do que é dado preenchido localmente para o parâmetro "|wikidata=" fazer o controle do preenchimento dos dados do Wikidata de quatro formas diferentes:
- |wikidata=preferência: usar o que está em wikidataN mesmo se dadosN estiver preenchido
- |wikidata=nunca: nunca usar dados do Wikidata, nem se "WD:" for usado em dadosN
- |wikidata=completar: usar o que está em wikidataN quando dadosN estiver vazio
- |wikidata=evitar: usar o que está em wikidataN somente quando dadosN tiver o código "#WD" (ou outro a definir)
Os dados do Wikidata também podem ser inseridos no campo wikidataN sem usar o "WD:", usando outros módulos como o Módulo:WikidataIB e o Módulo:Wikidata, pois qualquer coisa colocada nos campos wikidataN serão considerados dados do Wikidata. E o código "WD:" funcionará em dadosN normalmente para permitir que seja usado diretamente no código do artigo, ele só não funcionará em dadosN quando |wikidata=nunca.
Nota: As opções "completar" e "evitar" também pode ser feita pela predefinição para que campos diferentes tenham comportameto diferentes em relação ao Wikidata, por exemplo {{{alguma_coisa|WD:P123}}}
para completar quando não existe dados locais e {{#ifeq:{{{alguma_coisa}}}|#WD|WD:P123|{{{alguma_coisa}}}}}
para só usar o Wikidata quando o campo for preenchido com "#WD".
Exemplo
editarExemplo de como os campos wikidataN poderiam ser usados na {{Info/Biografia}}
:
... | wikidata = {{{wikidata|completar}}} ... | rótulo7 = Nascimento | dados7 = {{#if:{{{nome_nascimento|}}}|{{{nome_nascimento|}}}<br/>}}{{{nascimento_data|{{{data_nascimento|{{Sem data|bio|nasc}}}}}}}}{{#if:{{{local_nascimento|}}}{{{nascimento_local|}}}|<br />{{{nascimento_local|{{{local_nascimento|}}}}}}|{{Sem local|bio|nasc}}}} | wikidata7 = WD:nascimento | rótulo8 = Morte | dados8 = {{{morte_data|{{{data_morte|}}}}}}{{#if:{{{local_morte|}}}{{{morte_local|}}}|<br />{{{morte_local|{{{local_morte|}}}}}}}}{{#if:{{{morte_data|}}}{{{data_morte|}}}|{{#if:{{{local_morte|}}}{{{morte_local|}}}||{{Sem local|bio|morte}}}}}} | wikidata8 = WD:morte | rótulo9 = Residência | dados9 = {{{residência|}}} | wikidata9 = WD:P551 | rótulo10 = Nacionalidade | dados10 = {{{nacionalidade|}}} | rótulo11 = Cidadania | dados11 = {{{cidadania|}}} | wikidata11 = WD:P27 ... | rótulo15 = [[Peso]] <!-- evitar pegar peso do Wikidata idependente do que for definido em {{{wikidata}}} --> | dados15 = {{#ifeq:{{{peso}}}|#WD|WD:P123|{{{peso|}}}}} | rótulo21 = Progenitores | dados21 = {{#if: {{{nome_mãe|}}} | <small>Mãe:</small> {{{nome_mãe|}}} }}{{#if: {{{nome_mãe|}}}| {{#if: {{{nome_pai|}}} | <br /> }} }}{{#if: {{{nome_pai|}}} | <small>Pai:</small> {{{nome_pai|}}} }} <!-- usando o Módulo:WikidataIB para pegar os dados do Wikidata --> | wikidata21 = {{#if:{{#invoke:WikidataIB |getPreferredValue |P25 |fetchwikidata={{{buscarwikidata|ALL}}} |qid={{{qid|}}} |onlysourced={{{comfontes|no}}}|noicon={{{noicon|yes}}}|name=mãe|suppressfields={{{suprimir|}}}|{{{mãe|}}}}}|<small>Mãe:</small>{{#invoke:WikidataIB |getPreferredValue |P25 |fetchwikidata={{{buscarwikidata|ALL}}} |qid={{{qid|}}} |onlysourced={{{comfontes|no}}}|noicon={{{noicon|yes}}}|name=mãe|suppressfields={{{suprimir|}}}|{{{mãe|}}}}}}}{{#if:{{#invoke:WikidataIB |getPreferredValue |P22 |fetchwikidata={{{buscarwikidata|ALL}}} |qid={{{qid|}}} |onlysourced={{{comfontes|no}}}|noicon={{{noicon|yes}}}|name=pai|suppressfields={{{suprimir|}}}|{{{pai|}}}}}|{{#if:{{#invoke:WikidataIB |getPreferredValue |P25 |fetchwikidata={{{buscarwikidata|ALL}}} |qid={{{qid|}}} |onlysourced={{{comfontes|no}}}|noicon={{{noicon|yes}}}|name=mãe|suppressfields={{{suprimir|}}}|{{{mãe|}}}}}|<br><small>Pai:</small>{{#invoke:WikidataIB |getPreferredValue |P22 |fetchwikidata={{{buscarwikidata|ALL}}} |qid={{{qid|}}} |onlysourced={{{comfontes|no}}}|noicon={{{noicon|yes}}}|name=pai|suppressfields={{{suprimir|}}}|{{{pai|}}}}}|<small>Pai:</small>{{#invoke:WikidataIB |getPreferredValue |P22 |fetchwikidata={{{buscarwikidata|ALL}}} |qid={{{qid|}}} |onlysourced={{{comfontes|no}}}|noicon={{{noicon|yes}}}|name=pai|suppressfields={{{suprimir|}}}|{{{pai|}}}}}}}}}
Monitoramento
editarA nova Info contará os campos preenchidos localmente e os preenchidos pelo Wikidata, e categorizará de acordo com essa contagem, por exemplo "Categoria:!Artigos com 7 campos importados do Wikidata".
Os campos que usam dados do Wikidata receberão uma classe específica, por exemplo class="from-wikidata", essa classe não terá nenhum estilo definido para todos os usuários, mas quem quiser poderá adicionar um estilo em Especial:Minha página/common.css para destacar os campos do Wikidata em uma infobox, por exemplo .from-wikidata {background-color: #def}
vai fazer os campos que usam dados do Wikidata ficarem com um fundo azul para se destacarem dos que usam dados locais, facilitando assim o monitoramento desses dados.
Preenchimento simplificado
editarEste item não altera as funções acima, é apenas uma forma alternativa de preenchimento do infobox.
Atualmente o preenchimento da {{Info}}
tem que seguir o padrão |rótuloN= e |dadosN= (onde N é um número) porque não existe como usar o formato |rótulo=dados com predefinição. Já com módulo é possível verificar todos os campos que foram passados, porém a ordem em que eles foram passados é perdida. Mas existe uma solução para manter a ordem, trocar o sinal de igual por dois-pontos, |rótulo:dados, com isso o parâmetro é passado para o módulo como um número, por exemplo |rótulo1:dados1 é equivalente a |1=rótulo1:dados1. Então além do preenchimento tradicional um outro tipo de preenchimento mais simples seria possível:
... |título= {{{título}}} |imagem={{{imagem|}}} |TÓPICO: primeiro tópico |primeiro rótulo: {{{primeiro_dado|}}} |segundo rótulo: {{{segundo_dado|}}} |terceiro rótulo: {{{terceiro_dado|}}} |quarto rótulo: {{{quarto_dado|}}} |TÓPICO: segundo tópico |quinto rótulo: {{{quinto_dado|}}} ...
A vantagem disso é a simplificação do preenchimento, a maior facilidade de leitura do código da infobox e a possibilidade de trocar a ordem dos campos ou adicionar campos em qualquer posição sem precisar corrigir toda a numeração dos rótuloN e dadosN. A desvantagem é que não poderá ser usado o campo wikidataN nessa forma de preenchimento e será preciso ter atenção para não adicionar sinais de igual nos campos. E é possível que existam outros problemas com essa forma de preenchimento, é preciso testar para descobrir.