Sv:Namespace

From OpenStreetMap Wiki
Jump to navigation Jump to search

Ett namnutrymme är ett prefix, suffix eller infix till en nyckel. Den kan användas i speciella fall för att gruppera närbesläktade nycklar, eller som en extra kvalificering för nycklar. Kolontecknet (':') används som avgränsare för namnutrymmen i nyckelnamn. De möjliga fördelarna med att introducera nycklar med namnavstånd måste vägas mot deras nackdelar.

Gruppering av närbesläktade nycklar i namnutrymmen hjälper till att separera denna grupp av nycklar, undvika namnkonflikter och ger en högre nivåkontext till en viss nyckel.

Namnutrymmen som kvalificerare används när ett attribut (som språkkod) är tillämpligt för ett stort antal icke-relaterade huvudnycklar.

Tekniskt sett behandlas båda begreppen i stor utsträckning på samma sätt – nyckelnamn som innehåller en kolonavgränsare är teckensträngar precis som alla andra taggar.

Att lagra ett värde på ett sätt som liknar en syntax för ett namnområde, dvs. nyckel:suffix=värde där suffix är lika med ett variabelvärde, som inte tjänar ett grupperingssyfte, betyder inte det namnutrymmeskonceptet används här. Det är bara ett kolonavgränsat suffix.

Exempel på namnutrymme använder

Namnutrymme Beskrivning Listöversikt över distribution
capacity: Describes the capacity a facility is suitable for. taginfo capacity:*

Nomenklatur

Denna wikis programvara använder också konceptet namespaces men detta är inte relaterat till konceptet "namespaces" i nycklar och taggar som används i OpenStreetMap-databasen.

Konsumerar namnutrymmen

På en grundläggande nivå i systemet kommer en nyckel med ett namnområde bara att lagras och behandlas som vilken annan friformstextsträng som helst (en sträng som bara råkar ha ett kolontecken).

Många konsumenter av OSM-data kommer att behandla nycklar så här. Konsumerande applikationer matchar ofta nycklar de är intresserade av, och alla okända nycklar ignoreras. Detta kan verkligen vara den önskade effekten av ett namnutrymme. Namnrymder kan användas för att separera vissa typer av specialistinformation, genom att placera denna data bort från "kärn" kartdata, för att göra det tydligare att endast fler specialistkonsumenter kommer att vara intresserade av den.

Över-namnutrymmd

Namnrymder är ett utmärkt sätt att strukturera dataschemat, men det kan också orsaka problem för vissa datakonsumenter, de kallar det över-namnutrymme.

  • projektrelaterat namnområde: det kan ibland vara frestande att bara namnrymden en nyckel för att undvika att kollidera med andra data istället för att försöka integrera befintliga system, detta är en dålig vana. OSM är en databas med flera scheman, vilket innebär att varje tagg relaterar till mer än ett schema, mer än en användning av data, och därför är det viktigt att integrera med andra scheman som redan används för att maximera kureringen av data
  • över-namnutrymme leder till inkonsekvens i databasen: om vi har projectfoobar:name=xxx och name=xxx kommer i många fall det ena att uppdateras och inte det andra. Ju enklare och mer generisk nyckeln är, desto mer använd kommer den att vara, desto mer kurerad blir den.
  • över-namnutrymme leder till ett spritt dataschema: någon som är intresserad av VHF-kanaldata måste till exempel leta efter hamn:VHF_kanal-nyckeln plus sjömärke:hamn:VHF_kanal , plus VHF_channel, plus lock:VHF_channel, plus vhf för att samla in data... Att endast använda vhf-tangenten bör vara tillräckligt för att veta att dessa data relaterar till hamnen eller slussen eller vad annat är OSM-objektet vi taggar.

För de vanligaste Kartfunktioner (d.v.s. de vanligaste taggarna som nya mappers kommer att använda oftast) är enkla nycklar (utan några namnutrymmen) vanliga.

När den inte används

I vissa fall är det fortfarande möjligt att använda generisk notation utan sammandrabbningar. Till exempel, modell=* kontra siren:modell=*. Båda knapparna indikerar en modell, men model=* är kortare och kan användas för alla relevanta funktioner, inte bara sirener.

Se även