hAudio 0.9.1

Revision as of 13:05, 7 March 2012 by Tantek (Talk | contribs)
(diff) ←Older revision | Current revision (diff) | Newer revision→ (diff)

Jump to: navigation, search

This document represents a draft microformat specification. Although drafts are somewhat mature in the development process, the stability of this document cannot be guaranteed, and implementers should be prepared to keep abreast of future developments and changes. Watch this wiki page, or follow discussions on the #microformats Freenode IRC channel to stay up-to-date.

Contents

604867362_da0921136a_o.png

hAudio is a simple, open, distributed format, suitable for embedding information about audio recordings in (X)HTML, Atom, RSS, and arbitrary XML. hAudio is one of several microformats open standards. This page and Microformat is in the public domain.

hAudio Microformat Draft Specification

Editors

Authors

Contributors

Manu Sporny, Martin McEvoy , Alexandre Van De Sande , Michael Johnson, Dave Longley, Brian Suda, Ben Wiley Sittler, Scott Reynen, Frances Berriman, James Craig, David Janes, Andy Mabbett, Danny Ayers, Rudy Desjardins, Edward O'Connor, Ryan King, Chris Griego, Brad Hafichuk, Tantek Çelik, Colin Barrett, Joe Andrieu, Michael Smethurst, Chris Newell, Julian Stahnke, Justin Maxwell, Paul Wilkins and David I. Lehn.

Microformats #Copyright and #Patents statements apply.

Introduction

It is difficult for a browser to extract semantic information about an audio recording described on a web page. Metadata such as speaker, musician, publisher, label, title of the work, release date, acquisition link, related image artwork and tags provide relevant context for the audio recording.

Having such information marked up can provide a number of benefits to the viewer. If a web browser understands that a particular web page contains a song performed by an artist, it can produce richer interactions. For example, specific searches may be performed for artists and songs via general search services such as Google and Wikipedia. Specific search services may also be queried such as MusicBrainz, The Internet Archive, FreeDB, or Bitmunk. Additionally, classification by crawlers can become more accurate. If there are 20 tracks found on a page done by the same artist, and that content consumes a significant portion of the page, it can be assumed that the page is not only about music, but also about a particular artist.

In order to enable and encourage the sharing, distribution, syndication, and aggregation of audio content, the authors propose the hAudio microformat, an open standard for distributed audio metadata. The authors have researched both numerous audio-info-examples in the wild and earlier attempts at audio-info-formats, and have designed hAudio around a simple minimal schema for audio content. Feedback is encouraged on the hAudio feedback page.

Inspiration and Acknowledgments

Many thanks to the various individuals that did research and proposed ideas and discussion related to media info and audio info in general. Among the many participants are RodBegbie, Dean Hudson, Tantek Çelik, Mary Hodder, Joshua Kinberg, ChrisMessina, and Lisa Rein.

Scope

Audio content consistently share several common fields. Where possible hAudio has been based on this minimal common subset.

Out of scope

Fields that are type-specific have been omitted from hAudio. It is important that hAudio be kept simple and minimal from the start. Additional features can be added as deemed necessary by practical implementation experience.

The concept of a universal audio identifier, that is, how to identify the same audio album, song, speech, or podcast across different music and audio sites, though something very useful to have, is outside the scope of this format.

Format

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.

In General

The hAudio format is based on a set of fields common to numerous audio content sites and formats in use today on the web. Where possible field names have been chosen based on those defined by the related hCard standards.

Schema

The hAudio schema consists of the following:

Field details

The fields of the hAudio schema represent the following:

hAudio

An hAudio is used to identify and describe metadata associated with an audio recording.

fn

The name of a single audio recording is a short textual description used to identify the work among interested parties. This can be the name of a speech, song name, or short description regarding a sound effect.

Album

The title of a collection of audio recordings, such as those that are represented as a CD, album or LP. The text should be a short textual description used to identify the work among interested parties.

Item

A container for another hAudio item, which MUST be considered a part of the parent audio recording. An example of an item that is part of an hAudio would be a track in an audio album, a aria in an Opera, or a section of a podcast.

Position

The position is used to describe the position of the hAudio item in a list. Examples of hAudio lists can include album track listings, music top 10 lists, playlists, and podcast chapters.

Contributor

A Contributor is any entity that takes part in the creation and distribution of an audio recording. Examples include: artist, composer, publisher, guitarist, vocalist, violinist, lead singer, backup singer, bassist, drummer, manager, and roadie.

Published

The published date specifies the date that the audio recording was made available to the public. Examples include: The airing date of a radio broadcast, the day a speech was given, or the day a music album was made available for sale.

Sample

A Sample URI specifies from where an excerpt of the audio recording may be retrieved.

Full Download (Enclosure)

A Full Download URI specifies from where the full version of an audio recording may be retrieved. The URI MUST point to a direct link to a file retrieval process (FTP, HTTP, BitTorrent URI, etc).

Purchase (Payment)

A Purchase URI specifies from where the full version of an audio recording may be purchased. The URI MUST point to the beginning of a purchase process for the hAudio.

