-
Notifications
You must be signed in to change notification settings - Fork 11
Wikidata oriented datasets
Peter edited this page Sep 15, 2020
·
5 revisions
[linha|classe_semantica]<>--1..*[coluna|tipo;valor;referencia]
[coluna]----1[fonte|principal;secundaria]
São três tipos de fonte básicas:
- A Wikidata, onde experts editam gerando correções e atualizações, eventualmente novas colunas.
- A fonte principal, que determina a chave primária e dados sensíveis. Determinada por exemplo por coleta direta no diário oficial e/ou planilhas oficiais.
- Fontes secundárias não utilizada na wikidata mas referentes ao mesmo dado obtido na Wikidata. Se prestam a fazer verificação cruzada.
- Fontes-extra, de dados não-usados na Wikidata mas necessários ao dataset. Podem ser dados calculados.
Os tipos de atualização são determinados pelos tipos de fonte: atualização da fonte principal, tal como IBGE, que requer ser "puxada" para cá; atualização das fontes secundárias supostamente já abastecidas na Wikidata, portanto requer "puxar a Wikidata para cá"... e fontes-extra ou fontes secundárias, também puxadas para cá, e para fazer verificação cruzada.
- Trazer ou atualizar a fonte principal atualizada
- Atualizar dump Wikidata
- Auditar
- Trazer demais fontes e auditar
- Gerar sugestões de correção da Wikidata se necessário.
Ver Load to SQL and save back to CSV para obter tmpcsv_br_state_codes
. Ver tb para scan city em Ingestão dump_wikidata no PostgreSQL.
Os dados Wikidata estão listados por UF, por exemplo /opt/gits/state-codes/data/dump_wikidata/GO.json
.
CREATE or replace VIEW vw_state_codes_wikidata_json AS
WITH t3 AS (
SELECT replace(f,'.json','') as statename,
f as fname,
'/opt/gits/state-codes/data/dump_wikidata' AS fpath,
'/opt/gits/state-codes/data/dump_wikidata' ||'/'|| f as f
FROM pg_ls_dir('/opt/gits/state-codes/data/dump_wikidata') t(f)
where f ~ '\.json$'
)
SELECT statename, fname,
to_jsonb( pg_stat_file(f2) ) || jsonb_build_object('fpath',fpath) fmeta,
pg_read_file(f2,true)::jsonb as jcontent
FROM ( SELECT *, fpath ||'/'|| fname as f2 FROM t3 ) t4a
;
CREATE VIEW vw_state_codes_wikidata_osmid AS
SELECT statename, jcontent->>'id' AS wikidata_id,
(jcontent->'claims'->'P402'->0->>'value')::bigint AS osm_id,
(jcontent->'claims'->'P1585'->0->>'value')::bigint AS local_id
FROM vw_state_codes_wikidata_json
;
INSERT INTO optim.jurisdiction
WITH t AS (
SELECT
COALESCE(w.osm_id::bigint,-76*10000000 -ibge_id::bigint) AS osm_id,
76 AS jurisd_base_id,
ibge_id AS jurisd_local_id,
c.name,
c.state AS parent_abbrev,
c.abbrev3 AS abbrev,
c.wikidata_id, c.lexlabel, c.isolabel_ext, c.ddd, c.info
FROM ingest.city c
LEFT JOIN cache_wikidata_city w ON 'Q'||c.wikidata_id=w.wikidata_id AND w.local_id::int=ibge_id
UNION
SELECT w.osm_id, 76 AS jurisd_base_id, s."idIBGE"::bigint AS jurisd_local_id,
s.name, 'BR' AS parent_abbrev, s.subdivision AS abbrev,
replace(w.wikidata_id,'Q','')::bigint, s."lexLabel" AS lexlabel, 'BR-'||s.subdivision AS isolabel_ext,
null as ddd, json_build_object(
'region',s.region, 'name_prefix',s.name_prefix, 'id',s.id, 'creation',s.creation, 'extinction',s.extinction,
'timeZone',s.timeZone, 'category',s.category, 'utcOffset',s.utcOffset, 'utcOffset_DST',s.utcOffset_DST,
'postalCode_ranges',s.postalCode_ranges, 'km2',s.km2, 'utm_zones',s.utm_zones, 'borders',s.borders, 'notes',s.notes
) as info
FROM tmpcsv_br_state_codes s INNER JOIN vw_state_codes_wikidata_osmid w
ON w.wikidata_id=s."wdId"
WHERE w.osm_id is not null
) SELECT * FROM t ORDER BY 2,3
;