datasets-br / city-codes

Brazilian city names and official codes, IBGE, LexML and others
http://datasets.OK.org.br/city-codes
51 stars 16 forks source link

Conferir consistência da Wikidata com código IBGE #23

Open ppKrauss opened 6 years ago

ppKrauss commented 6 years ago

O código IBGE tem se mostrado consistente com as fontes primárias utilizadas, de modo que serve também para conferir se houve falha de atribuição do mesmo na Wikidata.

Com relação à completeza na adoção da P1585 foi confirmada: cd data/dump_wikidata grep -r "P1585" . | wc -l resultando em 5514, que em 5570 são ~99%, praticamente completo.

ppKrauss commented 6 years ago

Implementado com php src/etc/dumpWikidata.php chk. Resultados:

UPDATE io.citybr set "wdId"='Q22062859' WHERE "idIBGE"='2931400'; -- BA
UPDATE io.citybr set "wdId"='Q13109202' WHERE "idIBGE"='3554300'; -- SP

--- check and send pair to Wikidata
SELECT "wdId" as qid, "idIBGE" || concat(' /* ',name,'/',state,' */') as "P1585"
FROM io.citybr WHERE "idIBGE" IN (
 '2900702', '1700400', '5200605', '1500859', '5000708', '3502408', '5201306', '4201208', 
 '5000906', '5201504', '5201702', '5001243', '5103379', '1600212', '3121001', '3301702', 
 '2204303', '3137007', '1504109', '3531001', '2407708', '2107100', '4116406', '3149952', 
 '2109270', '2926707', '3156908', '3157005', '3159803', '3158300', '3162302', '3162708', 
 '3163300', '2412500', '2412807', '3166709', '1304062', '3552700', '3552908', '3168101', 
 '3168200', '3553500', '3553658', '3553906', '2931400', '3169000', '3169109', '3169208', 
 '3554755', '5008305', '3554953', '3555208', '2517001', '3171105', '2616308', '2933307'
);
-- ou COPY (...) to '/tmp/quickStatements01.csv' HEADER CSV;

A segunda consulta resulta em

qid P1585
Q818261 2900702 / Alagoinhas/BA /
Q566 1700400 / Almas/TO /
Q443583 5200605 / Alto Paraíso de Goiás/GO /
Q486142 1500859 / Anapu/PA /
... ...
Q29551446 2616308 / Vicência/PE /
Q330208 2933307 / Vitória da Conquista/BA /
Q22062859 2931400 / Teodoro Sampaio/BA /

(56 registros)

Basta usar o arquivo gerado com quickStatements01.csv da Wikidata: QuickStatements (help).


Corrigindo erros da Wikidata com base na Wikipedia:

qid P1585 nome qid_correto
Q818261 2900702 Alagoinhas/BA Q22050101
Q975677 4201208 Antônio Carlos/SC Q22063985
Q608983 5201504 Aporé/GO Q22067258
Q624997 5201702 Aragarças/GO Q22067256

Foram 4 erros de wdId. Ver discussão em Wikidata:Bot_requests#Import_area_codes_P473_from_CSV_file.

O procedimento correto é corrigi-los primeiro:

  1. UPDATEs: por exemplo UPDATE io.citybr SET "wdId"='Q22050101' WHERE "idIBGE"='2900702'.
  2. Atualizar a tabela local, usando exportação dos updates, psql < src/io_console.sql.
  3. Atualizar dump_wikidata com a tabela local corrigida.
ppKrauss commented 6 years ago

Issue contemplada com a implementação do relatório php src/etc/dumpWikidata.php chk

ppKrauss commented 6 years ago

Problema de atribuição na Wikidata

Ao subir as ~50 correções e conferir páginas Wikidata, fica mais evidente

  1. o problema da atribuição errada (ex. o conceito de Almas/TO não tem nada haver com as almas do purgatório) e, principalmente,
  2. o problema da duplicação de conceitos na Wikidata (!), tipicamente entidades mais antigas sendo mantidos como verdadeiras, apesar da Wikipedia apontar para duplicada mais nova.

A única solução, no segundo problema, é clicar e conferir um a um: conceitos abandonados em geral nem sequer possuem rótulos, ou são pobres em lista de links Wikipedia. Outra solução que ajuda a destacar os problemáticos é criando um atributo no nosso dump que list o número de links Wikipedia e destaque o link para a Wikipedia Português, que é a "fonte fiável" de auditoria do conceito.

ppKrauss commented 6 years ago

Acrescentar a verificação de P31 - Q3184121, "instance of municipality of Brazil". Vai garantir que não ocorra caso extremo como o de atribuição na tabela city-codes de Almas/TO a almas do purgatório ao invés da cidade (ou ainda Cotriguaçu Cooperativa Central/Q30926864 no lugar de Cotriguaçu/MT).

Solução por grep: apesar do código IBGE ser "único" numa página Wikidata, será uma garantia a mais conferir "Q3184121".


Software: hora de transferir o JSON Wikidata para o PostgreSQL! As rotinas de verificação não podem ficar como mero grep, precisam analisar consistência de forma mais completa e confiável.