SFO Museum, Who's On First and Airports

This is a blog post by aaron cope that was published on October 30, 2018 . It was tagged exhibitions, opendata, whosonfirst and airports.

There are between 4,000 to 5,000 medium to large airports in the world, in 2018. As of this writing about 300 are relevant – are “holding hands” – with the SFO Museum collection. As of today those (300) airports and the countries they belong to have a home on the Mills Field website.

Like the exhibition webpages that we discussed in the last blog post there isn’t much “stuff” to see yet, save a small amount of metadata for each location and a map. There will be, soon, as these are all airports that have a relationship with objects in our collection.

You can reference individual airports by their unique Who’s On First (WOF) ID as well as their IATA or ICAO codes. For example, both of these URLs will take you to the Mills Field webpage for the Pierre Elliott Trudeau International Airport, in Montreal:

The same is true of countries, which can be addressed by their WOF ID or their ISO country code.

For example, both of these URLs will take you to the Mills Field webpage for Singapore:

Did you notice that you can reference airports and countries by their Who’s On First ID?

Instead of minting on our records and identifiers for common places we are marrying our data (buildings, terminals, exhibitions) with the pre-existing and continually updated Who’s On First dataset for administrative data (airports, cities, countries). We’ve submitted our own contributions, back to the WOF project, adding missing or historical airports where necessary.

That way when our respective projects talk about the Albuquerque International Airport (IATA code ABQ or WOF ID 102529173) we can be confident that we are talking about the same thing.

Rather than importing all 2.3 million administrative records from Who’s On First we have cloned only those records immediately relevant to the SFO Museum collection and the Mills Field website in to our own sfomuseum-data-whosonfirst dataset:

We use the go-whosonfirst-fetch command-line tool to keep copies of the WOF data we’ve cloned in sync with the source data. Like this:

$> ./bin/wof-fetch
	-reader 'reader=github repo=whosonfirst-data' \
	-reader 'reader=github repo=whosonfirst-data-postalcode-us' \
	-writer 'writer=repo root=/usr/local/data/sfomuseum-data-whosonfirst' \
	-belongs-to country \
	-mode repo \

This blog post is not the place for a detailed discussion of the go-whosonfirst-fetch tool but briefly this is what’s happening:

  • We’re defining two sources to read data from: The WOF GitHub repositories for administrative data and US postalcodes.
  • We’re defining a source to write data to: A local checkout of the sfomuseum-data-whosonfirst repository.
  • We’re asking the code to also fetch the country record for each matching record we’re cloning; that’s what the -belongs-to flag is for.
  • We’re reading the list of records to clone from the same local checkout of the sfomuseum-data-whosonfirst repository that we are writing data to; that’s what the -mode flag is for.

The sfomuseum-data-whosonfirst repository also has a separate properties folder where we define additional SFO Museum-specific properties that we want to append to the source WOF data. For example, these are the SFO Museum properties for Albuquerque International Airport:

  "sfomuseum:airport_id": 1, 
  "sfomuseum:name": "Albuquerque International Sunport", 
  "wof:concordances": {
    "icao:code": "KABQ", 
    "iata:code": "ABQ"
  "sfomuseum:placetype": "airport", 
  "sfomuseum:is_sfo": 1

Some of those properties might already exist in the source WOF data (like concordances) but the important point here is that we have a way to stay current with updates to data in Who’s On First while still preserving SFO Museum’s tweaks to and opinions about that data.

This feels like a small but meaningful step in how our open data might play nicely with other open data projects, both conceptually and at the level of brass-tacks implementation details.

In closing, we’ve added a random airport link so you can dive in with both feet and see where the computer-robots take you. Enjoy!