Another thing that slowed me down was OSM's use of 'relations' for... most everything. Relations are used for drawing shapes (mainly multipolygons) and sharing ways between two polygons, but are also used for describing one object's dependancy on another (like metro station nodes dependant on (or attached to) a metro line way). Shouldn't "relation" and "dependancy" be two distinct things?
What if "relation" was strictly reserved for shape rendering, and "dependancy" be used instead for describing one object's "belonging" to another? I think this could make data parsing and rendering - I'll get to this later - much more efficient and comprehensible.
Take my present obsession, buildings, for an example: The building itself would be a shape (relation, ways, nodes), but its address would be a node of its own (as is the case in most all of OSM). An address is rarely attached (at least, as far as I can see) to the building it 'belongs' to (it would be silly just to add extra specifically-key'd nodes to a building path just for that) - but what if the address nodes became a 'dependancy' of the building? A search for that address and its dependancies would turn up not only the address itself, but the building it belongs to.
I'd like to take that thought one step further: Imagine a house on a gardened property. The property is a key'd polygon, and so is the building upon it. If both the house and the property are dependant on the address, a search for the address (and its dependancies) would turn up both. To take this yet one step further, imagine that if everything on the property (grass, garden, trees, gates) were declared dependant on the property (automatically, because they overly the property polygon, upon submission?), a search for the address (and its dependancies) would return not only the parcel of land and the building, but everything on it. Hell, if a property were in an administrative region and we followed this logic, we could return entire, quite precise, swaths of land. But I'm not so sure if that sort of data usage is in OSM's perspective or interest.
As for the rendering side of things: I mentioned 'rendering order' in an earlier entry, and OSM most certainly has a schema of that sort (buildings drawn on top of grass drawn on top of city blocks, etc - although I don't understand it yet), but through 'dependancies' we could take this one step further: Imagine that I wanted to place a fountain (or a pool) on top of the building (terrace) in the property example I used earlier on. How would OSM place that? For the time being, I would have to use the "level=" key. Imagine instead that, because that fountain/pool polygon would be over the building polygon underlying it, it would be declared dependant upon it upon submission - if an object is dependant upon another, it could be rendered ~after~ the object it is directly above (dependant upon). And, to ensure that an object is indeed 'on top' of the object it is supposedly resting upon, we need only add a 'bring to front' button/menu to do just that to the object selected.
Let's not forget that OSM renders 'from the bottom up' (land, then covering, then buildings, etc): if there were a 'chain of dependancies' (eg: city block, garden, paths (benches dependant on paths because 'over' paths) and grass (lake dependant on grass because 'over' grass), buildings, things on buildings...) and OSM followed it all the way to the top, things could be rendered in a constant and comprehensive order - with much less design constraint for the end user.
Discussion
Comment from EdLoach on 14 April 2011 at 09:11
http://taginfo.openstreetmap.de/keys/?key=addr:housenumber#values
There are about 8 million house numbers on nodes and about 2 million on ways. If you are drawing a building you can put the address details directly on the way and don't need a separate node.
e.g. osm.org/go/euzPZE4wD--
or
osm.org/go/0EFrigrss--
It is possible that someone collected house numbers before sources to trace buildings were available, in which case they would likely have used nodes, but if you add buildings later than you can move the tags to the way. And I would say it is only a rare building that requires a multi-polygon relation. It is much more common that they don't.
Comment from marscot on 14 April 2011 at 10:33
and then there's the case where the building has 3 addresse points in 3 street and the node way makes perfect sense, and also have a building in a street, but the addresse are at the back into another street, again the node way is used here. I have used both ways and find the node does a better job. :)
Comment from ThePromenader on 14 April 2011 at 11:51
(comically pulling hair) Is there no standard way to do anything here? Actually, in both cases, whether the node is part of a way or not, the node would get an "addr:*" key attributed to it... that would weigh about the same, data-wise. The city I'm working on, has TONS of multipolygon buildings (take for example, its biggest: osm.org/browse/relation/539480 - the Louvre museum. I can also think of cases where I came across a multipolygon that had multiple addresses on all ~four~ sides. And think of the Pentagon ; )
Comment from iandees on 14 April 2011 at 14:14
"Is there no standard way to do anything here?"
No, there isn't, and that's why the project has been so successful so far. The community has landed on some consensus for ways to do the things you're talking about (multipolygon relations for buildings with holes in them, the Karlsruhe Schema for addressing, etc.), but the beauty of OSM is that there is no standard to read, no 500 page "mapping requirements" document, etc.
Comment from Strash on 14 April 2011 at 14:46
ThePromenader > I think that most of your concerns can be solved by a well design software. For "everyday" mapping a software can hide the tag system to the user in order to make mapping more friendly to new user. Potlatch2 is close to that regarding POI.
I think that's what is missing in OSM, an really-easy way of adding content. But I'm confident that someone will create such thing in the near future.
Free-form tagging is one of the force of OSM, not a weakness.
Comment from Strash on 14 April 2011 at 14:49
ThePromenader > I think that most of your concerns can be solved by a well design software. For "everyday" mapping a software can hide the tag system to the user in order to make mapping more friendly to new user. Potlatch2 is close to that regarding POI.
I think that's what is missing in OSM, an really-easy way of adding content. But I'm confident that someone will create such thing in the near future.
Free-form tagging is one of the force of OSM, not a weakness.
Comment from ThePromenader on 14 April 2011 at 16:01
I agree that free-form tagging would be a force - and I see every reason why - but could OSM at least control ~where~ we put the tags (keys)? Even if my software is well-formed, it still has to look ~in all possible locations~ for keys. BTW, I have written a quite successful php script that extracts targeted data quite successfully, but it requires about ten times more memory and time (because of the needed recursive searches) than would be required if the keys were in one place and relations (shape and 'belonging' roles) were treated more precisely. Cheers.
Comment from Sanderd17 on 14 April 2011 at 16:53
@ThePromenader: The best solution to the problems you give would be a good preprocessor. One standard preprocessor that makes all data consistent.
That way, users can just input data the way they want and apps just need to know one tagging schema per feature.
The preprocessor could even be run on the OSM servers so that users of the data can download consistent data without problems.
Comment from chriscf on 14 April 2011 at 21:28
If people are using relations to share ways between polygons, they're doing it wrong. Two buildings with a shared wall are two polygons, not three ways and two relations.
Comment from ThePromenader on 15 April 2011 at 09:20
Thanks for your replies. @Sanderd17, could you elaborate? This sounds very interesting.