Contents

[edit] Examples

[edit] Details

An internal detail that might help your understanding. What I do is to assign a "group id" to everything in each <metadata> element. This allows me finer control internally; I can see that a date and license are associated with a particular release of some content as opposed to having it all lumped together.

[edit] Basics

  • Metadata is enclosed by a <musicml> element as before; the name of this element will change when the project is named.
  • Most elements have catalog, identifier, and additional attributes. These are abbreviated c/i/a and behave the same as before.
  • Not all elements makes sense for all types of metadata.
  • Every metadata chunk that goes into the Lulu database must have one MusicML identifier, that is, an identifier in some MusicML catalog. No metadata chunk may map that identifier to any other MusicML identifier.

[edit] Common attributes

Most elements have auto-translated, auto-generated, the, sort, description, and type attributes. These are abbreviated d/t/a/a/t/s.

description  
says what the value is, like a person, band, city, etc. These values come out of a TBD controlled vocabulary.
type  
says what type of the description it is, like a birth name, official name, alias, etc. These values come out of a TBD controlled vocabulary.
auto-generated  
means that the content was automatically generated and probably needs human review
auto-translated 
means that the content was automatically translated from another language.
the  
means that a "the" should prefix the value in a sentence.
sort  
is a string used to sort the value in lists

[edit] Metadata chunks

Metadata comes in "chunks". Each chunk is enclosed in a <metadata> element. This only exists for future expansion as <metadata> is the only element that can be inside of a <musicml> element. The metadata element has one attribute, language, which is the national language used for all enclosed elements. It defaults to en-us.

xml:lang attributes are ignored for the most part. Their appearance means that an element value is deliberately in the specified language and should not be translated.

Every chunk of metadata has a publisher and one or more ids.

Each piece of licensable information should be in a separately published metadata chunk. This allows all of the metadata for a particular set of ids to be kept together while keeping the license information separate.

[edit] Publisher element

A publisher is defined using the <publisher> element. A publisher is sort of what used to be an author.

<publisher created="timestamp" c/i/a d/t/a/a/t/s> xhtml </publisher>

The created timestamp is the date and time in UTC. The xhtml value is limited to name elements. For example:

<publisher created="2007-02-23 01:20:07" catalog="MusicML/People"  identifier="Jonathan_Eliot_Steinhart" description="person" type="birth name">
   <name catalog="MusicML/People" identifier="Jonathan" description="person" type="first name">Jonathan</name>

   <name catalog="MusicML/People" identifier="Eliot" description="person" type="middle name">Eliot</name>

   <name catalog="MusicML/People" identifier="Steinhart" description="person" type="last name">Steinhart</name>
</publisher>
Description Type
corporation alias
organization alias
web site fan

[edit] Publishers and ids

A chunk of metadata is published by some entity (the publisher) about some thing (the id) at an instant in time (created).

There are a bunch of rules about publishers and ids:

  • A publisher can publish metadata about one or more ids in a chunk.
  • A publisher can update metadata for any ids for which it has published metadata by having a newer created timestamp. Publishing older data has no effect.
  • When a publisher updates metadata, the effect is as if all prior metadata for those ids by that publisher is deleted, and then the new metadata is entered. This means that if a publisher publishes A, B, and C about some ids, and then updates it only publishing information about A and C, the information B will vanish.
  • When a publisher publishes metadata about more than one id in the same chunk, these ids are treated as equivalent.
  • Publishing metadata that conjoins unrelated ids is considered unsporting. For example, publishing a chunk of metadata that links ids for two different songs. Nothing in the metadata format can prevent this, but publishers who try this may find their submissions rejected, at least from our system.

[edit] Id element

An identifier is provided using the <id> element. There is a TBD set of standard catalogs for data that is published as part of this project. There are also TBD standard constructions for identifiers in these catalogs.

The description and type attributes on an <id> element indicate the sort of object being described by the chunk of metadata. Of course, there are TBD vocabularies for these.

