DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> XML 編程思想:從書本學習 XML Topic Maps
XML 編程思想:從書本學習 XML Topic Maps
編輯:XML詳解     

 Topic Map 提供了一種用於組織信息的系統,XML Topic Maps 使這種系統進入了 XML 的世界中。在本文中,Uche Ogbuji 討論了 XML Topic Maps,並通過評論有關該主題的關鍵著作,把這種技術介紹給大家。

  Semantic Web 技術用於概念的形式化描述與分類。這些技術試圖降低由於概念不匹配而給信息系統互聯帶來的難度。您可以想像得出,在這樣一個主觀而雄心勃勃的事業當中,可能適應它的方法和技術很多。 Topic Maps(主題地圖)便是其中的一組技術。

  這個專欄直到現在都還沒有提到 Topic Maps 技術,這是我的失職。主要的問題在於,我還沒有完全理解這些技術。最近,我收到一本書,名為 XML Topic Maps: Creating and Using Topic Maps for the Web,是 Jack Park 和 Sam Hunting 編著的,書中有些章節是由 Topic Maps 世界中的專家們編寫的。對我而言,這本書是個很好的機會,我可以通過它提高我對 Topic Maps 的理解,同時,我也打算把對這本書的評論與相關技術的介紹結合起來。

  很好的起點

  Jack Park 用精簡的三段論形式為這本書撰寫了緒論,不過裡面的內容似乎有些離題,也相當混亂。我原本希望緒論能用清晰的語言,為處於啟蒙階段的人勾勒出 Topic Maps 技術的基本概念,並用這些基本概念向讀者清晰地描述出書中的其余內容。在第 2 章當中,Michel BIEzunski 的確很好地介紹了 Topic Maps 的范例,但是卻假設讀者已經具備了相關的背景知識,了解了引發 Topic Maps 技術的一般性問題。通過閱讀這篇專欄文章,讀者們就能獲得這些背景知識,也將會發現這一章是 Topic Maps 技術的優秀初級讀本。

  Topic Maps 最初是 SGML 社團中的一群人開發的,用來實現索引和辭典構建過程的形式化。這些早期努力的結果就是 ISO/IEC 13250,這項標准定義出了 Topic Maps 的完整模型。它早於 XML 出現,但是 XML 與 Web 的迅速發展導致出現了 XML Topic Maps(XTM)。XTM 的基礎是 ISO/IEC 13250 模型,但是定義的是一種 XML 語法,並限制它自己只能通過 URI 實現。事實上,XTM 被定義為一種 XLink 應用程序,其中的鏈接專門表示 Topic Maps 模型中的語義。

 Topic(主題)是 Topic Maps 中的基本構成單元——Topic 就是某個概念的計算機表述。通過主題表述的概念被形式化之後就是 subject(標題)。Topic Maps 需要解決的一個基本問題就是如何形式化抽象題目及其主題表述之間的差異。主題之間通過 associations(關聯)相互聯系。主題還具有一組位置(location),可以按照某種特定的形式從這些位置上訪問該主題。這些位置名叫 topic occurrences(主題出現)。主題可以有 name(名稱),也可以沒有名稱,或者有多個名稱。Topic Maps 還可以將 base name(基本名稱)的兩個變體: display name(顯示名稱)和 sort key(排序鍵值)構建到核心模型中,這樣就能按照辭典順序顯示出模型的根。

  當我和別人討論 XML 的時候,我說的實際上是一種抽象。這種抽象很容易就可以成為 Topic Maps 的一個標題。如果我打算將這個概念形式化,我可以畫一幅圖,圖中有一個主題,代表 XML。該主題的一次出現是在 W3C 網站上 HTML 格式的規范。另一次是該規范的 PDF 形式的下載位置。與這個主題有關聯的其他主題的標題可以是 SGML、XSLT、Html 或 Unicode。這個主題的基本名稱是 XML,但是人們也可以選擇“XML (Extensible Markup Language)”作為它的顯示名稱,這樣就能通過工具浏覽 Topic Maps,而不用再解釋這個縮寫是什麼意思。

  Topic Maps 的另一個基本概念是 scope(范圍)。范圍是一個特殊的主題,它定義了一組或一定界限內的相關主題。IBM developerWorks 的作者們可以創建一個范圍,其中的主題代表所有在他們的文章中涉及到的概念。范圍的作用與命名空間類似:基本名稱在某個范圍內應該是惟一的,如果兩個主題具有相同的基本名稱,而且在同一個范圍內,它們兩者就可以 合並(merged)。舉個例子來說,假設我已經創建了一幅表示 XML 的主題地圖,而另一名 developerWorks 作者可能也在做相同的事情,且並不知道我已經做好了。由於我們正在維護的范圍是統一的,因此這兩個基本名稱都是“XML”的主題就可以合並。Topic Maps 為合並、出現、關聯等等定義了非常詳細的規則。

