XML 程式設計思想:用 MusicBrainz 管理後設資料(轉)

amyz發表於2007-08-12
XML 程式設計思想:用 MusicBrainz 管理後設資料(轉)[@more@]

  自從二十世紀 80 年代中期出現數字音樂以來,已經有許多關於它的爭論,甚至連對數字音樂後設資料的管理也逃脫不了這種紛爭。但有時好的技術解決方案還是會從帶有政治色彩的紛爭中脫穎而出。在本文中,Uche Ogbuji 將介紹 MusicBrainz,這是一個用於管理數字媒體後設資料的專案。MusicBrainz 在其核心資料格式中使用 RDF,這樣做的結果是使它比原先的此類專案具有一些重要的技術優勢。

  數字音樂仍然是資訊時代的重要內容之一,它之所以重要是因為它給音樂愛好者帶來方便,同時也給高科技公司提供了商機。您可以在數字儲存器中儲存成百上千的專輯,並且按您喜歡的方式給這些音樂編目。由於這一時代有如此多的音樂是以 CD 形式銷售的,所以存在著不計其數的工具用於收集藝術家和曲目資訊,以產生數字格式(mp3 和 Ogg Vorbis 等)維護或 標記這些資訊。這些資訊是數字音樂常見的後設資料。

  在 90 年代早期,Internet Compact Disc Database(CDDB)作為將 CD 特徵與後設資料匹配起來的分散式資料庫而誕生了。它在許多非正式使用者的努力下發展很快,這些使用者無償提供有關他們 CD 的資訊,他們以為 CDDB 的系統和軟體是開放和免費的。但在一次頗有爭議的舉動中,一個現在名為 Gracenote 的商業性團體強行給 CDDB 加上了發放許可證的限制,從而促使了幾個真正開放的替代專案的開發。在這些倡議中,freedb.org 和 MusicBrainz 最引人注目。前者仍然將 CDDB 格式用於它的資料庫,而 MusicBrainz 則另起爐灶,徹底地重新構造了其數字音樂後設資料格式和系統。在這項重構工作中,他們選擇了 RDF 在此專案中發揮重要作用。

  MusicBrainz 旨在成為數字音訊和影片的 後設資料庫(metadatabase),而不只是 CD 曲目資訊。它被稱為“開放音樂百科全書”。開放性由一個明確的 OpenContent 許可證來確保,所有 MusicBrainz 資訊都被授予了此許可證。MusicBrainz 是分散的,它將多個 Web 位置上的資訊彙集在一起。可以很容易地獲得這個作為開放原始碼的伺服器軟體。目前大約有一百萬條曲目的資訊。資料基於 RDF 格式,這使得此服務具有一些獨一無二的優勢。首先,每條曲目(以及所有其它重要概念)都有以 URI 格式表示的唯一識別符號。憑藉 URI,可以形成 通用播放列表(universal playlist)。可以用壓縮形式釋出該播放列表,而且該播放列表可以唯一地標識一個特定的歌曲序列。CDDB 沒有這樣的全域性識別符號。MusicBrainz 還定義了用於查詢這一百科全書的 RDF 詞彙表。

  命名曲目

  MusicBrainz Metadata Initiative 2.0 規範中定義了 MusicBrainz 的 RDF 子系統,該規範定義了用於此百科全書條目和查詢的 RDF。MusicBrainz 為它提供的不同(但卻相關)RDF 詞彙表定義了幾種基本的 URI(稱為名稱空間)。

  • :MusicBrainz 後設資料(MusicBrainz Metadata)名稱空間,通常與字首 mm 關聯。
  • :CD 查尋(Compact Disc Lookup)名稱空間,通常與字首 cdmp 關聯。
  • :MusicBrainz 查詢(MusicBrainz Query)名稱空間,通常與字首 mq 關聯。
  • :MusicBrainz 擴充套件後設資料(MusicBrainz Extended Metadata)名稱空間,通常與字首 mem 關聯。

  讓我們著重討論 mm 和 cdmp 名稱空間,因為這兩個已經很完善了。目前正在對 mem 進行擴充套件和改進,所以它還未投入使用。 mq 有可能成為專案中接下來的工作重心,但目前還沒有完全就緒。

  MusicBrainz 後設資料名稱空間涉及核心音樂後設資料,它使用了以下類:

  • Artist :包括常用名的特性和用於排序的名稱(例如,“The Roots”可以按“Roots, The”來排序),以及藝術家專輯的 RDF 包。
  • Album :包括用於專輯標題的 dc:title 特性,以及與藝術家的關係以及和帶曲目清單的 RDF 序列之間的關係。
  • Track :包括曲目標題、創作者以及曲目在專輯中的編號等特性。

  MusicBrainz 在任何可行的位置都使用 Dublin Core 後設資料元素。正如我在 前一篇文章中討論的那樣,這使 MusicBrainz 後設資料在某種程度上甚至能被通用 RDF 代理程式訪問。

  還賦予曲目一個特性以使其與它們的 TRM 聲紋(TRM Acoustic Fingerprint)聯絡起來。TRM 是 Relatable, LLC 開發的技術,作為用於數字媒體的唯一條形碼。每個 TRM ID 都是一個全球唯一識別符號(UUID)。例如,The Roots 的“Mellow My Man”的 TRM 是 f13069e3-da60-4782-82dd-a9f375e5c374 。可以選擇將該資訊用於數字產品版權管理(digital rights management,DRM),儘管 MusicBrainz 在 DRM 問題上是中立的。

  清單 1是一個 MusicBrainz 後設資料記錄的示例。

  清單 1. 音樂後設資料示例的快照

     Portishead  Portishead         

  •     
  •    
  •       Dummy           
  •     
  • <!--Rest of the tracks snipped for brevity...--&gt   
  •   
     
       Roseland NYC Live           
  •     
  • <!--Rest of the tracks snipped for brevity...--&gt   
  •   
     

      因為順序是不相關的,所以專輯列表是一個包。為了保留曲目的順序,所以曲目列表是一個序列。這有點多餘,因為每條曲目都已經有了帶有其曲目編號的特性。

      查詢 CD 資訊

      MusicBrainz 還定義了用於 CD 後設資料的查詢服務:CD 後設資料建議書(Compact Disc Metadata Proposal,CDMP)。這個協議非常簡單。可以將 RDF 查詢文件使用 HTTP POST 放到 MusicBrainz 伺服器,然後獲得與 清單 1類似的以 MusicBrainz 後設資料格式表示的響應,但是帶有 CDMP 封裝器元素。也可以使用帶一些特殊查詢引數的 HTTP GET。CDMP 最常見的情形是:使用者將 CD 放入到計算機中,CD 播放器應用程式啟動。它隨即讀取 CD 以確定每條曲目的偏移量,在許多情況下可以用這些偏移量來唯一地標識 CD。它將這些偏移量傳送到 MusicBrainz 伺服器以便獲取與偏移量資料匹配的 CD 及其曲目資訊。 清單 2是這類查詢的示例。

      清單 2. CD 及曲目資訊的樣本查詢

       150-17895-34567-51432-68025-87365-106380-123452-140620-157792-175650     

      實際上,這是由 RDF 物件組成的查詢,特性則作為查詢引數。這是用 RDF 表示查詢的常用方法,儘管當查詢變得更復雜時,它會顯得比較笨拙。幸運的是,大多數 MusicBrainz 查詢都相當簡單。 清單 3是對 清單 2中查詢的樣本響應。

      清單 3. CDMP 查詢的樣本響應

            Rubycon   ivDFb2Tw6HzN.XdYZFj5zr1Q9EY-              Tangerine Dream                    

  •               Rubycon (Part I)        1      <track>     
  •      
  •               Rubycon (Part II)        2      <track>    
  •               

      這個響應完全就是 CDMP 封裝器類中的 MusicBrainz Metadata 名稱空間格式。超過 CDDB 的一個優勢是,可以從這樣的查詢返回多個 CD 結果,以便處理不同 CD 的曲目偏移量詳細資訊之間可能的衝突。

      也可以透過標題、藝術家或其它資料的精確或部分匹配來生成搜尋 CD 的 CDMP 查詢。另外 CDMP 使用者可以提交新的 CD 資訊。通常,如果 CD 播放器進行查詢,但未找到匹配的 CD 資訊,那麼軟體的確會允許您手工輸入曲目資料。您隨後可以將這些資料提交給 MusicBrainz。MusicBrainz 在適當的位置有一個緩衝系統,它使提交過程中的濫用情況和無心的錯誤情況降到最低。這很重要,可以由最近的例子證明:CDDB 資料曾被使用汙穢語言的惡作劇所破壞。大多數壞資料並沒有那麼過份,通常是拼寫錯誤、曲目位置顛倒之類的錯誤。MusicBrainz 允許使用者在最初提交之後在緩衝系統的控制下編輯資料項。

      CDMP 最初被設計用於與其它一些開放式 CD 查詢系統協同工作,但這樣的協作沒有達到預期效果,所以可能會用 s mp 名稱空間查詢取代 CDMP,前者更關注於一般 MusicBrainz 百科全書概念。

      結束語

      MusicBrainz 在幾個層次都很重要。首先,它展示了致力於開放技術的各個社群的能力。它們常常能有效地避免由不擇手段的商業利益團體所造成的損害。MusicBrainz 誕生於 CDDB 轉向限制性許可證之時,而開發人員們則利用這個機會重新設計了 CD 資訊系統,使其更靈活、有更多特性並且支援更廣泛的資訊型別。廣大使用者已經無償提供了大量的資料來支援這項工作,並且這個資料庫是一個了不起的公共財產。

      RDF 在 MusicBrainz 中的使用意味著它可以方便地整合到其它後設資料倡議。RDF 格式還有幾個不方便的地方。首先,它沿襲了 RDF 1.0 容器的所有不便,而且這些不便還結合了這樣一個事實:除了需要正確同步的其它關係之外,有時還要使用容器關係。例如: mm:trackList 所指定序列中的次序對於等價的 mm:trackNum 特性是多餘的。儘管有這些小的技術缺陷,但資料最終還是非常清楚並且許多工具可以方便地使用它。例如,XML 的基本特徵是其優秀的國際化能力,MusicBrainz 正是從 XML 借用了這一能力,這與原來 CDDB 中國際化的曖昧狀態形成鮮明對比。即使不熟悉 RDF 的人也可以利用這一點,因為 MusicBrainz 使用開放原始碼客戶機庫。如果您要開發任何處理數字媒體的應用程式,請考慮將 MusicBrainz 格式和協議用於後設資料。


    來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-950180/,如需轉載,請註明出處,否則將追究法律責任。

    相關文章