All equivalent ids must have the same description/type. The exception is that if one of the ids has a description/type, the others can be omitted and will inherit from the complete one.

<id c/i/a d/t/a/a/t/s> string </id>

Identifies the object. The description and type indicate the type of the object. The element value can contain a short description of the object, and is intended to be used to distinguish among different ids for the same object. For example, values may be "British release" and "American release".

Description Type
audio track, album, concert
place planet, continent, country, state, county, city, venue
video movie, episode, scene, mashup
event N/A
person N/A
band N/A
catalog N/A
instrument N/A
date performed, recorded, released

[edit] Name element

<name variation="string" c/i/a d/t/a/a/t/s> xhtml </name>

Only name elements are allowed in the xhtml, and only for breaking out first/middle/last, etc. components of a name.

This is the name of the the thing being described; a song, a person, etc. Description/type is stuff like:

Description Type
place alias
album alias
song alias
band alias
person birth name, common name, stage name, alias
image backstage pass, concert ticket, laminate, photo pass, press pass,
staff parking pass, the loop radio pass, wplj radio pass
audio album, concert
performance group

[edit] Creator element

<creator c/i/a d/t/a/a/t/s> string </creator>

This is the entity responsible for creation of what's described in the metadata chunk.

Description Type
band alias
person birth name, stage name, alias
performance group alias

[edit] Place element

<place c/i/a d/t/a/a/t/s> string </place>

This is the place from which the item originated. It has a good identifier scheme, so it is only necessary to specify the bottom level such a the venue; the software can fill in the rest.

Description Type
planet alias
continent alias
country alias
state alias
county alias
city alias
venue alias

[edit] Event element

<event c/i/a d/t/a/a/t/s> string </event>

The name of the event from which the item originated.

Description Type
event alias

[edit] Gain-adjust element

<gain-adjust> floating-point </gain-adjust>

Track replay-gain for audio tracks, album replay-gain for audio albums/concerts.

[edit] Play-time element

<play-time> floating-point </play-time>

Length in seconds of the audio/video. Should only exist for simple items (tracks), not composite items such as albums, and movies as it can be calculated from the referenced items.

[edit] Contributor & contribution elements

<contributor>
      <name c/i/a d/t/a/a/t/s> xhtml </name>
      <contribution style="string" c/i/a d/t/a/a/t/s> string </contribution>
</contributor>

Contributor to the thing being described. The name element is as above. Either the name or contribution may be omitted but not both. There may be more than one contribution.

The contribution style is a way of playing rather than the instrument itself. For example, a slide is a style of playing a guitar, rather than an instrument itself.

A contributor / contribution element can be found directly inside of a note element as well.

<note>
    Band members include
    <contributor>
        <name> Joe </name>
        on
        <contribution> guitar </contribution>
    </contributor>
</note>

Another way this can be done is like this:

<note>
    There was a song inspired by
    <name> Joe </name>
    which was a
    <contribution> guitar </contribution>
    intrumental
</note>

In the first example, Joe and guitar would be linked, where as in the second example, they would not.

Here is the controlled vocabulary for the <contribution> element.

Description Type
performer instrument, stage antics, voice

[edit] Note element

<note start="floating-point" end="floating-point" auto-translated="boolean" auto-generated="boolean" description="string" type="string">
      xhtml
</note>

Provides information about an object or a time slice of an object. Just like segments of yore, but segments and notes are now unified. A segment with no times refers to the whole ball of wax just like before, making it no different than a note.

Description Type
transition audio, conceptual, visual
defect N/A
patch N/A
key N/A
middle-c N/A
sample N/A
tempo N/A
time-signature N/A
transcription N/A
review N/A
genre N/A
instruments N/A
roles N/A
similar artists N/A
related artists N/A
influences N/A
followers N/A

[edit] License element

<license c/i/a d/t/a/a/t/s> string </license>

Describes a license. The value can be a short description of the license.

