XML 程式設計思想:使用 XSLT 生成 RDF(轉)

amyz發表於2007-08-12
XML 程式設計思想:使用 XSLT 生成 RDF(轉)[@more@]

  Uche Ogbuji 透過演示用來自現有 XML 格式的資料構成“資源描述框架 (RDF)”模型,開始了他的用 XML 進行的知識管理的實際探索。 如三個程式碼清單中所示,RDF 可用作定製 XML 的搭擋,而不僅僅用作某些資料型別的規範表示。包含程式碼樣本的本專欄演示瞭如何用 RDF 方便地進行知識管理,甚至是在開發過程中相對比較晚的階段。

  雖然 W3C 將“資源描述框架 (RDF)”設計為常規後設資料建模工具,但它還提供了許多功能,使之成為 XML 資料的理想搭擋。在許多正在形成的 XML 應用程式中,在應用程式的生存期中封裝在應用程式中的知識以 XML 文件形式儲存在資料庫或資源庫中。作為知識管理工具的 RDF 的基本用途是,它允許您組織、關連、分類和註釋這些知識,從而增加儲存資料的總計值。 RDF 具有複雜性,透過簡單地將 RDF 支援新增到基於 XML 的應用程式中來掩飾這種複雜。 本文開始探索 RDF 和 XML 之間的協作關係。以下將演示如何使用 XSLT 根據 XML 生成 RDF。

  必需熟悉 RDF 和 XSLT。也可以先閱讀以前 developerWorks 中的 介紹 RDF, 或者 參考資料中連結的其它文章。

  舊東西不一定總是過時的

  例如,讓我們來跟蹤技術規範的開放式開發過程。規範是公佈到網上且感興趣的團體可以閱讀它、新增與規範相關的問題、評論公開的問題以及指派相關問題的操作專案等等。

  XML 是一種功能強大的工具,它可將這種問題追蹤放在一起。雖然問題和操作專案的描述和相關討論都需要靈活的表示,但結構對於維護資料語義是很重要的。在示例中,應用程式已經開發好了,而且使用了用於如將操作專案提示者傳送給使用者、支援搜尋和瀏覽等任務的基本技術。然而,為了利用 RDF 處理中可使用的許多現有工具和技術,開發人員已經決定開始在應用程式中使用 RDF。

  在選擇使用 RDF 時,開發人員不想重新設計所有的應用程式資料和邏輯。他們寧願新增他們能夠(並且或許逐漸)將 RDF 處理移向應用程式核心的那些東西。所以,他們面臨的任務之一是,根據他們已經收集的 XML 資料生成有用的 RDF。

  XML 格式示例

  清單 1 是追蹤過程中單個問題的 XML 格式示例。它有唯一識別符號和表示問題與哪個文件或文件部分相關的引用元素。問題的原創者被加上註釋,這表示正在使用系統的使用者管理功能。任何人都可以對文件進行撰稿,但對已註冊的使用者會特別標註和處理。問題的主要描述和附加的使用者註釋會聯機顯示,並且還有指派給使用者的相關操作。

  播種資料,收穫後設資料

  從問題追蹤中所使用的 XML 檔案中抽取 RDF 後設資料的方法有幾種。最直接的方法或許是編寫一種 XSLT 轉換, 它讀取檔案並輸出後設資料的 RDF/XML 序列,這將在下一小節中演示。

  因為 RDF 位於 URI 上(出於更好或出於更壞),所以您必須為後設資料節點 提出一些 URI 方案。一些事物(如用於創作問題的規範的位置)已經有 URI。其它事物可能已經有專門的 XML 表示;在我們的示例中,使用者物件作為單獨的 XML 檔案管理。其它事物可能仍是完全抽象的,除了它們的後設資料節點外,沒有任何應用程式設計工具或機制。這最後一類的示例是我建議為資源建立的 RDF 型別。 要在 RDF 中使用的 URI 如下:

  • 在鑑定中的規範的地址。 示例: 。
  • 問題的 XML 原始碼的地址。 示例:
  • 註冊使用者的概要檔案的 XML 原始碼的地址。 示例:
  • 作者、問題、指派等的 RDF 型別。 示例:

  一個可能的 RDF 系列化

  上面已給出 清單 2, 它是表示 清單 1 中後設資料的一個可能的 RDF 模型系列化。

  請注意:在某些情況下,我使用匿名資源,如註釋和操作資源。這是一種建模選項。例如,要對用於任務排程的操作進行集中索引, 那麼將 URI 用於抽象操作而不是使它們保持匿名可能是有意義的。

  XSLT 轉換

  現在,您已經瞭解 RDF 的樣子,就可以構造一種轉換,將問題描述轉換成適當的 RDF 檔案。 清單 3就是使用 XSLT 的這種轉換。

  至於在此清單中看到的一些技術,我已經在先前的一篇 developerWorks 文章?? 用 XSLT 進行 WSDL 處理 中討論過,它包含將“Web 服務描述語言 (WSDL)” 轉換成 XML 這一章節。在這種情況下,目的是儘可能使產生的 RDF 系列化看上去更接近原始的WSDL XML。在這種情況中沒有這種約束,因此轉換很少是機密的。只是依次訪問各種 XML 元素,並一點一點地構建等價的 RDF 描述。

  最重要的高層次的操作是 issue 元素的匹配,它僅僅轉向並呼叫一個已命名模板來為相應的問題實際構建 RDF 描述。這種間接方式的原因是,可以為定製和擴充套件這種轉換提供靈活性。例如,當您閱讀下一個 XML 程式設計思想 專欄時,可以在執行從問題文件到 RDF 的批處理轉換的單獨的轉換中使用已命名模板。

  在示例中,除了聯機規範本身之外,問題跟蹤程式還可以跟蹤有關各種資源的問題。(您可以從問題跟蹤程式本身開始一個問題??也許是一個錯誤報告。)由於這個原因,設計還要使引用元素的處理變得相當靈活。 使用單獨的 XSLT 方式(確保僅在正確時刻解析引用元素),模板檢查 引用 元素的可展開內容。目前,示例應用程式透過用來自正被討論的問題中的引用簡單地建立 RDF 描述來處理引用是指規範這種情況。由於需要處理更多種型別的可擴充套件引用, 所以可以新增附加的 xsl:when 子句來處理這些情況。

  您還可以檢視用於處理使用概要檔案或只是自由格式的文字註冊使用者描述這一事實的基本方法。

  更多要遵循的

  在本專欄中,我已提供了使用 XSLT 從 XML 例項中抽取 RDF 的簡單示例。隨著越來越多的基於 XML 的應用程式的使用,這樣的技術在擴充套件帶有知識管理特性的應用程式中是有用的。

  下一個專題將繼續問題跟蹤程式示例,同時演示問題文件的批處理和對此處理有用的一些開放原始碼工具。

  本專題中的示例和下一專題中的示例都是基於一個實際的專案,該專案為 rdfinference.org 上的“RDF 介面語言”規範組成一個問題跟蹤程式。不久,您將可以在此公共站點上看到這一實際工作。在那之前,請您自由地試驗本文中的示例程式碼,並將任何問題、意見和想法傳送給我。


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

相關文章