MusicBrainz and RDF Core

What is it?

MusicBrainz* is a Web service* to distribute metadata about music files. Comes from the era of CDDB* which began claiming all sorts of regulations on the use of its metadata. MB works on not just CDs, but any music track (like single MP3s), uses a hash* system from Relatable* to identify each track and grab metadata on it.

Users contribute metadata gained from their own usage (I got this MP3 from Napster, the Title/Author is missing) and contribute it back to the server for everyone else to use.

Who are the users?

Really three sets of users:

Web Developer

Uses RDBMS*-backed website with MySQL* and Perl*; needs to get his Web site to be a "Web Service" -- to send out data (Rob Kaye* is the head developer, pictured right)

Application Developer

Builds a GUI* tool in C; needs to build a client to grab and read the stuff (FreeAmp* implements this today)

Music Fan

Built into their player/browser; probably doesn't know its there; wants it to be fast and painless (You? Go get FreeAmp today!)

What are they using RDF for?

HTTP*-based RDF Interfaces on Server

URIs for Artists, Tracks, Albums, etc. you can HTTP GET* for an RDF description (All data is available under the Open Content License*, data dumps from MySQL are available for download)

A submission system you can HTTP POST* an RDF description to for inclusion in the database (Submissions are moderated using an online volunteer moderation system, along with a number of Perl scripts watching for common errors)

C Interface on the Client

Uses Jason Diamond*'s repat* parser to parse the RDF

Provides an API* to hide the complications of RDF from the programmer

User Story

So a user pops a brand-new CD into the drive with FreeAmp open. FreeAmp calls up to MusicBrainz to see if it's in the database already. Usually it is (MusicBrains had 285,582 tracks at last count) but if it's not then a window pops up asking the user to enter the information. They key in the information and FreeAmp sends it back to the server for others to use in the future.

How you can help?

Make RDF More Approachable

RDF was confusing. Lack of good RDF Validators* and other tools. Little to no documentation on many subjects.

Guidelines on creating RDF Vocabularies*

Extended Dublin Core, mostly on our own. Little support and suggestions.

More Concise Format for Transport

RDF/XML* is really verbose. One goal is to transmit song lyrics, file sizes are huge. Looking into gzip transport-encoding* but a more concise format would be nice.