[edit] Fingerprint element

<fingerprint c/i/a />

Describes a fingerprint.

[edit] Lineage element

<lineage medium="string" description="string" auto-generated="boolean" auto-translated="boolean" the="boolean"> xhtml </lineage>

Defines a lineage.

Description Type
studio N/A
soundboard N/A
audience N/A


Medium
LP
CD
Cassette
DAT
DCC
DVD
MD
SACD
Single
EP

Medium is omitted for digital bits that were never officially released on any medium.

The xhtml describes the lossy chain, and is omitted for most studio stuff as it's unavailable.

[edit] Date element

<date description="string" type="string"> string </date>

Just like the old date with two changes; type becomes description, and the show attribute is now the type.

Description Type
performed N/A
released N/A
recorded N/A

[edit] Includes element

<includes part="string" group="string" sequence="integer" c/i/a> string </includes>

Lists other objects included in this one, like songs in an album. The c/i/a is where to find the included object, the value is the name of the object. The value is important as the referenced object may not exist.

The part is stuff like Set 1, Set 2, Encore, Side A, etc.

The sequence is the ordering of the includes elements. Sequence numbers are unique to a named group. For example, an album may have a group that is named "tracks" which has the songs in order. It may also have another group which is "booklet" which has the pages in the booklet included with the album in order.

[edit] Images

To add an image (such as album art, an image of a ticket stub, etc.), two things must be done.

First, there must be a reference to the image using an includes element. In the case of album art, the album's XML would look like this:

<metadata>
    <publisher ...
    <id description="album" ...
    <includes group="images" catalog="MusicML/Images" identifier="Artist/Album/Album_Cover" ...
</metadata>

Then there would need to be a corresponding XML file located at Artist/Album/Album_Cover.xml. This file would look something like this:

<metadata>
    <publisher ...
    <id description="image" catalog="MusicML/Images" identifier="Artist/Album/Album_Cover" ...
    <id description="image" catalog="www.some-website.com" identifier="this_album_cover.jpg" ...
    <license ...
    <note ...
</metadata>

At this point, catalog translation would be used to take www.some-website.com and this_album_cover.jpg and turn them into an actual URL.

Here is an example:

<musicml xmlns="http://www.purl.org/net/musiclml/elements/1.1"  xmlns:h="http://www.w3.org/1999/xhtml">
      <metadata>
              <publisher created="2007-05-05 17:33:11" description="web site" type="fan" catalog="MusicML/WebSites" identifier="www.psilo.com"> www.psilo.com </publisher>
              <id description="image" type="Concert Ticket" catalog="MusicML/Artwork" identifier="The_Grateful_Dead/1972-10-26/Concert_Ticket_0" sort="The Grateful Dead 1972-10-26 Concert Ticket"/>
              <name catalog="MusicML/Artwork" identifier="__UNKNOWN__/www.psilo.com/144" description="artwork" type="concert ticket" sort="The Grateful Dead 1972-10-26Concert Ticket">
                      The Grateful Dead October 26, 1972 Concert Ticket
              </name>
              <date> 1972-10-26 </date>
              <note description="uri" type="http://www.psilo.com/dead/images/tickets/t721026.jpg"> Image from <a href="http://www.psilo.com">www.psilo.com</a>.</note>
      </metadata>
      <metadata>
              <publisher created="2007-05-05 17:33:11" description="web site" type="fan" catalog="MusicML/WebSites" identifier="www.psilo.com"> www.psilo.com </publisher>
              <id catalog="MusicML/Audio/Collections" description="audio" type="concert" identifier="The_Grateful_Dead/1972-10-26/etree-32717"/>
              <includes group="artwork" catalog="MusicML/Artwork" identifier="The_Grateful_Dead/1972-10-26/Concert_Ticket_0">The Grateful Dead October 26, 1972 Concert Ticket</includes>
      </metadata>
</musicml>

This page is hidden to everyone except administrators.