Photo

A photo specifies an image that should be used to summarize the audio recording. Examples include: the image of a speaker, an audio album cover image, or a picture from a concert.

Category

The Category specifies the genre or style used to classify the audio recording. Examples include: blues, rock, motivational, spoken word, or sound effect.

Duration

The Duration specifies the length in time of the audio recording. Examples include: 104 seconds, 3:23, and 4 minutes.

Example:

<span class="duration">
<span class="h">1</span>:
 <span class="min">3</span>:
 <span class="s">23</span>
</span>

Price

The Price specifies the amount of currency that must be exchanged for acquisition of a full specimen of the audio recording.

Example:

<span class="price">
	<abbr class="currency" title="GBP">£</abbr> 
	<span class="amount">4.99</span>
</span>

Description

An explanation of the contents of the hAudio item. This could explain the significance of a speech, the full-text description of a sound effect, or the meaning of a song or album.

Parser Processing Notes

Semantic XHTML Design Principles

Note: the Semantic XHTML Design Principles were written primarily within the context of developing hCard and hCalendar, thus it may be easier to understand these principles in the context of the hCard design methodology (i.e. read that first). Tantek

XHTML is built on XML, and thus XHTML based formats can be used not only for convenient display presentation, but also for general purpose data exchange. In many ways, XHTML based formats exemplify the best of both HTML and XML worlds. However, when building XHTML based formats, it helps to have a guiding set of principles.

  1. Reuse the schema (names, objects, properties, values, types, hierarchies, constraints) as much as possible from pre-existing, established, well-supported standards by reference. Avoid restating constraints expressed in the source standard. Informative mentions are ok.
    1. For types with multiple components, use nested elements with class names equivalent to the names of the components.
    2. Plural components are made singular, and thus multiple nested elements are used to represent multiple text values that are comma-delimited.
  2. Use the most accurately precise semantic XHTML building block for each object etc.
  3. Otherwise use a generic structural element (e.g. <span> or <div>), or the appropriate contextual element (e.g. an <li> inside a <ul> or <ol>).
  4. Use class names based on names from the original schema, unless the semantic XHTML building block precisely represents that part of the original schema. If names in the source schema are case-insensitive, then use an all lowercase equivalent. Components names implicit in prose (rather than explicit in the defined schema) should also use lowercase equivalents for ease of use. Spaces in component names become dash '-' characters.
  5. Finally, if the format of the data according to the original schema is too long and/or not human-friendly, use <abbr> instead of a generic structural element, and place the literal data into the 'title' attribute (where abbr expansions go), and the more brief and human readable equivalent into the element itself. Further informative explanation of this use of <abbr>: Human vs. ISO8601 dates problem solved

More Semantic Equivalents

For some properties there is a more semantic equivalent, and therefore they get special treatment, e.g.:

Language

Human vs. Machine Readable

If an <abbr> element is used for a property, then its 'title' attribute is used for the value of the property, instead of the contents of the element, which can then be used to provide a user-friendly alternate presentation of the value.

If an <a> element is used for one or more properties, it MUST be treated as follows:

  1. For the 'photo' property and any other property that takes a URL as its value, the href="..." attribute provides the property value.
  2. For other properties, the element's content is the value of the property.

If an <img> element is used for one or more properties, it MUST be treated as follows:

  1. For the 'photo' property and any other property that takes a URL as its value, the src="..." attribute provides the property value.
  2. For other properties, the <img> element's 'alt' attribute is the value of the property.

If an <object> element is used for one or more properties, it MUST be treated as follows:

  1. For the 'photo' property and any other property that takes a URL as its value, the data="..." attribute provides the property value.
  2. For other properties, the element's content is the value of the property.

Notes

This section is informative.

XMDP Profile

See: haudio-profile.

Examples

This section is informative.

Here are a few examples of text about, and links to, audio content, from real web sites, showing how they could be easily enhanced to use hAudio.


Simple Song Example

Display:

(This is a live example, detectable in parsers)

Start Wearing Purple by Gogol Bordello

Microformatted XHTML:

<div class="haudio">
   <span class="fn">Start Wearing Purple</span> by 
   <span class="contributor">Gogol Bordello</span>
</div>

Speech Example

(This is a live example, detectable in parsers)

Display:

I Have a Dream, a speech by Martin Luther King, Jr.

Microformatted XHTML:

	 
<div class="haudio">	 
   <span class="fn">I Have a Dream</span>, a 	 
   <span class="category">speech</span> by 	 
   <span class="contributor">
      <span class="vcard">
         <span class="fn n">
            <span class="given-name">Martin</span>
            <span class="additional-name">Luther</span>
            <span class="family-name">King</span>,
            <span class="honorific-suffix">Jr.</span>
         </span>
      </span>
   </span>
</div>	 

Note the use of hCard.

Song and Album Example

(This is a live example, detectable in parsers)

Display:

Start Wearing Purple by Gogol Bordello found on Underdog World Strike

Microformatted XHTML:

