As a contrast to the GML/KML and Google-related posts, here is an annotated Yahoo! map, derrived from geo-extended RSS 2.0 markup. I tried feeding the service a variant of RSS 1.0 last week (albeit with the Yahoo! extensions implicitly in the RSS namespace) and it seemed to work. They don’t yet have worldwide coverage, unfortunately. [via flickr thread]
I’ve been trying to get lat/long GPS data embedded in my photos, before I upload them to Flickr, so that geobloggers.com will make use of the data. So far, I can only get that site to use explicit “geo:lat=123.345″ based flickr-tagging; embedded EXIF seems ignored. See ongoing discussion in the Flickr GeoTagging group.
I spent some time yesterday talking with Ron Lake about GML, RDF, RSS and other acronyms. GML was originally an RDF application, and various RDFisms can still be seen in the design. I learned a fair bit about GML, and about its extensibility and profiling mechanisms.
We discussed some possibilities for sharing data between GML, RSS/Atom and RDF environments. In particular, two options: RDF inside GML; and RDFized GML.
The possibility of embedding islands of RDF inside GML (eg. the GML for a restaurant might use RDF for restaurant-review or menu markup) is interesting, as would allow GML documents to use any RDF vocabulary to describe the features on a map. Currently, such extension data typically requires the creation of a custom XML Schema. The other option, “RDFized GML”, is to explore the creation of an RDF vocabulary that allows some useful subset of GML data to be used in RDF. I’ll come back to this in a minute.
While GML comes from the world of professional GIS, its influence is being felt more widely: Google Earth (formerly Keyhole) uses something called KML, which bears a great many similarities with GML. Meanwhile in the RDF and RSS/Atom world, the very basic addition of “geo:lat” and “geo:long” tagging (sometimes using the W3C SemWeb IG WGS_84 namespace) has got a number of toolmakers interested. This year has seen the release of Yahoo! Maps, Google Maps, Google Earth and most recently Microsoft Virtual Earth. We’ve also seen the release of the excellent Mapping Hacks book, and increasing interest in this area from Web developers.
Although the experimental SWIG RDF vocabulary only deals with points described in WGS_84, there have been various discussions on possible extensions (eg. RDFGeom-2d from Chris Goad). These are intriguing, but we should be careful to avoid re-inventing wheels. Basically, I think we have all the ingredients for a hybrid approach: an RDFized GML subset designed for use by Web developers alongside RSS/Atom, FOAF and other public-facing XML formats. GML serves well as a data format in the GIS community, but some work is needed to find a subset that will find adoption in the wider Web.
The tiny W3C SWIG vocab, and related geo:lat/long tagging of “geo”-RSS feeds has shown that there is real interest in a lightweight XML-based mechanism for sharing map-related markup. GML shows us (via a 600 page specification, for GML 3.1) quite how rich and complex a problem space we’re facing, and KML demonstrates that a medium-sized “GML lite” subset can get traction with webmasters and developers, when backed by useful tools and services.
There are two pieces of work to do here (setting aside for now the topic of RDF islands within GML documents). Let’s first find a strawman profile of GML. From my limited knowledge and discussion with others, something “GML 2-ish” but profiled against GML 3.1, is the area to explore. Then we try getting those data structures into RDF, so it can mix freely with other information.
I understand from Ron Lake that profiling is something that is actively encouraged for GML, and there are even tools to support it that come with the spec: have a look at subsetutility.zip. These files (thanks Ron!) show a pretty easy path for experimentation with profiles. In addition to the schema subsetting utilities, the .zip also includes (just as an example to help me understand GML) an example application schema CommonObjects.xsd, showing how to define things like ‘Building’, ‘River’, and a sample instance .xml file that uses it.
To use the profiling tool, just put the unzipped files directly in the base/ directory of .xsd files that ships with GML 3.1, then run an XSLT processor to generate a GML subset.
xsltproc depends.xsl gml.xsd > _gml.dep
xsltproc GML3.1.1Subset.xsl _gml.dep > _gmlSubset.xsd
…and that’s your profile. The scripts take care of all the dependencies (ie. they’ll read the 29 XML Schemas, so you don’t have to :)
The bits of GML you want are specified as parameters in GML3.1.1Subset.xsl. The default in this .zip is: gml:Point, gml:LineString, gml:Polygon, gml:LinearRing, gml:Observation, gml:TimeInstant, gml:TimePeriod
I’m no GML expert, but if someone can help get some instance data matching such a profile, I’ll have a go at RDFizing it. Also, of course, it will be useful to debate how many facilities from full GML would find use in the Webmaster (RSS, KML etc) scene.
Disclaimer: for now this is purely an informal collaboration. If we make something interesting, it might be worth investigation of something more formal between W3C (home of RDF, and where I work) and OGC (home of GML). For now, let’s just try out some ideas…
RDF versus GML, Chris Goad (Sept 2004),
GML is the XML language for geography developed by the Open GIS consortium. The third major revision of this specification, known as GML3, was released in January of 2003. RDFMap, when used in conjuction with RDFGeom, constitutes an attempt to develop an alternative approach based on RDF to expressing geographical information. This note outlines the relationship between this approach and GML, and suggests techniques for converting data between the two formalisms. The important differences between RDFMap and GML derive from the choice of RDF, and would apply equally to other RDF-based formalisms for geography.
Interesting comparison. I’m somewhat wary of over-hyping RDF’s offering here. There’s certainly value in looking how GML application schemas might be reflected into RDF vocabularies (and vice-versa). Chris’s article ends with an example taken from the GML spec, represented in RDF. I wonder about going back the other way too, showing RDF properties used inside a GML document.
This is the hidden gem of Google Earth. Adding a “Network Link” allows you to fetch KML data from remote servers. It does this in two ways, Time Based or Location Based. So *anyone* can add dynamic data to Google Maps.
Apparently KML is based on GML. I don’t know Keyhole/Google’s work differs. There seems to be a role here for something simple enough for Google Earth, WorldWind, and other viewer apps to use, when consulting a remote server for info about some area of interest. Maybe it’s GML Web Feature Servers, maybe KML, maybe geo-extended RSS/Atom, or perhaps generic query interfaces like the SPARQL protocol. SOAP, WSDL and REST fit in the picture somewhere. Probably, various things will be used in different environments, depending on application emphasis. We might be looking up the opening-hours of a shop, contact information for an organization, or jobs, events, photos, blog posts, FOAF profiles etc in a certain area, … it isn’t clear where the line is drawn between ‘geographic’ data and the wider unbounded collection of information about the world. GML has strengths at the geographical end of the spectrum, RDF (and its query system, SPARQL) has strengths at the generic, domain-neutral end. RSS/Atom is serving well as a generic carrier for data syndication. It isn’t clear to me yet where KML fits (or SVG, for that matter), but work on the relationship between GML and RDF would seem timely.
The geobloggers post has examples and links to flickr and del.icio.us-based services that expose this interface. I’m going to try making such a service on top of SPARQL…