[摘 要] 儘管XML文件類型定義提供了一種機器可讀形式的、能夠說明XML語言語法的機制,但目前並沒有類似的機制來指定XML詞彙表的具體語義。這意味著沒辦法說明XML標記的意義,由XML形式呈現的事實和關係無法清晰、全面和規範地定義。這在實務和理論上都引起了嚴重的後果。從正面的方面來看,XML結構能被賦予任意語意,並可用於最初的設計者無法預見的領域。從不太積極的方面來看,內容開發者和軟體工程師必須依靠乏味的文檔,或者更糟的情況是,只能依靠猜測標記語言設計者的意圖來開展工作。這過程既費時費力,又易出錯,還無法核實驗證。即便是設計者當初的建檔工作做得相當完美,不如意的情況還是會發生。另外,對標記語意本質研究的匱乏也意味著屬於工程應用領域的數位文件處理根本沒有理論。儘管目前正在進行的一些工程(XML模式、RDF、語意網)已經取得了一些成績,但是這些工程都沒有直接全面地解決XML標記語意的核心問題。本文回顧了標記意義這個概念的發展歷史,闡明了解釋XML正式語意的動機,並介紹了一個研究語意的科學研究計畫-BECHAMEL標記語意計畫。
[關鍵字] SGML XML 標記語意知識表示
1 引言
近年來,隨著數位出版的發展、萬維網應用的迸發以及電子商務領域的快速發展,我們日常的社會、商業、文化、生活等各方面都開始應用閃光標準化通用標記語言(Standard Generalized Markup Language,SGML)和可擴展標記語言(Extensible Markup Language,XML)的文字標記系統。 SGML/XML是一種定義描述性標記語言的機器可讀技術。除去一些需要特別處理的部分,這種語言能清楚定義文檔結構及其潛在意義。 SGML/XML發展速度很快,廣泛使用這種技術能夠支援高效能的文件互通處理和出版。
這種美好的願望已經部分實現了,SGML/XML的優越性超出了人們的預期,但是SGML/XML文件系統在功能性、互通性、多樣性和可獲取性上仍有待提高。若不把握這個機會,後果會非常嚴重:實業已經花費了高昂的財務成本,也失去了很多機會;在關鍵的安全應用上還有可能導致一些災難;對於殘疾人來說,這會阻礙他們平等地獲取當代社會文化和商業福利。此外,久已存在的一些問題也不斷提醒我們,當下最好的數位文件模型仍有缺陷,至少是不夠完善的。
這些問題的根源在於,儘管SGML/XML能為文件提供有意義的結構,但是SGML/XML不能以系統的機器可處理的方式來表示文件元件和主題之間的基本語意關係。 SGML/XML支援對機器可讀的「語法」進行說明,但是它沒有提供解釋某種語法的語義內涵的機制,所以一個SGML/XML詞彙的潛在意義到底是什麼,還沒有辦法進行形式化表達。利用當下的SGML/XML甚至無法表達非常簡單的有關文件標註系統的基本語義事實,這些事實通常是標記語言設計師預先設計的,但具體實現仍舊依賴於標記語言用戶和軟體。
這種表達功能的缺失使得SGML/XML使用者必須猜測標記語言設計師想到的但沒有形式化表達出來的那些語意關係。內容開發者必須猜測設計者的意圖,在內容編碼時依靠這些推斷來開展工作,無法將自己的推斷和意圖清晰地表達給其他人或傳遞給處理編碼內容的應用程式。軟體設計師也需要猜測標記語言設計師的可能意圖,並將這種猜想設計到軟體工具和應用系統中。有時候二階的猜想是必須的:軟體設計師要猜測內容開發者對標記語言設計師意圖的推論。
很顯然,這些猜測是不完整的、易錯的、未經證實的。而且,製作和實現過程都費時費力,功能性和互通性也很差。為一般的自然語言文件配備一個SGML/XML的說明書並不能完美地解決這個問題。當然,普通的自然語言文件可以提供內容提供者和軟體工程師一些提示,但目前SGML/XML文件還沒有通用的規則。不管怎麼樣,普通的自然語言文件不是機器可讀的形式,這就是我們要說的SGML/XML標記系統的問題。
與SGML和XML相關的機器可處理的語義描述方面的設想還未形成,這是目前工程領域的問題和未來發展障礙的根源,相關的語義學研究也很少,但是很多學者已經開始關注此問題。 W3CSchema方面的工作與此相關,但也只是涵蓋了這個問題中的很小一部分(例如資料類型)。 W3C的「語意網」計畫也與此相關,但它是為了發展通用的基於XML的知識表示技術。我們的研究重點是文檔標記的語義,它隱藏在實際的文檔處理系統中。人們可能會說語意網的本質就是設計語意標記,然而在本文中,我們認為解決上述問題還必須深入考慮標記的本質意義。
接下來,本文首先從歷史背景方面說明標記的意義問題(標記在文本處理方法的發展中扮演了有趣的角色);其次,詳細描述是何種因素產生了形式語義標記需求,何種因素決定了語義需求;最後簡要介紹一項多個機構正在參與實施的研究計劃——BECHAMEL標記語義計劃,該計劃正努力解決標記的語義問題。
2 歷史背景
文件「標記」大概可以算是傳播系統的一部分,包括早期的書寫、抄寫出版和印刷,但是隨著數位文字處理和排版的發展,標記的使用變得自覺又常見,同時也成了系統開發中重要的創新領域。 1960年代到80年代是文件標記系統全面系統化發展的時期,重點工作是提升數位排版和文字處理的有效性和功能性。在1980年代初期,人們依舊致力於研究標記的理論框架,並利用該框架支持高性能係統的發展。這方面的一些成果已經發表,但大部分成果也只是記錄在工作文件和各種標準形式的產品上。
在這個階段出現的一種觀點是,文檔作為一種智力成果,更適合被抽象為一系列物件(如章節、段落、公式等)的有序層次化結構模型,而不是一維文本字元流模型。字元流常夾雜著大量定義格式的編碼、描述設計佈局的結構(如頁碼、分欄、印刷行)、像素值矩陣,以及其他一些在不同的文件處理及儲存系統中潛在的表達形式。有序層級結構模型概括了兩種具有本質差異的標註,分別是識別編輯文本物件(標題、章節等)的標註和說明版面要求的標註。前者的應用已經取得一些成果。諸如標題、章節、段落、方程式、引文之類的相關文檔元素能被分隔標記清晰地標示出來,之後通過映射給元素類型的規則來對元素進行間接處理。這種內容和形式的分離,能夠以常見的組合經濟的方式實現基礎層面的間接性和抽象化。在文件處理的所有方面,這種分離形式有巨大而多樣的實用價值,更重要的是它似乎說明了「文件到底是什麼」這個問題。用於實現如此功能的描述性標記不只是標示了元素的範圍,也攜帶了文件模型想要揭示的意義(如這段文本是一個章節)。
20世紀80年代初期,美國國家標準化局(ANSI/ISO)發布了很有影響力的SGML文件標記元語法,並梳理了標記和文檔結構方面之前所做的理論和分析工作。 SGML為定義描述性標記語言提供了一種機器可讀的形式。作為一種元語法,SGML沒有定義標記語言,而是詳述了開發標記語言中的機器可讀的技術。這個定義的核心是一種類似巴科斯-諾爾範式(Backus-Naur Form,BNF)的形式化表現機制。此機制攜帶有用於定義類型化屬性及其值的規則,以及其他一些用於進一步抽象和間接化的設計(請參閱註釋中對文件類型定義(Document Type Definitions,DTDs)和巴科斯-諾爾範式相似程度方面的總結)。從結構上來說,SGML文件是一種具備有序分支和帶有標記節點的樹,它是其對應的DTD的形式化產物。
經過多年的分析和實踐,SGML背後的基本理念已經眾所周知。利用元語法層面的產業級標準和詞表層面的在地化創新所帶來的優點,SGML的特有機制(類巴科斯-諾爾範式的元語法,類型化屬性/屬性值對,實體引用等)在應用程序和工具方面得到了高效實現。 SGML標記語言本身在發展中似乎也同時支援和優化用於文件系統設計、實施和利用的理想的工作流程。 1980年代中期到90年代初期,大量以SGML為基礎的標註系統發展起來。
儘管SGML的發展得到很多關注,其想法也不錯,並在多個領域成功實施,但在最初的十年裡,幾乎沒有人使用它。導致這個結果的因素有很多,但最重要的還是SGML本身過於複雜,特別是SGML中包含了許多複雜的可選屬性,對應的軟體可能根本沒必要對其實現,導致SGML軟體開發速度非常緩慢。更糟的是,如果文件未經DTD驗證,進一步的分析就不可能實現。縮寫控制意味著如果不考慮文件語法,元素邊界都無法確定下來。另外,SGML也包含了一些其他屬性,它們會導致現有的語法分析工具不適用於形式語法,無法進行高效率的語法分析。
在網路出版與交流方面,SGML系統可應用於HTML(超文本標記語言)方面。最初的HTML版本定義很鬆散,缺乏正式的語法說明。後來人們對HTML的SGMLDTD有了興趣,事實證明為已經成為「正確」實踐的東西設計DTD是很困難的。更重要的是,由於在最初的HTML說明書中,供應商隨意地把程序性標記(如
參考如下XML標記文件的片段
#熟悉結構
化標記的讀者自然知道文件元素中的標籤P代表段落,該段落有一個標題,標題元素之後的段落內容形成了文本主體,它從標題元素之後開始,並在段落結束標籤之前結束。標籤的意義和用法並不一目了然,所以作者或讀者可以參考標記集合的說明文檔
#明顯的標記是為方便人類讀者而設計的。這些標記並不能藉助文件語法分析器,從資料結構中抽取。如圖1所示,解析樹(樣式表程式設計師所用)展示了頭部、引文以及引文前後的文本,這些部分每個都是段落的獨立子節點,但解析樹沒法展示以下特徵:頭部是整個段落的一個屬性,文本是內容結構中的兩個部分,引文嵌入在文本內部。
事實上,資料結構本身並沒有段落和引文之分或與之相關的東西。資料結構只是關聯資訊的圖型結構,就像一個有著「段落」取值的通用識別碼。程序應能推斷出文件意義與使用標籤之間的一致性,並能在樹狀結構從一種形式轉換為另一種形式時利用這種知識。但是,這種轉換(例如,透過XSLT、DSSSL或類似C++的程式語言進行轉換)依賴的是語義推理,而不是顯性的編碼
圖2展示如何透過利用語意知識來豐富和增強語法樹。利用知識表示技術能夠在更高的層面上將整體和部分之間的關係進行編碼,更適合電腦處理。此圖展示了一種傳統的語意網路表示方法,當然其他的方法也正在發展中,包括框架表示法、規則表示法、形式語法以及基於邏輯的表示法等。語意網計劃(本文第八部分)的發展甚至能為標記語言本身提供適當的表示方法。問題的關鍵在於,要為無法由傳統的XML/SGML解析器建模和執行的抽象概念、關聯和約束建立一個層次體系。
在機器可讀的文件(如DTD或語法結構)裡的編碼知識能夠被用來驗證文件的語意約束,為應用程式提供更強大的文件模型。這些更有表現力的表示方法為更好的文件處理系統的設計和實現提供了強有力的支持。
6 應 用
近年來,許多新技術的發展使得常規的結構化標註越來越盛行。這些技術在資訊管理中主要強調以下幾個方面的問題。
轉換和聯合。對SGML/XML開發人員來說,最常見的工作就是設計轉換形式,從一種應用語法轉換到另一種應用語法。這樣做是為了建立新型文件表示方式,或方便其儲存於資料庫中。有時候,開發人員需要整合或調整大型的數位文件集合,每個數位文件都由無法進行互通的標記語言表示。不考慮轉換的範圍大小,常規的解決方式是使用一種在語法解析樹上起直接作用的轉換程式語言。在原始檔分析中產生的樹狀結構轉換成目標語言的樹狀結構實例。轉換之後的樹被序列化成新的文檔實例、圖形或音訊。
資訊孤島。這個問題與上述的轉換問題很相似,但是其目標不是將一個形式的文檔轉換為另一種形式的文檔,而是允許分佈存儲的文檔或文檔片段能夠向系統用戶提供一個通用的透明訪問接口。儘管沒必要將文件從一種標記語言逐字逐句地轉換成另一種標記語言,但是系統必須能夠保證文檔內容表面上看起來是無縫融合的,儘管文檔的編碼可能差別很大。
可獲得性。創作工具逐漸接受了結構化標記,這已經成為視覺障礙用戶獲取數位文件的福音。聲明性標記使得人們能夠借助螢幕閱讀器或點字顯示器進行閱讀,並在助記符幫助下進行推斷,而不是利用圖形線索。但是,目前這樣的應用需要依賴使用者本身的能力或介面軟體,基於獨立的標籤內容或語法所得出的結構性推論。正如標籤集文件中所描述的一樣,標記語法約束及標記的意義和使用都嚴格地依賴於文檔作者的可信性。可惜的是,作者經常會誤用標籤,最糟糕的例子就是在web頁面上使用「頭部」標籤來標記某些特別的版面。
安全處理。發展更有表達力的標記模式語言(例如W3C的XML Schema語言)的部分動力是人們認識到標記錯誤、誤用和濫用的後果遠比糟糕的格式化輸出要嚴重得多。聲明性標記不僅用於電子商務,也用於安全資訊領域,例如醫療記錄和航空工業。這些領域的開發人員不僅要確保數位文件的語法結構規範,也要確保其遵守某些安全協議,以確保文件的安全處理、儲存、傳輸和表示。
7 標記語意的優點
目前BECHAMEL計畫的研究結果顯示,標記語意能夠透過以下幾種方式解決上述問題。
聲明性的、機器可讀的語意描述。就目前的實際情況而言,結構化標記語言設計師用自然語言文本表達了標籤的意義,明確了其適當的使用方式。形式化的標記語意體系使得本體之間的聯繫能被電腦程式清晰地表達,並實現自動化處理。
假設的驗證。在沒有形式化標籤集的文件環境中,擁有標記語意解釋能力的系統提供了測試猜測和驗證假設的環境。在這種環境中,未公開的標記語言使用者會對那些他認為在文件資料庫中持續應用的屬性和規則進行推測。之後文檔處理軟體就會檢索那些與假設規則相容或不相容的文檔元素。
語意約束的增強。支援有效性驗證的解析器不僅能夠像常規語義解析器一樣完成語法驗證,也能夠在發現或編寫語義的過程中同時驗證這種猜測,這樣的解析器同樣能夠加強語義約束。這項操作同假設驗證一致,但是在這種情況下,語意約束是已知且規範的。
優化的更有表現力的APIs。使用SGML和XML應用程式轉換或表示數位文件時,都會使用標記語意。但是只有在執行程式時,更高層級的屬性和關聯才會顯示出來。形式化的、機器可讀的語義會豐富應用程式的接口,加快軟體設計速度,隨著標記語言的發展和變化,這些軟體維護起來也能更加方便和安全。
8 相關工作
針對上述挑戰和問題,還有很多其他的文件處理技術、標準和研究計劃。接下來我們整理一下試圖解決這些問題的現有想法。
語意網。語意網指的是眾多相互連結的研究和標準化工作,就像當下一些有關標記和知識表示技術的想法。最核心的當屬W3C的資源描述框架,當然也包含其他的技術,例如ISO的主題圖技術。語意網的範圍很廣,目標宏大,旨在利用通用知識表示技術來完善標記語言,從而「促進人類知識的全面發展」。語意網的研究和標準化不同於當下的想法:不是對特定領域進行語意描述,而是實現對所有領域的知識進行語意標註。目前研究的目標特別盯在「文檔標記語意」上,而非「通用的語意標記」。語意網路技術的進步會讓我們利用語意網標記語言對標記的語意進行編碼成為可能。
W3C的文檔物件模型。文件物件模型是一個應用程式接口,是對XML文件進行分析後產生的層級式資料結構。人們想設計能為標記語義提供各種介面的系統,類似於DOM所提供的標記語法相關的形式,最終能夠形成“語義DOM”,對W3C的語法DOM形成補充。
W3C的Schema。 XML Schema是一門基於XML的語言,能夠取代傳統的DTDs,用於約束XML文件。 DTDs的限制推動了這門語言的發展,這些限制與我們在BECHAMEL計畫中所面對的問題是類似的。 Schema允許文件類設計師定義複雜的資料類型,就像在高階程式語言裡面的做法一樣。但是,為了對標籤集建檔中的所有關係和約束進行編碼,我們還需要比當下的XML Schema更強大的表達形式。超媒體/時基結構語言(Hypermedia/Time based Structuring Language,HyTime)的架構形式。適應性廣泛的架構技術來自於這樣一種認識,即不同的標記語言應用程式常常透過樣式各不相同但語義上等價的結構進行編碼。架構形式允許文件類設計師將其自有的特定元素實例映射到更通用的各種架構實例上,這些架構實例更便於在不同的應用程式之間進行映射。這些映射的確表示了語意知識的約束形式,有利於解決上述轉換和整合上的挑戰。 BECHAMEL計畫在某種程度上就是要建立一個比架構形式表達更多語意關係的模型。
以上就是XML標記的語意 的內容,更多相關內容請關注PHP中文網(www.php.cn)!