About Android, the Semantic Web and the BBC
Yes, there is quite a bit of topics in the title, and they are all involved in the latest prototype of blueBill Mobile.
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.
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.
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:
- 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.
- 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.