I was recently talking to another alternative music geek at a party — trying to explain the incestuous relationship between many of the bands I liked — and started sketching out something that resembled a lo-fi version of this:

Diagram showing relationships between many musical artists

After a few relationships had been drawn, I started thinking about how this could be represented with RDF (yes, I am a lot of fun at parties). I don’t want to re-invent the wheel, so does anyone know if anything already exists that could model these relationships? I’m aware of the Musicbrainz metadata scheme, which borrows from Dublin Core, but the scope doesn’t go so far as to map relationships (from what I’ve seen).

If nothing does exist, what kind of classes and properties should we have? I’ll start making a draft list below - if you can think of any others (or corrections to mine), let me know below.

  • I was thinking about sub-classing the MusicBrainz Artist class with Band/Group and Musician (which would include vocalists, etc.) classes
  • Maybe the MusicBrainz Album and Track could be sub-classes of something like a Recording class? That might make it easier to say that someone can ‘feature on’ or ‘produce’ (etc.) any type of ‘recording’ (whether it is an entire album or a track)
  • So we probably need properties for is member of, produced (which would apply to a recording, not a band, as in my diagram above), features in/on (there’s probably a much better semantic term for this), has covered (again, unlike my diagram above, this should go from a band to a track, not a band - the original band/author can be found from a second relation)
  • I guess we’d want to be able to say that someone was is member of for a particular date range too, so that we can represent musicians moving from one band to another.
  • There are plenty of vocabularies to describe family relationships (e.g. http://vocab.org/relationship/), so we don’t need to add anything for this

What else?