[Talk-de] OSM case sensitiv?
Stephan Knauss
osm at stephans-server.de
Di Okt 13 07:51:36 UTC 2009
Bernd Wurst wrote:
>> Ich bin dafür, dass die keys nur aus Kleinbuchstaben bestehen. Hier zu
>> viele Sonderzeichen zu erlauben erzeugt doch nur Verwirrung.
>> Brauchen wir diese Freiheit wirklich?
> Ich bin dafür, dass jeder, der die Daten nutzt (und folglich weiß, ob er
> case-sensitive Infos erwartet) einfach ggf. ein "lower()" [je nach Sprache]
> aufruft. Das schränkt niemanden ein und löst das Problem auch.
Du entwickelst keine Software, oder?
Das Problem ist, dass die Schnittstellen definiert sein müssen, bzw. das
genaue Format der Daten. Die Semantik muss klar sein.
Beispiel:
Wenn ein Programm "building=yes" verarbeiten kann, dann kann nicht
einfach ein "Building=yes" gleich behandelt werden. Das Programm (bzw.
der Autor) kann nicht wissen was "Building" bedeutet. Es könnte sein,
dass dieser Key dazu verwendet wird um öffentliche Gebäude zu
kennzeichnen, damit diese in einer Spezialkarte farblich anders gezeigt
werden.
Wenn "Building" bekannt ist, dass es eine andere Bedeutung hat als
"building", das der Autor weiß und es nur gleich behandeln will, dann
wird er auch genau nach diesen beiden Strings suchen. Es könnte ja mal
jemand auf die Idee kommen den Key "BUilding" zu erfinden, der dann noch
eine ganz andere Bedeutung hat.
Ein Lösungsvorschlag war so eine Art Alias-Tabelle.
Meine Idee wäre es Namespaces einzuführen. Diese können einen Satz von
Schlüsselwörtern definieren denen auch eine eindeutige Bedeutung
zugeordnet werden kann.
Das würde auch die MapFeatures-Problematik beenden.
Alle die einen "Starken Führer" wollen einigen sich auf einen Namespace
der von diesem spezifiziert wird, andere verwenden einen Namespace
dessen Bedeutung sie in demokratischen Gremien definieren. Und andere
verwenden einfach keinen Namespace weil es ihnen nicht frei genug ist.
Die API müsste dazu jedem Element einen/mehrere Namespace(-Identifier)
zuordnen können.
Auf Tag-Ebene könnte das ein weiteres Attribut sein ("n" für namespace).
Ein Node könnte dann solche tags haben
<tag n="osmf-namespace" k="name" v="eine Bedeutung für name" />
<tag n="fossgis-namespace" k="name" v="andere Bedeutung für name" />
<tag n="incubation" k="neuerKey" v="exotischer Schlüssel" />
Editoren/Renderer blenden die Namespaces aus, die sie nicht
anzeigen/editieren wollen, bzw. wählen die Namespaces deren Semantik sie
kennen.
Ein Renderer mit der Intelligenz eines HAL 9000 kann auch einfach alles
nehmen und erkennen was der Nutzer gemeint hat als er einen neuen Key
erfunden hat ;)
Stephan
Mehr Informationen über die Mailingliste Talk-de