Skip to main content

About Android, the Semantic Web and the BBC

Posted by fabriziogiudici on July 16, 2010 at 10:14 AM PDT

Yes, there is quite a bit of topics in the title, and they are all involved in the latest prototype of blueBill Mobile.

In case you don't have read my previous posts on this track, I'm going to give a bit of context. I'm referring to an Android application of mine, blueBill Mobile, aimed at providing a number of field tools for birdwatchers. The core of the application is a database of species, which is very complete for given geographic areas, that users can browse and operate upon. The relevant part for this post is the 'fact sheet' section, where for each species one can pick a description, some information and a collection of related media. A key concept of blueBill Mobile is that information aren't provided by a “closed” publisher (such as the portfolio and the knowledge base of a single coprorate, as it happens for other birdwatching applications in the market), instead the app is able to aggregate information available on the web, when the terms of use are appropriate. Data can be still reliable (there are reputable organizations providing vetted data), so this open approach can be extremely powerful, as huge quantities of quality information can be made available to users.

Semantic technologies

Semantic technologies (I'm not talking yet of the Semantic Web) have been involved since the beginning in the design of my application, as it is based on a RDF store - that is a way that I find very convenient to represent heterogeneous information (I've blogged a few times in the past about this). The retrieval of data, until the past week, was only implemented by non semantic means, as the first data provider that I aggregated (xeno-canto, a large database of bird calls) just exposes HTML pages. Thus, web scraping was needed - a cumbersome approach that is also brittle, as it easily breaks when the website changes something in its look and feel. This is a critical point: you don't want that your app all of a sudden stops working because of a change that you can't control, nor you want to be forced to publish an update in a matter of hours. The solution I've implemented for this scenario is an offline scraper that produces RDF triples that are later bundled with the application in N3 notation. This means that I also have to provide a way to update these files (without necessarily updating the whole app). In the end this approach works, but with additional complexity (of course, for sites that only provide HTML I have to live with it).

The Semantic Web and the BBC Wildlife Finder

The Semantic Web has been designed exactly to solve this problem and have a specific way to integrate data from multiple sources. There are more and more RDF-enabled websites and a very interesting one for my purposes is the BBC, as it is - among other things - a very active producer of nature video footage of excellent quality and known all over the world.

As a personal note, “The Living Planet” series of documentaries by sir David Attenborough has probably been one of the most influential things of my boyhood - for both my interest in nature and my development of an aesthetic sense for imaging (furthermore I remember that when the series was broadcast in Italy I had just bought my first serious music synthesizer and I was practicing on it trying to reproduce parts of the soundtrack by Elizabeth Parker).

Recently, the BBC has done a huge amount of work to make available many pieces of its footage about nature by means of a web interface, the BBC Wildlife Finder (this is part of a larger initiative that makes available also other productions, such as news and sports). Information is both available in HTML for a traditional desktop navigation and in RDF+XML for other uses (subject to a specific syndication license). For understanding the difference, click the two links related to the Greater Flamingo:

As you can see RDF+XML is rich of information and links to external RDF resources and it can be easily parsed and manipulated, even on Android. Thus it has been easy to integrate it with blueBill Mobile, as the screenshots and screencast below demonstrate.


As you can see, for usability purposes I reorganized the different pieces of information provided by BBC to make them available in different sections of the fact sheets (and they are and will be seamlessly integrated with other data sources, each one tagged with its credentials and terms of use).

I must stress the point that, unlike other anticipations of blueBill Mobile features, this prototype is experimental and needn't to be actually available in the next release; unlike the xeno-canto resources, that are available under a Creative Commons license, I need to understand if my usage is really compatible with the BBC terms of use - this post has been also written to submit my app to BBC's attention for a feedback.

Political issues with the integration

There are political issues when you reuse chunks of information provided by a third party (not under an open license) and present them to end users with your own UI. For instance, some time ago an independent developer, Dave Johnston, published a free application (beebPlayer) for playing the BBC video footage from an Android smartphone, but BBC took it down because it was not compatible with the syndication policy (Dave explains the details on his blog). In short, BBC is developing its own app (iPlayer with an Android port) for accessing their contents, for a number of reasons ranging from quality control to the possibility of placing ads. This is understandable, as we can't pretend that every content provider in the world works with open licenses.

That's why I didn't even try to integrate a video player in blueBill Mobile, but when a footage element is picked the original BBC web page is open in the navigator - a thing that, in practice, is not meaningful as the website has not been optimized for rendering on a small device. So, when the resource I want to integrate is not available under an open license, and usually it comes with its specific app such in the BBC case, it seems there's a conflict between the desire of delivering to users a smooth way to access the integrated data and the need to respect the terms of use.

Now, Android sports a great way to integrate different applications together, by means of the Intent / Activity paradigm. In short, you can pass a message (Intent) from an application to another and create a seamless sequence of screens that are rendered by the two applications in turn. Hopefully BBC will provide a public Intent for iPlayer, so I will be able to launch it instead of opening the web page, providing to my users an immediate access to the resource, while the BBC would completely control the way it is rendered.

Some specific comments to the BBC service

There is just another couple of points that are worth to be mentioned:

  1. iPlayer for Android will be Flash-based. Unfortunately, this means that only a subset of Android 2.2 mobile phones will be able to run it. This is not a constraint due to technical reasons: for instance, iPlayer on iPhone is already available and, clearly, it doesn't use Flash; furthermore, Dave Johnston demonstrated that the BBC clips can be rendered on Android in an alternate way. While I understand that delivering on multiple platforms is hard and expensive, I really hope that BBC finds a solution for supporting older Android versions, because a long time will pass before 2.2 significantly spreads.
  2. Opening iPlayer from my desktop navigator a message appears, saying that video contents are available to UK only. I think it is a deliberate choice (a paragraph in the BBC Syndication Policy explicitly says “BBC content may only be distributed for consumption within the UK”)... but this sounds really anachronistic in MMX, doesn't it? I really hope that this restriction will be lifted in future.


I'm stopping here for now. Beyond the details that specifically involve my app, I hope that this post is giving you some good hints about how the Semantic Web (and its related technologies) can be profitably used to create applications which provide rich contents to end users by means of a smartphone app.

I'd also like to stress again that the Android architecture (in particular, the Intent / Activity paradigm) is very powerful to allow the inter-app collaboration that is required when you can't directly integrate third parties' contents for licensing reasons, still delivering a good user experience. As far as I know, it's a feature that competitors, such as iPhone, don't offer, thus dramatically reducing the possibilities that we developers can exploit and - in the end - reducing the things that end users can enjoy.

Last but not least, all of this can be jeopardized if content providers forget to implement some apparently minor details - such as the support for a public Intent in iPlayer, as I explained above.

Related Topics >>