<div class="haudio">
   <span class="fn">Start Wearing Purple</span> by 
   <span class="contributor">
        <span class="vcard">
            <span class="fn org">Gogol Bordello</span>
        </span>
    </span>
   found on
   <span class="album">Underdog World Strike</span>
</div>

Note that for bands, hCard's Implied "organization-name" Optimization is used.

Complete Album Example

An example that uses every element of hAudio:

[Image] Live Phish, Volume 15 by Phish
Released: October 31, 2002
Acquire: Sample, Live Recording, Buy High Quality Track
Category: live
Duration: 145 minutes, 27 seconds
Price: $14.99

Tracks:
1. Sanity (5:48)
2. Highway To Hell (3:39)

Here is the hAudio Microformat markup:

<div class="haudio">
   <img class="photo" src="images/live_phish_vol_15.jpg" alt="" />
   <span class="album">Live Phish, Volume 15</span>
   <span class="contributor">
      <span class="vcard">
         <span class="fn org">Phish</span>
      </span>
   </span>
   <br/>
   Released on:
   <abbr class="published" title="2002-10-31">October 31, 2002</abbr>
   <br/>
   Acquire: 
   <a rel="sample" href="/samples/live_phish_vol_15_sample.mp3">Sample</a>, 
   <a rel="enclosure" href="/live/phish_live_phish_vol_15.mp3">Live Recording</a>,
   <a rel="payment" href="/buy/phish_live_phish_vol_15">Buy High Quality Track</a>
   Category: <a class="category" rel="tag" href="http://www.example.org/tags/live">live</a>
   Duration: <abbr class="duration" title="PT145M27S">145 minutes, 27 seconds</abbr>
   Price: <div class="price"><abbr class="currency" title="USD">$</abbr><span class="amount">14.99</span></div>
   Tracks:
   <div class="item">
      <span class="position">1</span>.
      <span class="fn">Sanity</span>
      (<abbr class="duration" title="PT5M48S">5:48</abbr>)
    </div>
    <div class="item">
     <span class="position">2</span>.
     <span class="fn">Highway To Hell</span> 
     (<abbr class="duration" title="PT3M39S">3:39</abbr>)
  </div>
</div>

Multi-part Podcast Example

DigitalPlanet Podcast: 29 Oct 07

Forensic computing: is it really possible to delete data from your machine? Grand plans for getting broadband into Africa, checking out the sky at night via the internet and answering your emails to the programme.

Download MP3

<div class="haudio">
<p>
   <span class="fn">DigitalPlanet Podcast</span>
   :
   <abbr class="published" title="20071029">29 Oct 07</abbr>
</p>
<p>
   <div class="item">
      <span class="fn">Forensic computing: is it really possible to delete data from your machine?</span>
   </div>
   <div class="item">
      <span class="fn">Grand plans for getting broadband into Africa</span>
   </div>
   , 
   <div class="item">
      <span class="fn">checking out the sky at night via the internet</span>
   </div> 
   and 
   <div class="item">
      <span class="fn">answering your emails</span>
   </div>
   to the programme.
</p>
<p>
   <a rel="enclosure" href="/download/episode/DigitalPlanet-2007-10-29">Download MP3</a>
</p>
</div>

Opera Example

(This is a live example, detectable in parsers)

La Bohème is an opera in four acts by Giacomo Puccini to an Italian liberetto by Luigi Illica and Giuseppe Giacosais. I saw it performed last week and found Act III to be pretty interesting, especially the "Sa dirmi, scusi" and "O buon Marcello, aiuto!" arias.


<div class="haudio" lang="en">
   <span class="fn" lang="fr">La Bohème</span> 
   is an 
   <span class="category">opera</span> 
   in four acts by 
   <span class="contributor" lang="it">Giacomo Puccini</span>
   to an 
   <span class="category">Italian liberetto</span>
   by
   <span class="contributor" lang="it">Luigi Illica</span>
   and
   <span class="contributor" lang="it">Giuseppe Giacosais</span>.
   I saw it performed last week and found
   <span class="item">
      <span class="fn">Act III</span>
       to be pretty interesting, especially the
      <span class="item">
         "<span class="fn" lang="it">Sa dirmi, scusi</span>"
      </span>
      and
      <span class="item">
         "<span class="fn" lang="it">O buon Marcello, aiuto!</span>"
      </span>
      arias.
   </span>
</div>

Examples in the wild

This section is informative.

Implementations

This section is informative.

References

Normative References

Informative References

Similar Work

Copyright

This document and hAudio specification was placed into the public domain on 2008-11-14 by the authors. There are no usage, distribution, re-printing, or any other restrictions of any kind with regards to the text or content of this specification.

Patents

This specification is subject to a royalty free patent policy, e.g. per the W3C Patent Policy, and IETF RFC3667 & RFC3668.

Public Domain Release

The authors and editors of this page due hereby relinquish their copyright on the document and release the text of this page into the public domain.

Work in progress

This specification is a work in progress. As additional aspects are discussed, understood, and written, they will be added.

Related Pages

Categories

hAudio 0.9.1 was last modified: Wednesday, December 31st, 1969

Views