« Previous | Main | Next »

Helping machines play with programmes

Post categories:

Tom Scott | 13:50 UK time, Tuesday, 13 May 2008

As part of our work on developing BBC Programmes we have been looking at how we can make the data available for other development teams outside the BBC. And at last weeks XTech Nick and myself presented a paper outlining our work to date and some of our future plans.

We have been following the Linked Data approach - namely thinking of URIs as more than just locations for documents. Instead using them to identify anything, from a particular person to a particular programme. These resources in-turn have representations, which can be machine-processable (through the use of RDF, Microformats, RDFa, etc.), and these representations can hold links towards further web resources, allowing agents to jump from one dataset to another.

To date our work on Programmes has been focused on providing persistent URLs to HTML documents of our primary objects : episodes, series and programme brands. However, we have also been looking at how we can make this data available to machines. So what does this look like?

For starters the HTML is marked up with hCalendar and hCard microformats to help the machine identify schedules and cast and crew information. Semantic web with a small 's' if you will. But more interesting is our work on alternate data serializations - big 'S' Semantic Web.

As discussed in our presentation we have developed an ontology to describe programmes; and we are now working to make the data available in a variety of formats: XML, Atom, RSS 2, JSON, YAML, RDF. Although, currently we only have XML, YAML and JSON views for schedules i.e. the following urls:

/:service/programmes/schedules/:outlet
/:service/programmes/schedules/{:outlet/}:year/:month/:day
/:service/programmes/schedules/{:outlet/}:year/:month/:day/ataglance
/:service/programmes/schedules/{:outlet/}:year/:week
/:service/programmes/schedules/{:outlet/}yesterday
/:service/programmes/schedules/{:outlet/}today
/:service/programmes/schedules/{:outlet/}tomorrow
/:service/programmes/schedules/{:outlet/}last_week
/:service/programmes/schedules/{:outlet/}this_week
/:service/programmes/schedules/{:outlet/}next_week

To access these add .xml .yaml or .json to the end of the url. For example the xml serialization for the Radio 1 schedule is:

http://www.bbc.co.uk/radio1/programmes/schedules.xml

The JSON serialization for today's Radio 4 schedule is:

http://www.bbc.co.uk/radio4/programmes/schedules/fm/today.json

We've also done some work on the RDF representation. These aren't live yet but can be accessed on a development server at : http://bbc-programmes.dyndns.org. We would love hear what you think about what we've done before we make the service live.

I should also point out that all of this is licensed under the same terms of use as Backstage i.e. you can only use these APIs for non-commercial use. And to give you an idea of the sort of thing you could build have a look at this screen cast.

Download Quicktime movie or watch at vimeo.com.

What you are looking at is a demo Patrick put together that takes the Programme Ontology over XMPP and integrates that with Growl notification so that you get notified when a programme starts.

The first message displays the metadata coming over XMPP.

The second message grabs the brand short synopsis from the linked data from the BBC Programmes linked data RDF.

The third message grabs the radio network's first air date from DBpedia.

What's also nice about this is the additional data being pulled in from DBpedia. The information about when the service started broadcasting is not coming from a BBC database - it's coming from BDpedia - we are able to link DBpedia to the Service within the Programmes Ontology and thereby pull in additional data from an external source.

Anyway I hope you like what we've done - but in any case all comments are most welcome.

Tom has also written a review of XTech on the BBC Internet blog.

Comments

 

BBC iD

Sign in

BBC navigation

BBC © 2014 The BBC is not responsible for the content of external sites. Read more.

This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.