This is indeed a very exciting feature and I can't wait to see it implemented :)

> Should i define each one of these as a SMWDataItem::TYPE_xxx? Or should these things be defined through things like a combination of record/blobs and arraymap?

Having dedicated data types seems like the way to go - if you simply use compounds or subobjects, then it'll not be possible for the SMW stores to nicely optimize for this kind of data (ie apply the appropriate geospatial indexes). Since SMW 1.6 you can no longer extend the datatypes from outside (for good reasons), so you'd be creating your own SMWDataItem deriving classes in SMW. Once these are done, you need a way to actually represent this data to the user, which is done by creating so called DataValues, which derive from SMWDataValue and typically hold a SMWDataItem (more info on this here [0]). These DataValues should go into Semantic Maps (where the current GeoCoord DataValue resides as well). One final element you need is a way to actually set these kind of values. This is also done in the DataValue, which specifies how values of it's type are parsed. Depending on just what kind of data these objects will hold, it might not might not be useful to create one or more dedicated parser functions instead of just extending the extended link syntax. If you just have points, this is not needed, but if you have points which can have all kinds of additional info associated (including semi-free-text descriptions), then a dedicated parser function might be better.

One more though I have on this is that if you have additional data that is associated with the geospatial shape as a whole, it'd be better to have it as other properties pointing to the object. This way you allow people to have whatever type of extra info they want. You of course will need to know which data to use for what when the actual map is being build, which can be done by having additional parameters in the #ask function that specify "the value of property Has description should be used as description", ie descrtiptionproperty=Has description.

[0] There is some info about this here: http://semantic-mediawiki.org/wiki/Architecture_guide


Jeroen De Dauw
Don't panic. Don't be evil.