While fielding a question on a local Perl list this weekend I ran across some more RDF alive and kicking in the very useful geocoder.us service. They have a nice RESTful web service, which allows you to drop an address or intersection into a URL like:

http://rpc.geocoder.us/service/rest?address=
1340%20Ridgeview%20Drive%20McHenry%2C%20Illinois%2060050

and get back the longtitude and latitude in a chunk of RDF like:


<?xml version="1.0"?>
<rdf:RDF
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

<geo:Point rdf:nodeID="aid87293465">
    
    <dc:description>899 Ridgeview Dr, McHenry IL 60050</dc:description>
    <geo:long>-88.291658</geo:long>
    <geo:lat>42.314936</geo:lat>

</geo:Point>


</rdf:RDF>  

Of course this data could be encoded in comma-separated-values, in fact they have a similar RESTful service that does just that:

http://rpc.geocoder.us/service/csv?address=
1340%20Ridgeview%20Drive%20McHenry%2C%20Illinois%2060050

which returns:


42.314936,-88.291658,899 Ridgeview Dr,McHenry,IL,60050

Does this mean RDF isn’t necessary? For someone who is just querying geocoder.us directly and knows what the output is I guess the RDF doesn’t really add that much value. My coworker Bill likes to talk about being explicit in code whenever possible, and the RDF in this case is more explicit. Until there are programs that follow lines of inference using this data it’s largely a matter of taste. It’s nice that geocoder supports both world views.

And hats off to geocoder: they give away their software and how they built the service to anyone who wants it. They provide expertise in using the data, and also offer commercial access to their web services which have the 10 second or so pause between requests disabled. What an interesting model for a company. Heck, wouldn’t it be nice if OCLC operated this way?