這本書的第 3 章由 Steven Newcomb 編寫,他用獨到的眼光評論了 Topic Maps 的歷史、出現的動機以及文化。這一章在很多方面都和緒論有重復,但是裡面的表述卻更加連貫。隨後,Sam Hunting 在第 4 章中簡明扼要地講述了從 ISO 到基層人員為 Topic Maps 的標准化所做的努力。此後,這本書中就一直是中級和高級主題不斷穿插在一起的樣子。讀者如果想從實用的角度很好地理解 Topic Maps,我推薦按照下面的順序閱讀本書:

  • 第 2 章,“Introduction to the Topic Maps Paradigm”(Michel BIEzunski)。
  • 第 6 章,“How to Start Topic Mapping Right Away with the XTM Specification”(Sam Hunting)。
  • 第 12 章,“Topic Maps and RDF”(Eric Freese)——讀過本專欄的讀者應該都對 RDF 比較熟悉了吧。
  • 第 10 章,“Open Source Topic Map Software”(Eric Freese,Kal Ahmed,Jack Park,Sam Hunting)——如果您喜歡 Java 技術,就讀這一章,否則得讀第 9 章,“Creating and Maintaining Enterprise Web Sites with Topic Maps and XSLT”(Nikita OgIEvetsky)。
  • 第 8 章,“Topic Maps in the Life ScIEnces”(John Park and Nefer Park)—— 一個全面的示例。
  • 第 5 章,“Topic Maps from Representation to Identity: Conversation, Names, and Published Subject Indicators”(Bernard Vatant)。
  • 第 3 章,“A Perspective on the Quest for Global Knowledge Interchange”(Steven Newcomb)。

  在您閱讀本書,以及今後深入研究的過程中,您肯定會經常參考最後一章之後列出的詞匯表。這個詞匯表對於 XTM 規范 1.3 節中那個袖珍的詞匯表是很好的補充。上面列出的這些章節已經足夠您熟悉 Topic Maps 了,在實踐中也能給您足夠的幫助。其余的章節我認為都是比較高級的主題,您可以自己研究。

用標記表示主題地圖

  Topic Maps 上的很多實際工作都是構建在 XML 工具之上的,其中包括 XSLT 和 Java API。清單 1 是從 XTM 規范中所帶的例子裡截取的一小段代碼。您可以看到 XML 的語法有多麼清晰:

  清單 1: 莎士比亞及其著作的 Topic Maps 節選

  <!-- A topic representing the Elizabethan playwright
   William Shakespeare. No occurrences because you cannot download
   a person -->
<topic id="shakespeare">
 <baseName>
  <baseNameString>William Shakespeare</baseNameString>
 </baseName>
</topic>
<!-- A topic representing the play "Hamlet" -->
<topic id="hamlet">
 <instanceOf><topicRef xlink:href="http://cms.ddvip.com/index.PHP#play"/></instanceOf>
 <baseName>
  <baseNameString>Hamlet, Prince of Denmark</baseNameString>
 </baseName>
<!-- An occurrence given by Project Gutenberg's plain text download
   of the Hamlet -->
 <occurrence>
  <instanceOf>
   <topicRef xlink:href="http://cms.ddvip.com/index.PHP#plain-text-format"/>
  </instanceOf>
  <resourceRef
xlink:href="FTP://www.gutenberg.org/pub/gutenberg/etext97/1ws2610.txt"/>
 </occurrence>
</topic>
<!-- An association representing an authorship relationship -->
<topic id="written-by">
 <baseName>
  <baseNameString>written by</baseNameString>
 </baseName>
</topic>
<!-- Used here to associate Shakespeare and the play Hamlet -->
<association>
 <instanceOf><topicRef xlink:href="http://cms.ddvip.com/index.PHP#written-by"/></instanceOf>
 <member>
  <roleSpec><topicRef xlink:href="http://cms.ddvip.com/index.PHP#author"/></roleSpec>
  <topicRef xlink:href="http://cms.ddvip.com/index.PHP#shakespeare"/>
 </member>
 <member>
  <roleSpec><topicRef xlink:href="http://cms.ddvip.com/index.PHP#work"/></roleSpec>
  <topicRef xlink:href="http://cms.ddvip.com/index.PHP#hamlet"/>
 </member>
</association>

  普通的 XLinke 處理器就可以訪問這段文檔,您也可以使用特定的 Topic Maps 工具。它和一般的 XML 文檔一樣冗長,但是結構性非常好。

  結束語

  XML Topic Maps 一書中有很多好材料,不過組織得相當不好。這本書讀起來就像是一些介紹性的文章和 Topic Maps 會議論文集的拼盤。我已經按照我的感覺為初學者推薦了一個 閱讀順序。我想,如果把這本書分成兩部分可能會更有幫助。第一部分包含所有介紹性章節,還有一些章節來探討理論與設計、介紹 Topic Maps 的文化與社團,以及一些編程技巧。相關領域內的進展將有助於人們找到更新鮮更有趣的話題。

  Topic Maps 是非常有意思的技術。它們為 Semantic Web 領域帶來了高度的精確性。然而,獲得這麼高的精確性是要付出代價的,規范中定義的名詞和細節變幻莫測,令人眼花缭亂,這樣的模型理解起來非常困難。最近有很多人在討論將 Topic Maps 與其他相關技術,如 RDF 互通起來的辦法。這項工作的意義十分重大,因為 RDF 可能從 Topic Maps 的精確性中受益,而 Topic Maps 也將獲益於 RDF 的簡單與直接。至少有一點可以確定,我會及時在這個專欄中與您分享這項工作最新的進展。


XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved