audio-album-proposal
hAlbum 0.1
hAlbum is a simple, open, distributed format, suitable for embedding information about audio albums in (X)HTML, Atom, RSS, and arbitrary XML. hAlbum is one of several microformats open standards.
hAlbum Microformat Draft Specification
- Editor
- Manu Sporny, Bitmunk - Digital Bazaar, Inc.
- Contributors
- Manu Sporny, Bitmunk - Digital Bazaar, Inc.
- Martin McEvoy
- Alexandre Van De Sande Releases all his contribution as public domain(see user page)
- Michael Johnson
- Dave Longley
- Brian Suda
- Scott Reynen
- Andy Mabbett
- Rudy Desjardins
- Joe Andrieu
- Justin Maxwell
Microformats #Copyright and #Patents statements apply.
Introduction
It is difficult for a browser to extract semantic information about an audio album described on a web page. Metadata such as musician, publisher, label, title of the work, release date, acquisition link, related image artwork and tags provide relevant context for the audio album.
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 an album 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 4 albums 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 albums, the authors propose the hAlbum microformat, an open standard for distributed audio album metadata. The authors have researched both numerous audio-info-examples in the wild and earlier attempts at audio-info-formats, and have designed hAlbum around a simple minimal schema for audio content. Feedback is encouraged on the hAlbum 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 hAlbum has been based on this minimal common subset, heavily re-using properties discovered in the hAlbum Microformat.
Out of scope
Fields that are type-specific have been omitted from hAlbum. It is important that hAlbum 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 across different music and audio sites, though something very useful to have, is outside the scope of this format.
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.
- 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.
- For types with multiple components, use nested elements with class names equivalent to the names of the components.
- Plural components are made singular, and thus multiple nested elements are used to represent multiple text values that are comma-delimited.
- Use the most accurately precise semantic XHTML building block for each object etc.
- 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>
). - 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.
- 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
Format
In General
The hAlbum 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 re-used from hCard, hReview, hAtom, and hAlbum.
Schema
The hAlbum schema consists of the following:
- hAlbum (
halbum
)- album-title required. text.
- contributor. optional. using hCard. Re-used from hAudio.
- published. optional. using datetime-design-pattern. Re-used from hAtom
- rel-sample. optional. sample file/stream using rel-design-pattern with
sample
as themf-rel-value
. Re-used from hAudio. - rel-enclosure. optional. full download of file using rel-enclosure. Re-used from hAudio.
- rel-payment. optional. link to purchase process using rel-payment. Re-used from hAudio.
- photo. optional. using HTML and XHTML tag
img
. Re-used from hReview. - category. optional. text.
- duration. optional. ISO-8601 time duration using abbr-design-pattern (re-used from hcalendar).
- price. optional. using currency-proposal. Re-used from hAudio.
- track. optional. using hAudio.
Field details
The fields of the hAlbum schema represent the following:
hAlbum
An hAlbum is used to identify and describe metadata associated with a collection of audio albums.
- an hAlbum element is identified by class name
halbum
Album Title
The album title of an audio album is a short textual description used to identify the work among interested parties. This is usually the title of the album.
- The element is identified by the class name
album-title
. - hAlbum MUST have an album title.
Contributor
A Contributor is any entity that takes part in the creation and distribution of an audio album. Examples include: artist, publisher, guitarist, vocalist, violinist, lead singer, backup singer, bassist, drummer, manager, and roadie.
- The element is identified by the class name
contributor
. - hAlbum MAY include one or more contributors.
- The contents of the element must include a valid hCard Microformat.
- The
role
field should be used to specify the Contributor's responsibility related to the audio album. - If multiple Contributors are specified without
role
specifications, it may be assumed that the first role mentioned is the artist.
Published Date
The Published Date specifies the date that the audio album 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.
- The element is identified by the class name
published-date
. - hAlbum MAY include one or more
published-date
s. - The contents of the element must include a date format compliant with the datetime-design-pattern.
Sample
A Sample URL specifies from where an excerpt of the audio album may be retrieved.
- The element is identified by a URL fitting the rel-design-pattern, the rel content being
sample
. - hAlbum MAY include one or more URL
sample
s. - The URL SHOULD point to a directly accessible stream or file.
- The type of the sample MAY be specified by using the
type
specifier for a URL.
Full Download (Enclosure)
An Full Download URL specifies from where the full version of an audio album may be retrieved. The URL MUST point to a direct link to a file.
- The element is identified by a URL fitting the rel-design-pattern, the rel content being
enclosure
. - hAlbum MAY include one or more
enclosure
URLs. - The type of the file MAY be specified by using the
type
specifier for a URL.
Purchase (Payment)
An Purchase URL specifies from where the full version of an audio album may be purchased. The URL MUST point to a page that contains a purchase process.
- The element is identified by a URL fitting the rel-design-pattern, the rel content being
payment
. - hAlbum MAY include one or more
payment
URLs. - The type of the file MAY be specified by using the
type
specifier for a URL.
Photo
A Photo specifies an image that should be used to summarize the audio album. Examples include: an audio album cover image, or a picture from a concert.
- The element is identified by the class name
photo
. - hAlbum MAY include one or more
photo
images. - The element must be an <img> element.
Category
The Category specifies the genre or style used to classify the audio album. Examples include: blues, rock, motivational, spoken word, or sound effect.
- The element is identified by the class name
category
. - hAlbum MAY include one or more
category
elements.
Duration
The Duration specifies the length in time of the audio album in seconds. Examples include: 104 seconds, 3:23, and 4 minutes.
- The element is identified by the class name
duration
. - hAlbum MAY include one
duration
element. - The contents of the element SHOULD use the abbr-design-pattern whose title attribute contains an ISO-8601 formatted duration, specifically in seconds. This allows us to expand into specifying time slices and other time markup in the future, but keep parsing simple for now. An example of 3:23 (203 seconds) would be "P203S" in ISO 8601 format. Currently, all abbr attributes specifying duration SHOULD be in seconds.
Price
The Price specifies the amount of currency that must be exchanged for acquisition of a full specimen of the audio album. Examples include: One Dollar, $2, and £4.
- The element is identified by the class name
price
. - hAlbum MAY include one or more
price
elements. - The contents of the element SHOULD use the currency-proposal.
Track
The Track specifies details for a specific track that can be found on the album. hAudio should be used to describe the track.
- The element is identified by the class name
track
. - hAlbum MAY include one or more
track
elements. - The contents of the element SHOULD use the hAudio Microformat.
More Semantic Equivalents
For some properties there is a more semantic equivalent, and therefore they get special treatment, e.g.:
- For any "url", use
<a class="url" href="...">...</a>
inside the element with the class name 'halbum' in hAlbum. - And for "image-summary", use
<img class="image-summary" src="..." alt="Photo of ..." />
Language
- To explicitly convey the natural language that an hAlbum is written in, use the standard (X)HTML 'lang' attribute on the element with class="halbum", e.g.
<div class="halbum" lang="en"> ... </div>
If portions of an hAlbum (e.g. the item name) are in a different language, use the 'lang' attribute on those portions. - hAlbum processors which need to handle the language of reviews MUST process the standard (X)HTML 'lang' attribute as specified.
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.
Similarly, if an <img />
element is used for one or more properties, it MUST be treated as follows:
- For the "image-summary" property and any other property that takes a URL as its value, the
src="..."
attribute provides the property value. - For other properties, the
<img />
element's 'alt
' attribute is the value of the property.
Notes
This section is informative.
- By marking up audio content with the hAlbum microformat, the expectation is communicated that information about the content MAY be indexed. This has no impact on the copyright of the content itself which the publisher may explicitly specify using rel-license as specified above.
- The enumerated list of item types is under development and may be extended.
- Each type may have custom hAlbum fields that follow the common set.
- Additional details about a particular item should be specified with the rest of the item's info at the URL provided for the item.
XMDP Profile
<dl class="profile"> <dt>class</dt> <dd><p> <a rel="help" href="http://www.w3.org/TR/html401/struct/global.html#adef-class"> HTML4 definition of the 'class' attribute.</a> This meta data profile defines some 'class' attribute values (class names) and their meanings as suggested by a <a href="http://www.w3.org/TR/WD-htmllink-970328#profile"> draft of "Hypertext Links in HTML"</a>. <dl> <dt>halbum</dt> <dd> Used to identify and describe metadata associated with an individual audio album. </dd> <dt>album-title</dt> <dd> A short textual description used to identify an audio album among interested parties. </dd> <dt>collaborator</dt> <dd> An entity that takes part in the creation and distribution of an audio album. </dd> <dt>published</dt> <dd> The date that the audio album was made available to the public. </dd> <dt>photo</dt> <dd> An image that should be used to summarize the audio album. </dd> <dt>category</dt> <dd> The genre or style used to classify the audio album. </dd> <dt>duration</dt> <dd> The length of the audio album. </dd> <dt>price</dt> <dd> The amount of currency that must be exchanged for acquisition of a full specimen of the audio album. </dd> </dd> </dl>
Examples
Here are a few examples of audio content from current web sites, and how they could be easily enhanced to support the hAlbum metadata microformat.
Want to write valid hAlbum? Use the hAlbum creator (not implemented yet) to write about audio content and publish it on your blog.
Simple Album Example
Display:
Underdog World Strike by Gogol Bordello
Microformatted XHTML:
<div class="halbum"> <span class="album-title">Underdog World Strike</span> by <div class="collaborator"> <div class="vcard"> <span class="org fn">Gogol Bordello</span> </div> </div> </div>
More Complex Album Example
Display:
Start Wearing Purple found on Underdog World Strike by Gogol Bordello
Microformatted XHTML:
<div class="halbum"> <span class="track"> <span class="haudio> <span class="audio-title">Start Wearing Purple</span> </span> </span> found on <span class="album-title">Underdog World Strike</span> by <div class="collaborator"> <div class="vcard"> <span class="org fn">Gogol Bordello</span> </div> </div> </div>
Complete Example
An example that uses every element of halbum:
[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 hAlbum Microformat markup:
<div class="halbum"> <img class="photo" src="images/live_phish_vol_15.jpg"/> <span class="album-title">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="20023110">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: <span class="category">live</span> Duration: <abbr class="duration" title="P8727S">145 minutes, 27 seconds</abbr> Price: <span class="money"> <abbr class="currency" title="USD">$</abbr> <span class="amount">14.99</span> </span> Tracks: <span class="track">1. <span class="haudio> <span class="audio-title">Sanity</span> (<abbr class="duration" title="P348S">5:48</abbr>) </span> </span> </span> <span class="track">2. <span class="haudio> <span class="audio-title">Highway To Hell</span> (<abbr class="duration" title="P219S">3:39</abbr>) </span> </span> </span> </div>
Various Artists Album Example
An example of an album with Various Artists (torture test):
[IMAGE] Artist: Various Artists Album: Imagine Records Year: 1994 Price: $1.99
Tracks
- [IMAGE] New Hope Eagle Dance by Bernhardt $0.99
- [IMAGE] Happy Days by Davidson $0.99
- [IMAGE] Secrets of Mine by Roberts $0.99
Here is the hAlbum Microformat markup:
<div class="halbum"> <img class="photo" src="images/imagine_records.jpg"/> <span class="album-title">Imagine Records</span> <span class="contributor"> <span class="vcard"> <span class="fn org">Various Artists</span> </span> </span> <br/> Year: <abbr class="published" title="19940101">1994<abbr> <br/> Price: <span class="money"> <abbr class="currency" title="USD">$</abbr> <span class="amount">1.99</span> </span> <br/> Tracks: <span class="track">1. <span class="haudio> <img class="photo" src="images/new_hope_eagle_dance.jpg"/> <span class="audio-title">New Hope Eagle Dance</span> <span class="contributor"> <span class="vcard"> <span class="fn">Bernhardt</span> </span> </span> <span class="money"> <abbr class="currency" title="USD">$</abbr> <span class="amount">0.99</span> </span> </span> </span> <span class="track">2. <span class="haudio> <img class="photo" src="images/happy_days.jpg"/> <span class="audio-title">Happy Days</span> <span class="contributor"> <span class="vcard"> <span class="fn">Davidson</span> </span> </span> <span class="money"> <abbr class="currency" title="USD">$</abbr> <span class="amount">0.99</span> </span> </span> </span> <span class="track">3. <span class="haudio> <img class="photo" src="images/secrets_of_mine.jpg"/> <span class="audio-title">Secrets of Mine</span> <span class="contributor"> <span class="vcard"> <span class="fn">Roberts</span> </span> </span> <span class="money"> <abbr class="currency" title="USD">$</abbr> <span class="amount">0.99</span> </span> </span> </span> </div>
Examples in the wild
This section is informative.
Implementations
This section is informative.
References
Normative References
Informative References
- CSS1
- ISO.8601.1988
- International Organization for Standardization, "Data elements and interchange formats - Information interchange - Representation of dates and times", ISO Standard 8601, June 1988.
- W3C NOTE-datetime-19980827
- W3C Patent Policy
- Other audio metadata efforts. See audio-info-formats.
Similar Work
Copyright
This document and specification was placed into the public domain on August 5th, 2007.
Patents
The authors of this Microformat have not and will not apply for patents covering any invention covering this Microformat in part or as a whole. There are no claims to any patent in this document. Each author is required to report any known patent issues immediately under this section.
This document and specification is distributed under a royalty free patent policy, e.g. per the W3C Patent Policy (http://www.w3.org/Consortium/Patent-Policy-20040205/), and IETF RFC3667 (http://www.ietf.org/rfc/rfc3667.txt) & RFC3668 (http://www.ietf.org/rfc/rfc3668.txt).
Work in progress
This specification is a work in progress. As additional aspects are discussed, understood, and written, they will be added.
Further Reading
Mailing List Discussion
- Renewed interest in audio-info Microformat
- Proposed solution to split media-info into audio, video and images
- Failed proposal to re-use hReview/hAtom
- Requirement to define collections for audio-info
- First attempt at hAudio proposal
- First attempt at hAudio proposal (continued)
- hAtom is not a silver bullet
- Second attempt at hAudio
- hAudio 'acquire' re-naming
- An argument against 'fn' in hAudio
- hAudio Test
- hAudio - audio-album and audio-podcast
- hAudio: relevant UIDs
- Sound optimization for hAudio
- XOXO + Playlist problem
- Reusing class names in multiple formats
- audio-title proposal for hAudio
Specification Development Statistics
- Number of examples reviewed: 185
- Total examples analyzed: 105
- Days of development from concept to first draft: 129
- Estimated hours of work by primary investigator on hAlbum: 420
- Estimated combined work hours by mailing list: 270
- Total estimated hours of work to produce halbum draft: 690
- Estimated cost to develop based on $65,000/year salary: $25,600