\title{Gnomoradio metafile specification}
\author{Jim Garrison}

\begin{document}

\begin{abstract}

This document describes the specification for RDF files that describe songs, artists, and albums on Gnomoradio.  This specification is a superset of Creative Commons' specification for RDF metadata.  Knowledge of XML is helpful to those reading this document.

\end{abstract}

\section{Introduction}

Gnomoradio is a peer to peer music playing system that allows independent bands and musicians to promote themselves.  It is an opt-in service for musicians who wish to allow peer to peer file sharing.

\subsection{Why Creative Commons?}

Creative Commons has designed licenses that apply to almost anybody wishing to embrace file sharing.  These licenses all fall under the same umbrella, and they are supported and maintained in the same way.  In addition, Creative Commons has designed a specification for describing these licenses, as well as resources that use them through use of RDF/XML.

\subsection{Why a superset of the CC specification?}

In particular, we have only modified and expanded the section of RDF that applies to CC resources; we have not modified the RDF sections that describe the licenses themselves.  We found that this was necessary for several reasons; the current CC specification is incomplete and does not guarantee reliable file transfers.  There are a number of things that we did to fix this.

First of all, Gnomoradio separates the notion of a resource (a song/recording) from its representation (a file).  In this way, it understands when multiple files represent the same recording in different formats (mp3, ogg, even different bitrates).  This is crucial to an abstract user interface.  A user should not need to care about file formats.  It is the song that matters, and the program should take care of finding and obtaining the appropriate file to represent that song.

Secondly, Gnomoradio verifies each file that it downloads against a sha1 checksum, which is described in a the RDF metadata describing the file.  This is useful to combat viruses and hoax files on the network.

Finally, there are many other pieces of metadata that Gnomoradio supports that are not specifically mentioned in CC's RDF spec.  These include a location for the band's web site, a place to purchase an album online, cover art for albums, song lyrics, and other useful features.  

\subsection{Rainbow Builder}

Understanding of this document is in no way necessary for an artist to be distributed using Gnomoradio.  The easiest way to prepare an RDF document is to use the Rainbow Builder, a web application that will produce this metafile in a user-friendly way.

Hopefully, online music sites will find it beneficial to produce RDF files for the artists that they host in the near future.  This will further lessen the difficulty of creating RDF files for the artist.  In addition, Gnomoradio itself will drive further traffic to these sites and relieve them of bandwidth for distributing audio files.

\subsection{Publishing the metafile}

The metafile as described below, or as produced by Rainbow Builder or a similar system, must be published on the world wide web for Gnomoradio to recognize it.

One way to publish a file is to upload it in its entirety to a web server.  The specific mime type is not essential, but it should be some sort of text, such as text/plain.

A second way that Gnomoradio supports is the embedding of an RDF document within a comment block of an html file.  If this method is chosen, it is important to consider that only one RDF file should be embedded in a given HTML file for Gnomoradio to find it.  Thus, if an HTML document already contains a different type of RDF, it is best to put the Gnomoradio metadata in a separate file.

\subsection{RDF Essentials}

People who are unfamiliar with RDF may find it helpful to read an introduction, such as the RDF Primer.

If you are already familiar with XML, there are only a few things that you need to know to begin working with RDF.  Loosely speaking, RDF provides structure to describe "web resources" in general.  

a resource can describe and object - in person or real life

rdf:id, rdf:about, rdf:resource

\subsection{Summary of namespaces}

"rdf" is the namespace that describes rdf itself.  "dc" and "dcterms" are built on top of rdf to describe general features of an object.  The "cc" namespace further builds upon this work, describing details of licenses for the resources.

Gnomoradio's RDF adds two more namespaces onto this.  The first is rainbow ("rbow"), which is used to describe file resources in a reliable way for file transfers.  The second namespace is gnomoradio, which describes songs, artists, albums, and how they relate to files described by rainbow resources.

\subsection{How to read this document}

The best way to make it through this document is to look at one or more example metafiles while reading about each section.  One such example is given at http://www.tommymagik.com/discography/science.rdf.

\subsection{License}

\section{Describing Rainbow Resources - rbow:Resource}

Before publishing or describing a song through RDF, it is necessary to describe an actual file that represents that song.  Rainbow resources represent files of any type--audio, images, etc, that can be transferred via peer to peer.  They are most often licensed under a Creative Commons license, so that file sharing can take place legally.

\subsection{rbow:available}

\subsection{representationOf}

\subsection{cc:license}

\subsection{dc:format}

\subsection{rbow:checksum}

\section{Describing Songs}

\subsection{dc:title}

\subsection{dc:creator}

\subsection{dcterms:isPartOf}

\subsection{cc:license}

\subsection{audiofile}

\subsection{lyrics}

\section{Describing Artists}

\subsection{dc:title}

\subsection{website}

\subsection{img}

\section{Describing Albums}

\subsection{dc:title}

\subsection{dc:creator}

\subsection{dc:rights}

\subsection{dc:date}

\subsection{retail}

\subsection{img}

\subsection{tracks}

\section{Concluding Remarks}

It's a good idea to put the license in there too with rdf:about

\section{Appendix: Sample}

\end{document}
