okfn-brasil / lexml-vocabulary

RDF vocabulary of LexML, revision and ontology-alignment with Wikidata and others
1 stars 0 forks source link

Inclusão de novos municípios no vocabulário de localidade #7

Open ppKrauss opened 7 years ago

ppKrauss commented 7 years ago

Correções para a v1.0 do vocabulário de Localidades. Originais em RDF-v1.
PS: as correções podem ser realizadas manualmente na planilha de revisão colaborativa.

Itens ausentes, para inserir

3 itens.

ausente name idibge
br;para;mojui.campos Mojuí dos Campos (PA) 1504752
br;santa.catarina;balneario.rincao Balneário Rincão (SC) 4220000
br;santa.catarina;pescaria.brava Pescaria Brava (SC) 4212650

Itens para satisfazer padrão IBGE vigente

9 itens, três mudanças de nome e 6 de grafia.

about_errado about_correto mudança
br;mato.grosso;poxoreo br;mato.grosso;poxoreu grafia
br;minas.gerais;brasopolis br;minas.gerais;brazopolis grafia
br;paraiba;campo.santana br;paraiba;tacima nome
br;paraiba;santarem br;paraiba;joca.claudino nome
br;paraiba;serido br;paraiba;sao.vicente.serido grafia
br;para;santa.isabel.para br;para;santa.izabel.para grafia
br;pernambuco;iguaraci br;pernambuco;iguaracy grafia
br;rio.grande.norte;presidente.juscelino br;rio.grande.norte;serra.caiada nome
br;sao.paulo;moji.mirim br;sao.paulo;mogi.mirim grafia

Scripts e análise

Revisar src/prepV1_step1.sql conforme scripts abaixo, baseados no schema dataset.


Usando a proposta da issue #1 pode-se obter as VIEWS SQL de ambos datasets, localidade e br_city_codes, e então conferir o join entre eles:

CREATE VIEW dataset.vw_br_state_codes_lex AS 
   SELECT 'br;'||lexlabel as urn_jur, subdivision FROM dataset.vw_br_state_codes;

CREATE VIEW dataset.vw_br_city_codes_full AS
  SELECT c.*, x.urn_jur||';'||c.lexlabel as urn_jur
  FROM dataset.vw_br_city_codes c  INNER JOIN dataset.vw_br_state_codes_lex x
       ON  x.subdivision=c.state;

CREATE VIEW dataset.vw_br_city_synonyms_full AS
  SELECT c.*, x.urn_jur as state_lexlabel, 
                 x.urn_jur ||';'|| lib.name2lex(synonym) as urn_jur
  FROM dataset.vw_br_city_synonyms c  INNER JOIN dataset.vw_br_state_codes_lex x
       ON  x.subdivision=c.state;

CREATE VIEW vwtest_geral_urnlex AS
  SELECT 'br' as urn_jur
  UNION  (SELECT 'br;df')
  UNION (SELECT urn_jur FROM dataset.vw_br_state_codes_lex)
  UNION (SELECT urn_jur FROM  dataset.vw_br_city_codes_full)
  UNION (SELECT urn_jur FROM  dataset.vw_br_city_synonyms_full)
;
-- --
CREATE or replace FUNCTION dataset.br_city_canonic(text) RETURNS text AS $f$
  SELECT COALESCE((
    SELECT state_lexlabel||';'||lexlabel 
    FROM dataset.vw_br_city_synonyms_full 
    WHERE urn_jur=$1),
    $1
  );
$f$ LANGUAGE SQL IMMUTABLE;

---  Gera listagem de nomes ausentes da base IBGE e dos sinônimos:
SELECT about, faceta
FROM dataset.vw_localidade 
WHERE about NOT IN (SELECT urn_jur FROM vwtest_geral_urnlex)
ORDER BY 1
; -- se tudo ok vai retornar apenas justica, etc. nada de cidades

SELECT urn_jur as ausente, concat(name,' (',state,')') as name, idibge
FROM dataset.vw_br_city_codes_full
WHERE urn_jur NOT IN (
    SELECT dataset.br_city_canonic(about) FROM dataset.vw_localidade
)
; -- se tudo ok retorna vazio, senão a lista é de itens a serem inclusos em Localidade.

SELECT about as about_errado, canonic as about_correto  
FROM (
    SELECT about, dataset.br_city_canonic(about) as canonic FROM dataset.vw_localidade
) t 
WHERE canonic!=about;
-- se tudo ok retorna vazio, senão é são itens a serem corrigidos conforme canônico.