Introduzione
Gli ID OCD (Open Civic Data Identifier) sono un formato di identificatore comune che definisce le aree geografiche politiche. Per creare un feed CDF, devi fornire questi identificatori come parte di un'entità GpUnit. Questo documento ha lo scopo di fornire indicazioni e best practice per aggiungere ID OCD al repository GitHub Opencivicdata.
Come aggiornare gli ID OCD nel repository GitHub di Open Civic Data
Prerequisiti
Prima di iniziare:
Prepara la workstation:
Crea un fork e clona il pacchetto dal repository ID ODC.
Familiarizza con il repository:
Nel repository ID OCD, ogni paese supportato è rappresentato con una directory e un file CSV che ha lo stesso nome: paese-<codice paese di 2 lettere> (ad esempio:
identifiers/country-de
eidentifiers/country-de.csv
per la Germania).Nella directory del paese da modificare puoi trovare i file CSV (Esempio) che includono parti del file CSV specifico per il paese di primo livello. Questi sono i file che devi modificare.
Come creare nuovi ID OCD:
Struttura e origini
Dai un'occhiata al documento aperto sui dati relativi all'educazione civica per acquisire familiarità con la struttura degli ID OCD. In generale, un ID OCD valido ha il seguente formato:
ocd-division/country:<country_code>(/<type>:<type_id>)
La denominazione degli identificatori preferisce gli identificatori standard di ISO o altri standard, come FIPS e NUTS, se ISO non è disponibile.
Norme generali
Di seguito sono riportate le norme generali:
Gerarchia
La gerarchia degli ID OCD deve determinare il livello amministrativo che controlla i limiti degli ID OCD, non necessariamente la relazione di contenimento degli ID OCD.
- Esempio: negli Stati Uniti, i distretti congressuali vengono utilizzati nelle elezioni per la Camera dei rappresentanti nazionale, ma i loro confini sono determinati dagli Stati Uniti. I distretti congressuali si dividono
con gli stati:
ocd-division/country:us/state:pa/cd:2
- Esempio: Murrysville è un comune della Pennsylvania che fa parte della contea di Westmoreland. Tuttavia, le città sono amministrate dallo stato, pertanto l'ID OCD non è associato allo stato:
ocd-division/country:us/state:pa/place:murrysville
La gerarchia extra può essere utilizzata nei casi in cui è necessaria una disambiguazione. - Esempio: ci sono 16 luoghi in Pennsylvania chiamati "Franklin
Township". In genere, ognuno ha l'ID OCD
ocd-division/country:us/state:pa/place:franklin
, ma è ambiguo. Possiamo quindi aggiungere la contea all'ID OCD in modo che ciascuna abbia il proprio ID OCD univoco. Esempio:ocd-division/country:us/state:pa/county:adams/place:franklin
Tipo
I tipi di ID OCD sono in genere specifici dei paesi.
Alcuni ID OCD sono comuni in tutto il repository, ad esempio
country
,region
eplace
.Tuttavia, le linee guida generali consigliano di specificare i tipi di dati in un modo più specifico che abbia senso nel contesto del paese.
- Esempio: per l'area di amministrazione 1 negli Stati Uniti vengono utilizzati i tipi
state
,district
eterritory
. - Esempio: per l'area di amministrazione 1 in CA, vengono utilizzati i tipi
province
eterritory
. - Esempio: per l'area amministratore 1 in PT, vengono utilizzati i tipi
region
eautonomous_region
.
- Esempio: per l'area di amministrazione 1 negli Stati Uniti vengono utilizzati i tipi
ID
- In generale, vogliamo utilizzare lo stesso ID OCD per un distretto nella ridefinizione dei distretti. Quando scegli un
type_id
da utilizzare per un nuovo insieme di ID OCD, scegli quello più stabile. Ecco alcune domande da porsi durante la determinazione dell'identificatore da utilizzare: - Quanto è probabile che l'identificatore di un determinato distretto cambi a causa della ridefinizione dei distretti?
- Se lo stesso funzionario occupa il distretto X prima e dopo che i confini sono passati dalla ridefinizione dei distretti, rappresenterebbe il suo mandato come continuo?
- I distretti con confini o nomi identici nell'ambito della ridefinizione dei distretti sono rappresentati dallo stesso identificatore?
- Esempio: negli Stati Uniti, i numeri dei distretti congressuali vengono utilizzati per i distretti condominiali statunitensi perché, anche se i loro confini cambiano con la ridefinizione dei distretti, l'identità è strettamente legata al numero e fai riferimento a qualcuno come ricoprendo la carica per l'ennesimo seggio per X anni, anche quando questo numero di anni oltrepassa i confini della ridefinizione dei distretti.
- Esempio: in Canada, vogliamo utilizzare i nomi dei distretti per rappresentare i distretti elettorali federali perché, sebbene esistano codici elettorali federali, questo identificatore non è stabile perché i distretti identici nella ridefinizione dei distretti sono rappresentati con ID diversi. (ad esempio, la ridefinizione dei distretti del distretto 47012 prima del 2012 non è più lo stesso dopo).
Ridefinizione dei distretti
In genere, quando aggiorni gli ID OCD a causa della ridefinizione dei distretti, utilizza l'insieme di ID OCD esistenti anziché crearne uno nuovo.
- Se l'identità di un distretto (ID numerico, nome e così via) non cambia dopo la ridefinizione dei distretti, utilizza lo stesso ID OCD.
- Per la creazione di nuovi distretti dopo la ridefinizione dei distretti, crea nuovi ID OCD.
- Per i distretti che non esistono più, aggiorna il campo
ValidThrough
con la data di entrata in vigore della ridefinizione dei distretti. - Se l'ID di un distretto è basato sul nome e quest'ultimo viene rinominato
dopo la ridefinizione dei distretti, crea un nuovo ID in base al nome del nuovo distretto e
aggiungi un alias dove
id = oldId
esameAs = newId
. In questo modo, newId viene canonico come utilizzo di oldId mappato a newId. - Nel caso in cui si verifichi un conflitto tra gli ID OCD storici, ad esempio se un nuovo ID è identico a un ID eliminato, aggiungi l'anno
ValidFrom
al nuovo ID. Per ulteriori informazioni su questo criterio di denominazione, vedi Creare nuovi file per gli ID OCD attuali, aboliti e rinominati.
- Esempio: negli Stati Uniti, i distretti congressuali vengono utilizzati nelle elezioni per la Camera dei rappresentanti nazionale, ma i loro confini sono determinati dagli Stati Uniti. I distretti congressuali si dividono
con gli stati:
Aggiorna la tua copia locale
Qualsiasi aggiornamento deve essere eseguito nella directory specifica del paese: ocd-repository/identifiers/country-<codice paese di 2 lettere>. Se non ne esiste una, creala.
- Se il file CSV degli ID OCD esiste già e rappresenta i vecchi confini elettorali, devi aggiornare questo file in modo da includere i nuovi collegi elettorali. Per farlo, aggiungi una colonna
ValidFrom
e unaValidTo
contenenti la data nel formato AAAA-MM-GG.ValidFrom
deve essere la data delle elezioni per i nuovi collegi elettorali. Può essere lasciato vuoto per i collegi elettorali già esistenti.ValidTo
per i collegi elettorali obsoleti deve essere il giorno prima delle elezioni.
Aggiorna alias
Gli alias possono essere utilizzati per contrassegnare gli ID OCD come rappresentazione della stessa area geografica.
- Ad esempio, se un luogo è sia una città che una contea, questo potrebbe avere senso.
I principi generali che cerchiamo di spingere:
- Se due parti della geografia politica sono paralleli, non devono essere necessariamente alias tra loro. Ad esempio, il Congresso degli Stati Uniti in generale è cotermino con gli stati, ma questo è un caso a causa dell'attuale numero di persone degli Stati Uniti.
L'aliasing può avere senso anche nel caso in cui siano necessari cambiamenti significativi nelle leggi/emendamenti costituzionali per la divisione dei distretti.
- Ad esempio, il Senato dello stato di Washington e i distretti delle case statali sono stabiliti in base alla legge costituzionale.
Se necessario, aggiungi un file CSV aliases.csv
in cui vengono aggiunti i vecchi ID OCD e i relativi alias. Gli ID canonici possono utilizzare tipi di divisione che hanno un significato
locale e possono avere alias con rappresentazioni più familiari (ad esempio
canonico: ocd-division/country:de/land
alias: "ocd-division/country:de/state).
Per ulteriori informazioni, vedi il problema n. 170.
Per aggiornare il file alias.csv:
- Rispetta l'ordine delle colonne nel file alias.csv:
id
,sameAs
,sameAsNote
Tipo | Descrizione |
---|---|
id | Questa colonna deve contenere gli alias degli ID OCD. |
sameAs | Questa colonna deve contenere gli ID OCD effettivi per i quali vengono aggiunti gli alias. |
sameAsNote | Una nota che descrive come o perché la divisione ha più identificatori. |
Esempio: identifiers/country-in/aliases.csv
Esegui lo script - compile.py
Esegui lo script Python nella posizione opencivicdata/ocd-division-ids/scripts:
- Devi specificare il codice paese di due lettere come argomento dello script in modo che sappia quali identificatori del paese richiedono un aggiornamento.
- Esempio: python3 scripts/compile.py in (per l'aggiornamento degli ID OCD dei circoli in India).
- Python 2.x non riceve assistenza. Devi utilizzare Python 3 o versioni successive. Puoi scaricare la versione più recente di Python 3 qui.
Lo script recupera i dati dai file CSV aggiornati nel passaggio precedente (ocd-division-ids/identifiers/country-in/*.csv), convalida i valori nei file, verifica la presenza di eventuali errori nei dati (uso di caratteri speciali e così via) o la duplicazione dei dati e scrive i nuovi ID OCD nel file CSV del paese di primo livello.
Lo script genera messaggi di errore e di avviso se si verificano problemi nei file CSV aggiornati. Risolvi i problemi ed esegui di nuovo lo script.
Aggiungi un file README
Quando aggiungi un nuovo paese o un nuovo livello di copertura (ad esempio, in precedenza avevamo solo un ID OCD per il paese, ma ora stiamo aggiungendo i distretti amministrativi di primo livello), aggiungi o aggiorna un file README.md. Questo file deve contenere un breve riepilogo della geografia politica, tra cui:
- I tipi che utilizzeremo e i relativi ruoli (ad esempio "
districts
è l'area amministrativa di primo livello in questo paese"); - Le relazioni tra i tipi (ad esempio "i distretti legislativi sono assegnati per distretto e non superano i confini");
- Eventuali eccezioni degne di nota (come "esiste un distretto legislativo che copra tutti i cittadini stranieri"); e
- Link a eventuali pagine di Wikipedia utili per fornire contesto a un revisore o a un utente.
Crea una richiesta di pull
Per creare una richiesta di pull, segui queste indicazioni:
- Al termine della procedura senza errori, controlla il file .csv di primo livello appena scritto con <codice paese di 2 lettere> per assicurarti che ora includa il nuovo set aggiornato/nuovo di ID OCD.
- Creare una richiesta di pull e aggiungere revisori. Questa richiesta di pull deve includere le modifiche apportate in tutti i seguenti file CSV.
- I file CSV nella directory specifica del paese. Esempio
- Il file .csv del paese di primo livello -<codice paese di 2 lettere>. Esempio
- Quando la richiesta di pull viene esaminata e approvata da due dei responsabili del paese, viene unita da uno dei proprietari/collaboratori del pacchetto.