IT:Namespace

From OpenStreetMap Wiki
Jump to navigation Jump to search

Un namespace è il prefisso, suffisso o infisso di una chiave. Può essere usato in casi particolari per raggruppare chiave correlate tra loro o come ulteriore qualificatore di una chiave. Il carattere due punti (':') viene utilizzato per separare i namespace dai nomi delle chiavi. Prima di introdurre un particolare namespace occorre valutare l'entità dei possibili vantaggi rispetto agli svantaggi.

Raggruppare delle chiavi strettamente correlate aiuta a separare questo gruppo di chiavi, riduce la sovrapposizione dei nomi e fornisce un contesto di livello superiore per una particolare chiave.

I namespace sono usati come qualificatori quando un attributo (come il codice di una lingua) è applicabile ad una vasta gamma di chiavi principali non correlate tra loro.

Tecnicamente entrambi i concetti sono trattati in larga parte allo stesso modo (le chiavi che contengono i due punti sono delle sequenze di caratteri come ogni altra chiave).

Alcune chiavi hanno una sintassi simile a quella dei namespace (cioè chiave:suffisso=valore dove suffisso è un valore variabile che non ha un intento di raggruppamento) ma non coinvolgono il concetto di namespace: si tratta solo di un suffisso separato da due punti.

Esempi di uso dei namespace

  • Etichette addr=* per contenere le parti di un indirizzo;
  • Il suffisso :conditional è usato per le chiavi con valori che sono restrizioni condizionali;
  • Etichette contact=*;
  • Date namespace - è stato suggerito l'uso di un suffisso namespace per le date (in maniera simile al concetto di life cycle) per specificare la validità temporale delle etichette (ad esempio "amenity:1835-1965 = school", "name:1933-1945 = Adolf-Hitler-Straße"). Il suffisso va aggiunto per ultimo alla chiave (ad esempio dopo il suffisso del codice di lingua). Attenzione: sebbene questa sintassi sia relativamente comune, essa proviene da una proposta e tecnicamente non si tratta di un namespace vero e proprio;
  • generator:output=* per fornire informazioni sulla quantità di elettricità prodotta da una centrale di produzione di energia elettrica;
  • is_in=* vecchio namespace ancora presente nel database;
  • :lanes suffisso per aggiungere informazioni relative alle corsie;
  • Lifecycle prefix — è stato suggerito (su Comparison of life cycle concepts) di usare un prefisso come ad esempio "proposed:", "construction:", "disused:", "abandoned:" oppure "demolished:", per mappare oggetti che si trovano in un particolare stato (ad esempio "construction:aerialway=gondola"). Per le strade e le ferrovie è in uso uno standard differente (ad esempio "highway=construction + construction=motorway"). Consulta Comparison of life cycle concepts;
  • Multilingual names — per molte chiavi vengono aggiunti come suffissi i codici delle lingue; ad esempio "name:ro=..." che indica il nome in lingua romena di un elemento. Consulta Map internationalization e Multilingual names per alcuni tipi di utilizzo. Il suffisso trova spazio subito dopo la chiave principale;
  • parking:left=*, parking:right=* o parking:both=* per fornire informazioni sulle corsie dei parcheggi con highway=*;
  • source=* per indicare la fonte di tutte le etichette o di una in particolare;
  • traffic:hourly=* indica la densità del traffico e può essere usato come namespace;
  • I suffissi Forward & backward, left & right per indicare che un'etichetta si applica solamente per alcune direzioni o lati di una strada;
  • Altri esempi nella seguente tabella:
Namespace Descrizione Lista di utilizzo del namespace
capacity: Descrive la capienza di una struttura. taginfo capacity:*

Nomenclatura

Il software di questa wiki sfrutta anch'esso il concetto di namespace ma non è collegato a quello dei namespace usati nelle chiavi e etichette del database di OpenStreetMap.

Uso dei namespace da parte clienti dati

Ad un livello base, nel sistema una chiave con un namespace viene memorizzata e trattata allo stesso modo di ogni altra stringa di testo in forma libera (che in questo caso conterrà un carattere due punti).

Molti utilizzatori dei dati OSM gestiranno le chiavi in questo modo. Le applicazioni che usano i dati in genere filtrano le chiavi a cui sono interessate e scartano ogni altro tipo di chiave non riconosciuto. Ciò potrebbe anche essere l'effetto desiderato di un namespace. I namespace possono essere usati per distinguere un certo tipo di informazioni specifiche, separandolo dai dati 'principali' e rendendo così più chiaro che sono intesi per clienti che hanno interessi specifici.

Abuso dei namespace

Il concetto di namespace permette di strutturare lo schema dei dati ma può anche causare problemi agli utilizzatori, i quali chiamano questo effetto indesiderato abuso dei namespace (over-namespacing in inglese).

  • namespace legati ai progetti: talvolta si potrebbe essere tentati di usare i namespace per evitare di inserire i dati insieme agli altri che seguono degli schemi ben precisi; ciò è considerata una cattiva abitudine. OSM è un database con molteplici schemi, questo comporta che ogni etichetta rispetta più di uno schema e può avere più di un solo utilizzo, pertanto è importante integrare i dati con gli schemi già utilizzati allo scopo di massimizzare la cura dei dati;
  • l'abuso dei namespace porta ad inconsistenze nel database: se abbiamo progettopippo:name=xxx e name=xxx, in molti casi solo uno verrà aggiornato. Tanto più semplice e generico il significato di una chiave, tanto più questa verrà utilizzata e curata;
  • l'abuso dei namespace porta ad uno schema dati diffuso: ad esempio, chi è interessato ai dati dei canali VHF dovrà cercare le chiavi harbour:VHF_channel, seamark:habour:VHF_channel, VHF_channel, lock:VHF_channel e vhf… l'uso della sola chiave vhf dovrebbe bastare a capire se si tratta di dati relativi ad un porto, ad una chiusa o a qualsiasi altro oggetto OSM che si sta mappando.

Per gli elementi della mappa più frequenti (cioè le etichette regolari che vengono usate dalla maggior parte dai nuovi mappatori) le chiavi semplici (senza namespace) sono prevalenti.

Voci correlate

Il seguente testo è la traduzione dell'articolo originale in inglese, revisionato per rev2454091. Inserisci tutte le nuove informazioni, sia generali che specifiche del tuo paese, prima di questo avviso.
Cerca di non stravolgere troppo il testo di questa pagina senza aggiornare anche l'articolo originale; se vuoi, avvisa la comunità internazionale oppure chiedi aiuto su questo sito. Le correzioni ortografiche, grammaticali, lessicali e stilistiche sono sempre benvenute.