I guess this topic has been raised may times already but let me add to it.
Right now OSM is a collection of dots and lines with some generic tags for rendering them on a map. They do compile into nice maps but does it really work when it comes to searching for objects of real life categories? Let’s look into some examples.
- place=city/town/village/hamlet/isolated_dwelling stand for settlements of some pupulation ranges. But each country has its own categorization of settlements which may absolutely differ from the suggested gradation.
- waterway=river/stream are used for natural relatively large or small waterways. But the notion of river may differ from country to country and they may have a much wider range of categories then just these two ones.
- amenity=school/university/college have some generic notion of secondary, higher and further edicution institutions. But again each country has it’s own categorization of educational institutions and in some cases it even contradicts the suggested tag names, e.g. in Russia they have colleges as something intermediate between high school and university.
To wrap it up it is hard to impossible to get objects of some real live category from OSM database in order for example to hight light them on a map or to list them in search results.
There are two workarounds used right now. The first one is to bind some new tags to local categories e.g. school=high_school, school=college. This approach is very contradictary because it is recognized only locally and may conflict with notations in other countries.
The second one is to put category name into “name” tag, e.g. “Liberty avenue”, “Blue lake”, “South park”. This approach works pretty fine until you think of applying it to everything, e.g. “Manchester” would become “Manchester city”, all shops would become “[name] shop” and will be rendered as such on maps or otherwise additional algorithms will need to be coded for rederers to decide whether to cut a category name from the displayed name or not for each particular country.
I invision the following solution here.
- First of all, the “name” tag should containt proper name only.
- Secondly, introduce a new tag for the real life language specific category name. I know that “name:prefix/postfix” key was originally introduced for another purpose but it can be a candidate here as well. Note that in some languages the place of category name relative to the proper name matters.
- Thirdly, in order to make the life of renderers simple, introduce one more tag for holding the name which can be displayed on maps as is without any modifications, e.g. “display_name”. This tag may contain whatever content is considered locally appropriate specifically for rendering on maps. For example, it may contain proper name with category abbriviation like “r. Missisipi” or proper name with category full name like “Liberty avenue” or if an object has no proper name but is worth being labeled like “police station”. Locally agreed upon rules should prevail here and if somebody needs another format he is free to utilize “name” and “name:prefix” tags the way he likes it.
If proper name is considered good for rendering without any modifications like “Manchester” city then display_name can be missing.
Here are a couple of collective examples:
- highway=residential + name:ru=Независимости + name:prefix:ru=проспект + display_name:ru=“пр-т Независимости”
- waterway=river + name:de=Elbe + name:prefix:de=Fluß (no “display_name” tag becase they usually display only proper names of rivers on maps in Germany)
- place=city + name:en=Manchester (no “display_name” tag because it is equal to “name”, and no “name:prefix” tag if and only if the values in “place” tag correspond to the real life settlement categories in US)