XML 程式設計思想:用 MusicBrainz 管理後設資料(轉)
自從二十世紀 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. 音樂後設資料示例的快照
因為順序是不相關的,所以專輯列表是一個包。為了保留曲目的順序,所以曲目列表是一個序列。這有點多餘,因為每條曲目都已經有了帶有其曲目編號的特性。
查詢 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 及曲目資訊的樣本查詢
實際上,這是由 RDF 物件組成的查詢,特性則作為查詢引數。這是用 RDF 表示查詢的常用方法,儘管當查詢變得更復雜時,它會顯得比較笨拙。幸運的是,大多數 MusicBrainz 查詢都相當簡單。 清單 3是對 清單 2中查詢的樣本響應。
清單 3. CDMP 查詢的樣本響應
這個響應完全就是 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- XML 程式設計思想: 學習物件後設資料(轉)XML程式設計物件
- XML 程式設計思想:XML語義(轉)XML程式設計
- XML 程式設計思想:XML和語義(轉)XML程式設計
- XML 程式設計思想: 研讀XML Hacks(轉)XML程式設計
- XML 程式設計思想: XML 語義錨(轉)XML程式設計
- XML 程式設計思想: Harold 的高效 XML 設計原則(轉)XML程式設計
- XML 程式設計思想:XML 建模藝術描述(轉)XML程式設計
- XML 程式設計思想: 專利編檔遭遇 XML(轉)XML程式設計
- XML 程式設計思想:知識管理的基本 XML 和 RDF 技術(7)(轉)XML程式設計
- XML 程式設計思想:查詢 XML 格式的 WordNet(轉)XML程式設計
- XML 程式設計思想: XMLOpen 會議,再評 XML Hacks(轉)XML程式設計
- XML 程式設計思想:使用 XSLT 生成 RDF(轉)XML程式設計
- XML 程式設計思想:從書本學習 XML Topic Maps(轉)XML程式設計
- XML 程式設計思想:Thinking XML: 通用商業語言(UBL)(轉)XML程式設計Thinking
- XML 程式設計思想:XML和語義:XML 會兌現其承諾嗎?(轉)XML程式設計
- XML 程式設計思想:知識管理的基本 XML 和 RDF 技術:語義知識(轉)XML程式設計
- XML 程式設計思想:知識管理的基本 XML 和 RDF 技術:問題跟蹤程式模式(轉)XML程式設計模式
- XML 程式設計思想:踏著語義的節拍(轉)XML程式設計
- XML 程式設計思想:重新審視 XML 中的語義透明性(轉)XML程式設計
- XML 程式設計思想: UBL 1.0(以及 ebXML Core Components 等)(轉)XML程式設計
- XML 程式設計思想:定義 RDF 和 DAML+OIL 圖示(轉)XML程式設計
- 程式設計思想 面向切面程式設計程式設計
- XML程式設計例項(二) (轉)XML程式設計
- XML與ASP程式設計(一) (轉)XML程式設計
- React程式設計思想React程式設計
- XML 程式設計思想: 使用 Atom 格式連鎖新聞及其他內容(轉)XML程式設計
- XML 程式設計思想:利用模式標準化實現自上而下的語義透明(轉)XML程式設計模式
- 【程式設計素質】程式設計思想總結程式設計
- 淺談程式設計思想程式設計
- 極限程式設計思想程式設計
- 用Python實現資料庫程式設計 (轉)Python資料庫程式設計
- 程式設計思想之冪等性 | 程式設計之道程式設計
- Linux+Informix後臺資料庫系統程式設計設定(轉)LinuxORM資料庫程式設計
- C++程式設計思想筆記之四 (轉)C++程式設計筆記
- C++程式設計思想筆記之一 (轉)C++程式設計筆記
- C++程式設計思想筆記之三 (轉)C++程式設計筆記
- C++程式設計思想筆記之六 (轉)C++程式設計筆記
- C++程式設計思想筆記之二 (轉)C++程式設計筆記