W3C home > Mailing lists > Public > public-lod@w3.org > July 2008

Re: ANN: BBC Music Linked Data Goodness

From: Richard Cyganiak <richard@cyganiak.de>
Date: Wed, 30 Jul 2008 18:31:48 +0100
Cc: <public-lod@w3.org>
Message-Id: <25502ACC-300B-4646-AE09-48C35E3A87AB@cyganiak.de>
To: Patrick Sinclair <Patrick.Sinclair@bbc.co.uk>


Wow, this is impressive and I'm really excited to see all this RDF  
coming out of bbc.co.uk. Great work!

I like your choice of URI design, with hash URIs instead of 303s.  
Gives a nice and clean feel to the entire setup.

Nitpicks etc:

- At the content-negotiated URIs of form /music/artists/{id}, add a  
Content-Location header that gives the URI of the selected variant  
(e.g. /music/artists/{id}.html if HTML was selected)

- Maybe add <link rel="alternate"> headers to the HTML for the other,  
non-RDF data formats as well (XML, JSON)

- Add a foaf:page link to the RDF that points back to the HTML (e.g.  
to </music/artists/{id}.html>)

- I would love to see the play count data. And, actually, which song  
was played how often, and in which programme! ;-)

- No RDF yet for releases and songs? :-(

- If I dereference the URI of a SoloMusicArtist who is a band member,  
then the RDF doesn't contain a pointer back to the band. The HTML has  
the pointer. Example: http://www.bbc.co.uk/music/artists/6953c4db-7214-4724-a140-e87550bde420

- Is there any way to search for a specific artist, by name? In the  
HTML interface? It might be useful to have some way to get back those  
search results in RDF as well.

Good catch about the Vary header. I read in the HTTP spec that we're  
supposed to use it whenever we do content negotiation, but most  
examples I looked at didn't use it and seemed to work fine, so I never  
gave it much thought. Now we know that breakage can occur if the  
header is absent.

All the best,

On 29 Jul 2008, at 19:30, Patrick Sinclair wrote:

> Hi All,
> As you may know, we launched the BBC Music Beta yesterday [1,2,3].  
> We'd like to go over the Linked Data goodness that we have built  
> into the site.
> For every artist profile we have published, we have content- 
> negotiated RDF:
> rapper -o turtle http://www.bbc.co.uk/music/artists/cc197bad-dc9c-440d-a5b5-d52ba2e14234
> rapper: Parsing URI http://www.bbc.co.uk/music/artists/cc197bad-dc9c-440d-a5b5-d52ba2e14234 
>  with parser rdfxml
> rapper: Serializing with serializer turtle
> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
> @prefix foaf: <http://xmlns.com/foaf/0.1/> .
> @prefix mo: <http://purl.org/ontology/mo/> .
> @prefix owl: <http://www.w3.org/2002/07/owl#> .
> @prefix time: <http://www.w3.org/2006/time#> .
> @prefix dc: <http://purl.org/dc/elements/1.1/> .
> @prefix timeline: <http://purl.org/NET/c4dm/timeline.owl#> .
> @prefix event: <http://purl.org/NET/c4dm/event.owl#> .
> <http://www.bbc.co.uk/music/artists/cc197bad-dc9c-440d-a5b5-d52ba2e14234.rdf 
> >
>     rdfs:label "Description of the artist Coldplay" .
> <http://www.bbc.co.uk/music/artists/cc197bad-dc9c-440d-a5b5-d52ba2e14234#artist 
> >
>     a mo:MusicGroup;
>     foaf:name "Coldplay";
>     owl:sameAs <http://dbpedia.org/resource/Coldplay>;
>     mo:image <http://www.bbc.co.uk/music/images/artists/7col_in/cc197bad-dc9c-440d-a5b5-d52ba2e14234.jpg 
> >;
>     mo:musicbrainz <http://musicbrainz.org/artist/cc197bad-dc9c-440d-a5b5-d52ba2e14234 
> >;
>     mo:homepage <http://www.coldplay.com/>;
>     mo:fanpage <http://www.pleasureunit.com/coldplay/index.php>;
>     mo:wikipedia <http://en.wikipedia.org/wiki/Coldplay>;
>     mo:imdb <http://www.imdb.com/name/nm1095892/>;
>     mo:myspace <http://www.myspace.com/coldplay>;
>     mo:member <http://www.bbc.co.uk/music/artists/18690715-59fa-4e4d-bcf3-8025cf1c23e0#artist 
> >, <http://www.bbc.co.uk/music/artists/d156ceb2-fd90-4e82-baea-829bbdf1c127#artist 
> >, <http://www.bbc.co.uk/music/artists/6953c4db-7214-4724-a140-e87550bde420#artist 
> >, <http://www.bbc.co.uk/music/artists/98d1ec5a-dd97-4c0b-9c83-7928aac89bca#artist 
> > .
> <http://www.bbc.co.uk/music/artists/18690715-59fa-4e4d-bcf3-8025cf1c23e0#artist 
> >
>     a mo:SoloMusicArtist;
>     foaf:name "Guy Berryman" .
> <http://www.bbc.co.uk/music/artists/d156ceb2-fd90-4e82-baea-829bbdf1c127#artist 
> >
>     a mo:SoloMusicArtist;
>     foaf:name "Jon Buckland" .
> <http://www.bbc.co.uk/music/artists/6953c4db-7214-4724-a140-e87550bde420#artist 
> >
>     a mo:SoloMusicArtist;
>     foaf:name "Will Champion" .
> <http://www.bbc.co.uk/music/artists/98d1ec5a-dd97-4c0b-9c83-7928aac89bca#artist 
> >
>     a mo:SoloMusicArtist;
>     foaf:name "Chris Martin" .
> rapper: Parsing returned 23 triples
> Our approach to publishing the site in a linked data manner is:
> * each artist profile HTML document is published at http://www.bbc.co.uk/music/artists/:gid 
> , where :gid is the MusicBrainz identifier
> * rdf is available at http://www.bbc.co.uk/music/artists/:gid.rdf
> * content-negotiation is configured for http://www.bbc.co.uk/music/artists/:gid
> * The http://www.bbc.co.uk/music/artists/:gid.rdf URI describes the  
> document
> * The http://www.bbc.co.uk/music/artists/:gid.rdf#artist URI  
> describes the artist
> We’ve considered various LOD publishing recipes, and decided to take  
> this approach as it was:
> * simple: one view for the HTML, one view for the RDF
> * suited our internal caching policy, as we could cache all  
> representations
> However, we’ve found some curious issues with our internal BBC  
> proxy, which has randomly cached the RDF version and served that  
> when a web browser was expecting the HTML page. We believe we’ve got  
> around this by setting the “Vary: Accept” [5] in the HTTP headers.  
> We’re curious to know if anyone else has encountered this issue, as  
> we had trouble finding any Linked Data documentation on the subject.
> It’s been suggested that we use foaf:member and foaf:homepage  
> instead of mo:member and mo:homepage, so we will very likely make  
> this change shortly.
> We’d like to publish the play count data you can see on the pages as  
> RDF, and we’re looking for approaches on how to do this. Yves  
> Raimond’s playcount ontology [6] looks like a great start, but  
> please get in touch if you have any ideas on how to do it.
> Finally, we’re providing owl:sameAs relations to DBPedia to artists  
> profiles if they have an English Wikipedia link.
> We’d really appreciate feedback on what we’re doing, so please get  
> in touch if you have any ideas or requests!
> Patrick Sinclair and Nicholas Humfrey
> [1] http://www.bbc.co.uk/blogs/bbcinternet/2008/07/bbc_music_artist_pages_beta.html
> [2] http://www.bbc.co.uk/blogs/bbcinternet/2008/07/interesting_stuff_the_all_new.html
> [3] http://derivadow.com/2008/07/28/the-all-new-bbc-music-site-where-programmes-meet-music-and-the-semantic-web/
> [4] http://musicbrainz.org
> [5] http://httpd.apache.org/docs/2.0/mod/mod_headers.html
> [6] http://purl.org/ontology/playcount/
> http://www.bbc.co.uk
> This e-mail (and any attachments) is confidential and may contain  
> personal views which are not the views of the BBC unless  
> specifically stated.
> If you have received it in error, please delete it from your system.
> Do not use, copy or disclose the information in any way nor act in  
> reliance on it and notify the sender immediately.
> Please note that the BBC monitors e-mails sent or received.
> Further communication will signify your consent to this.
Received on Wednesday, 30 July 2008 17:32:45 UTC

This archive was generated by hypermail 2.4.0 : Thursday, 24 March 2022 20:29:40 UTC