Drupal + OGDI = Open Data goodness!
Over the last few months a few of us at the Openness Lab at Microsoft Canada have been working with David Eaves, Drupal developer experts Raised Eyebrow and his volunteer team on the next version of dataDOTgc.ca. Our objective: add a way to store, browse & access data sets via APIs. Our approach: integrate Open Source CMS platform Drupal with Microsoft’s Open Source solution for Open Data catalogues: Open Government Data Initiative (OGDI) .
DataDotGC.ca is a citizen-led open government data portal for Canada, built in Drupal and using CKAN (the Comprehensive Knowledge Archive Network) for cataloguing the data (more on the original development here). The original v1 version did not store any datasets (only linked to them), but that capability was desired for v2, so David and his team decided to see how Microsoft’s OGDI could provide that capability.
OGDI is an open-source solution to load and store open data; it uses Windows Azure cloud-based platform and includes a Data Service and a Data Browserprovides an easy way to access, browse & filter datasets.
So, we decided to put the two together: Drupal + OGDI = DataDOTgc.ca (v2) !!
First, we created an OGDI instance for DataDOTgc.ca, by downloading OGDI v2 latest code from Codeplex, then building, configuring & deploying to Azure. See the videos on how-to do it here. Technically, we only needed OGDI’s Data Service component, which outputs XML of the data, which means we could could then read the XML of the data sets from Drupal. But, to get started we played around by loading data from the City of Edmonton’s open data catalogue data.edmonton.ca which also uses OGDI. Still, for dataDOTgc.ca we went ahead and deployed the full OGDI package
Second, we asked for some expert help from Colin at Raised Eyebrow Studios in Vancouver, who wrote some nifty code to parse the XML produced by OGDI’s data service, and bring it in a nicely-formatted JQuery table right into Drupal. The code was packaged up into an OGDI Field Module, which adds a CCK field to any content type, and accepts a valid URL to a OGDI dataset as input, and outputs a slick, themed scrollable, filterable, sortable, searchable table and a map displaying that data.
The end-result is having a method of displaying data stored in OGDI instances on Drupal-powered websites. In the case of DataDOTgc.ca we could now enable loading the data using OGDI Data Loader to store a data set, like this one, and have it into appear in DataDOTgc here: http://www.datadotgc.ca/dataset/emitter_facility_data The nice thing is that we can also integrate any other OGDI-based dataset, like the one for Edmonton Historical Buildings just as easily into DataDOTgc just like this.
This project is just another demonstration of the power of mixed environments, Azure cloud & integrating open source and Microsoft solutions.