Usuário:Danilo.mac/Info

Origem: Wikipédia, a enciclopédia livre.

Esta é uma ideia para a reformulação da {{Info}}, fazendo-a funcionar através de um módulo.

Compatibilidade[editar | editar código-fonte]

A 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[editar | editar código-fonte]

Para 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[editar | editar código-fonte]

A {{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[editar | editar código-fonte]

Exemplo 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[editar | editar código-fonte]

A 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[editar | editar código-fonte]

Este 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.