XML的思索: MusicBrainzを使用したメタデータ管理

ディジタル・メディアのメタデータベースにおけるRDFの使用

1980年代半ばに登場して以来、ディジタル音楽については多くの論争が繰り広げられ、ディジタル音楽のメタデータの管理までがそのドラマの一画を成してきました。しかし、政治的な騒動から優れた技術的なソリューションが出現することがあります。この記事では、Uche Ogbuji氏は、ディジタル・メディアのメタデータを管理するためのプロジェクトであるMusicBrainzを紹介します。MusicBrainzでは中心となるデータ・フォーマットとしてRDFを使用し、これにより以前に使用されていたシステムをしのぐ技術上の重要な利点を提供しています。

Uche Ogbuji, Principal Consultant, Fourthought, Inc.

Photo of Uche OgbujiUche Ogbuji は、次世代の Web 技術を専門とするサービスの会社である、Uli, LLC の代表者です。Ogbuji 氏は XML、RDF、およびナレッジ管理アプリケーション用のオープン・ソース・プラットフォームである 4Suite の開発リーダーであり、Versa RDF 照会言語の開発リーダーでもあります。ナイジェリア出身のコンピューター・エンジニア兼ライターで、米国コロラド州ボールダー在住です。彼に関して詳しくは、彼のブログである Copia を見てください。



2002年 12月 01日

ディジタル音楽は、情報化時代において1つの大きな物語を展開しつづけており、音楽愛好家に対して提供される利便性とハイテク企業に対して開かれたビジネス・チャンスの両方の意味で重要です。何十、何百というアルバムをディジタル・ストレージに保存し、その音楽について好きなようにカタログ作成することができます。今日では、非常に多くの音楽がCDとして販売されており、アーチストや各トラックについての情報を収集するためのツールが無数に存在し、これらは、さまざまなディジタル・フォーマット (mp3、Ogg Vorbiなど) で保存、あるいはタグが付加されます。この情報は、ディジタル音楽の共通メタデータです。

90年代の初めに、CDの特性をメタデータとマッチングさせる分散データベースとしてInternet Compact Disc Database (CDDB) が誕生しました。このデータベースは多くの一般ユーザーの努力によって急速に発達しました。一般ユーザーがCDについての情報を提供して貢献したため、CDDBのシステムおよびソフトウェアは当然オープンかつフリーであると認識されていました。非常に大きな論争の中で、現在はGracenoteとして知られる営利企業がCDDBに対して使用許諾契約の制限を課したため、それに代わる真にオープンな複数のデータベースの開発が促されました。freedb.orgおよびMusicBrainzはこうした動きを主導した最も大きな団体です。前者はそのデータベースとしてCDDBのフォーマットを引き続き使用しましたが、これに対してMusicBrainzはゼロから始め、CDDBのディジタル音楽メタデータのフォーマットおよびシステムを完全に刷新しました。MusicBrainzはこの取り組みの中で、重要な役割を果たすものとしてRDFを選択しました。

MusicBrainzは、単なるCDのトラック情報以上のものをカバーする、ディジタル・オーディオおよびディジタル・ビデオのメタデータベースの作成を目標としています。これは「オープンな音楽百科事典」として評判になっています。オープン性は、すべてのMusicBrainz情報について明示的に付与されているOpenContentライセンスによって保証されます。情報は、Web上の複数の場所に分散され、相互に結合されます。すべてのサーバー・ソフトウェアは、オープン・ソースとして簡単に入手できます。現在、約100万トラックについての情報があります。このデータのRDFの基礎により、サービスにユニークな利点が付加されます。まず、各トラックおよびその他の重要な概念は、URIの形式で参照可能な固有IDを持ちます。URIを使って、ユニバーサル・プレイ・リストを作成することが可能です。このプレイ・リストは、圧縮形式で公開可能で、曲の特定の順序を一意に識別することができます。CDDBにはこのようなグローバルなIDはありません。MusicBrainzでは、百科事典に対してクエリーを行うためのRDFボキャブラリーも定義されています。

曲名の入力

MusicBrainzのRDFサブシステムは、MusicBrainz Metadata Initiative 2.0仕様の中で定義されています。この仕様は、百科事典のエントリーおよびクエリーのためのRDFを定義するものです。MusicBrainzでは、提供しているさまざまな (ただし関連する) RDFボキャブラリーについて複数の基礎URI (ネーム・スペースと呼んでいます) を定義しています。

  • http://musicbrainz.org/mm/mm-2.0#: MusicBrainzメタデータ・ネーム・スペース。通常は、接頭部mm が付加されます。
  • http://musicbrainz.org/mm/cdmp-1.0#: コンパクト・ディスク検索ネーム・スペース。通常は、接頭部cdmp が付加されます。
  • http://musicbrainz.org/mm/mq-1.0#: MusicBrainzクエリー・ネーム・スペース。通常は、接頭部mq が付加されます。
  • http://musicbrainz.org/mm/mem-1.0#: MusicBrainz拡張メタデータ・ネーム・スペース。通常は、接頭部mem が付加されます。

最も完成度の高いmm およびcdmp ネーム・スペースについて説明しましょう。mem は、まだ使用されていない拡張および改良のために構成されたものです。mq は、プロジェクトにおいておそらくすぐに活動の中心となりますが、完全には準備が整っていません。

MusicBrainzメタデータ・ネーム・スペースは、以下のクラスを使用して、中心となる音楽のメタデータをカバーします。

  • Artist: 一般名およびソートに使用される名前 (たとえば、「The Roots」は「Roots, The」としてソートすることができます) と、アーチストのアルバムのRDF bagが含まれます。
  • Album: アルバム名のdc:title プロパティーと、アーチスト、およびトラック・リストを含むRDFシーケンスとの関係が含まれます。
  • Track: トラックのタイトル、作者、およびアルバム内のトラック番号のプロパティーが含まれます。

MusicBrainzでは、有効な場合は必ずDublin Coreメタデータ・エレメントを使用します。前回の記事で説明したように、これによりMusicBrainzメタデータから汎用RDFエージェントにさえもアクセスしやすくなります。

各トラックには、それぞれをTRM Acoustic Fingerprint に接続するためのプロパティーも与えられます。TRMとは、ディジタル・メディアの固有のバーコードとしてRelatable, LLCによって開発されたテクノロジーです。各TRM IDは、世界的に固有のID (UUID) です。例えば、The Rootsの「Mellow My Man」のTRMはf13069e3-da60-4782-82dd-a9f375e5c374 です。この情報は、ディジタル著作権管理 (DRM) において使用可能ですが、MusicBrainzはDRM問題については中立の立場をとっています。

リスト1 は、MusicBrainzメタデータ・レコードの例です。

リスト1. 音楽メタデータのサンプルのスナップショット
<rdf:RDF xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc  = "http://purl.org/dc/elements/1.1/"
         xmlns:mm  = "http://musicbrainz.org/mm/mm-2.0#">
  <mm:Artist rdf:about=
"http://musicbrainz.org/artist/8f6bd1e4-fbe1-4f50-aa9b-94c450ec0f11">
    <dc:title>Portishead</dc:title>
    <mm:sortName>Portishead</mm:sortName>
    <mm:albumList>
      <rdf:Bag>
        <rdf:li rdf:resource=
"http://musicbrainz.org/album/911e3f30-192e-4c3d-aa25-2a89d4202a3e"/>
        <rdf:li rdf:resource=
"http://musicbrainz.org/album/3677c7a6-03a6-4709-a7aa-edaea95ce473"/>
      </rdf:Bag>
    </mm:albumList>
  </mm:Artist>
  <mm:Album rdf:about=
"http://musicbrainz.org/album/911e3f30-192e-4c3d-aa25-2a89d4202a3e">
    <dc:title>Dummy</dc:title>
    <dc:creator rdf:resource=
"http://musicbrainz.org/artist/8f6bd1e4-fbe1-4f50-aa9b-94c450ec0f11"/>
    <mm:trackList>
      <rdf:Seq>
        <rdf:li rdf:resource=
"http://musicbrainz.org/track/8facb8ab-0b31-4d06-907f-0a9c9a72383c"/>
        <rdf:li rdf:resource=
"http://musicbrainz.org/track/44d90dca-5290-4cb3-af38-518818835f23"/>
<!--
Rest of the tracks snipped for brevity...
-->
      </rdf:Seq>
    </mm:trackList>
  </mm:Album>
  <mm:Album rdf:about=
"http://musicbrainz.org/album/3677c7a6-03a6-4709-a7aa-edaea95ce473">
    <dc:title>Roseland NYC Live</dc:title>
    <dc:creator rdf:resource=
"http://musicbrainz.org/artist/8f6bd1e4-fbe1-4f50-aa9b-94c450ec0f11"/>
    <mm:trackList>
      <rdf:Seq>
        <rdf:li rdf:resource=
"http://musicbrainz.org/track/1cf34447-7731-40a4-a2ba-347866a13c44"/>
        <rdf:li rdf:resource=
"http://musicbrainz.org/track/f71a27a7-4845-463c-9c67-ffb96a6b5a8f"/>
<!--
Rest of the tracks snipped for brevity...
-->
      </rdf:Seq>
    </mm:trackList>
  </mm:Album>
</rdf:RDF>

このアルバム・リストは順序が関連性を持たないため、bagです。トラック・リストは、トラックの順序を保存するためのシーケンスです。各トラックにはそのトラック番号を含むプロパティーが既にあるため、これは少し冗長です。


CD情報のクエリー

MusicBrainzでは、CDメタデータに対するクエリー・サービスも定義されています。すなわち、Compact Disc Metadata Proposal (CDMP) です。プロトコルはいたってシンプルです。RDFクエリー・ドキュメントをMusicBrainzサーバーにHTTP POSTし、リスト1 のようなMusicBrainzのメタデータ形式で、CDMPラッパー・エレメントを使って応答を受け取ります。特殊なクエリー・パラメーターを使ってHTTP GETを使用することもできます。CDMPの最も一般的なシナリオは、ユーザーがコンピューターにCDを挿入し、CDプレイヤー・アプリケーションが起動した場合です。このアプリケーションがCDを読み取り、多くの場合CDを固有に識別するために使用される各トラックのオフセットを判別します。これらのオフセットがMusicBrainzサーバーに送信され、オフセット・データと一致するCDのCD情報およびトラック情報が入手されます。リスト2 は、そのようなクエリーの例です。

リスト2. CDおよびトラック情報のサンプル・クエリー
<rdf:RDF xmlns:rdf  = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:dc   = "http://purl.org/dc/elements/1.1/"
     xmlns:cdmp = "http://musicbrainz.org/mm/cdmp-1.0#"
     xmlns:mm   = "http://musicbrainz.org/mm/mm-2.0#">
 <cdmp:LookupCD>
  <cdmp:offsets>150-17895-34567-51432-68025-87365-106380-123452-140620-157792-175650
  </cdmp:offsets>
 </cdmp:LookupCD>
</rdf:RDF>

実際には、これはクエリー・パラメーターとしてプロパティーを持つRDFオブジェクトで構成されるクエリーです。これは、RDFにおいてクエリーを表すための一般的な方法ですが、クエリーが複雑になると不便になります。幸い、MusicBrainzのほとんどのクエリーは非常にシンプルです。リスト3 は、リスト2 のクエリーに対するサンプル応答です。

リスト3. CDMP検索からのサンプル応答
<rdf:RDF xmlns:rdf  = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc   = "http://purl.org/dc/elements/1.1/"
         xmlns:cdmp = "http://musicbrainz.org/mm/cdmp-1.0#"
         xmlns:mm   = "http://musicbrainz.org/mm/mm-2.0#">
<cdmp:ResultCD>
  <cdmp:cd>
    <cdmp:CDMetadata>
      <dc:title>Rubycon</dc:title>
      <cdmp:cdmpId>ivDFb2Tw6HzN.XdYZFj5zr1Q9EY-</cdmp:cdmpId>
      <mm:Artist>
         <rdf:Description>
            <dc:title>Tangerine Dream</dc:title>
         </rdf:Description>
      </mm:Artist>
      <mm:trackList>
        <rdf:Seq>
          <rdf:li>
            <mm:Track>
               <dc:title>Rubycon (Part I)</dc:title>
               <mm:trackNum>1</mm:trackNum>
            </mm:Track>
          </rdf:li>
          <rdf:li>
            <mm:Track>
               <dc:title>Rubycon (Part II)</dc:title>
               <mm:trackNum>2</mm:trackNum>
            </mm:Track>
         </rdf:li>
        </rdf:Seq>
      </mm:trackList>
    </cdmp:CDMetadata>
  </cdmp:cd>
</cdmp:ResultCD>
</rdf:RDF>

応答は、まさにCDMPラッパー・クラス内のMusicBrainzメタデータ・ネーム・スペースのフォーマットです。CDDBの1つの利点は、このようなクエリーから複数のCD結果が返され、異なるCDのトラックのオフセット詳細の間に発生する可能性がある衝突を処理する点です。

タイトル、アーチスト、またはその他のデータについて、完全なまたは部分的な一致によりCDを検索するためのCDMPクエリーを作成することも可能です。また、CDMPユーザーは新しいCD情報をサブミットすることができます。通常、CDプレイヤーが検索を行って一致するCD情報が見つからなかった場合、ユーザーは手動でトラック・データを入力することができます。そして、このデータをサブミットし、MusicBrainzに貢献することができます。MusicBrainzには、不正利用とサブミットにおける不慮のエラーを最小限に抑えるためのモデレーション・システムがあります。汚い言葉を使った興味本位の入力によりCDDBデータが損なわれた最近の事例を見てもわかるように、これは重要です。多くの不良データは、それほどひどいものではなく、タイプミス、トラックの順序の入れ替わりといったものの結果である場合がほとんどです。MusicBrainzでは、モデレーションの制約内において、最初のサブミット後にユーザーがエントリーを編集することが可能です。

CDMPは、当初他のCD検索システムとの連携のために設計されましたが、そのような共同開発は期待されるほど健全には行われていないため、一般的なMusicBrainz百科事典の概念をより重視したmp ネーム・スペース・クエリーに置き換えられる可能性があります。


結論

MusicBrainzは、いくつかのレベルにおいて重要です。1つには、オープン・テクノロジーに力を注ぐコミュニティーのパワーを体現しています。こうしたコミュニティーにより、心ない商売上の利害関係が原因で生じる損害を、多くの場合効率よく回避することが可能です。MusicBrainzは、CDDBが制限的な使用許諾契約へと移行したときに誕生し、開発者は、CD情報システムをより柔軟性に富み、より多くの機能を持ち、より広範な種類の情報をサポートするものに設計しなおす機会を得ました。ユーザーは、この取り組みをサポートするために大量のデータを提供して貢献しました。データベースは偉大なる公共の資産です。

MusicBrainzにおけるRDFの使用は、その他のメタデータに関する取り組みとすぐに統合可能であることを意味します。RDF形式にはいくつかの問題点があります。1つには、RDF 1.0のコンテナーに関するすべての問題点を継承しており、この問題点は、コンテナーの関係が、適切に同期される必要がある他の関係に追加して使用されることがあるという事実によるものです。1つ例を挙げると、mm:trackList によって指定されるシーケンス内の順序は、これと同意義のmm:trackNum プロパティーに対して冗長です。こうした技術上の小さな欠陥はあるものの、結果としてのデータは非常にクリーンで、多くのツールでそのまま使用可能です。たとえば、オリジナルのCDDBにおける国際化対応の不透明な状況とは対照的に、MusicBrainzでは、基本的なXMLの機能から適切な国際化対応機能を取り入れています。そしてRDFに精通していない人でも、MusicBrainzで使用可能なオープン・ソースのクライアント・ライブラリーにより、これを活用することができます。ディジタル・メディアを扱うアプリケーションを開発する場合は、メタデータ用にMusicBrainzのフォーマットおよびプロトコルを使用することを検討してください。

参考文献

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=XML
ArticleID=241767
ArticleTitle=XML的思索: MusicBrainzを使用したメタデータ管理
publish-date=12012002