[摘 要] 尽管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 历史背景
文档“标记”大概可以算作传播系统的一部分,包括早期的书写、抄写出版和印刷,但是随着数字文本处理和排版的发展,标记的使用变得自觉又常见,同时也成了系统开发中一个重要的创新领域。20世纪60年代到80年代是文档标记系统全面系统化发展的时期,重点工作是提升数字排版和文本处理的有效性和功能性。20世纪80年代初期,人们依旧致力于研究标记的理论框架,并利用该框架支持高性能系统的开发。这方面的一些成果已经发表,但大部分成果还只是记录在工作文档和各种标准形式的产品上。
在这个阶段出现的一种观点是,文档作为一种智力成果,更适合被抽象为一系列对象(如章节、段落、公式等)的有序层次化结构模型,而不是一维文本字符流模型。字符流常夹杂着大量定义格式的编码、描述设计布局的结构(如页码、分栏、印刷行)、像素值矩阵,以及其他一些在不同的文档处理及存储系统中潜在的表达形式。有序层级结构模型概括了两种具有本质差别的标注,分别是识别编辑文本对象(标题、章节等)的标注和说明版面要求的标注。前者的应用已经取得一些成果。诸如标题、章节、段落、方程式、引文之类的相关文档元素能被分隔标记清晰地标示出来,之后通过映射给元素类型的规则来对元素进行间接处理。这种内容和形式的分离,能够以常见的组合经济的方式实现基础层面的间接性和抽象化。在文档处理的所有方面,这种分离形式有巨大而多样的实用价值,更重要的是它似乎说明了“文档到底是什么”这个问题。用于实现如此功能的描述性标记不只是标出了元素的范围,也携带了文档模型想要揭示的意义(如这段文本是一个章节)。
20世纪80年代初期,美国国家标准化局(ANSI/ISO)发布了很有影响力的SGML文档标记元语法,并梳理了标记和文档结构方面之前所做的理论和分析工作。SGML为定义描述性标记语言提供了一种机器可读的形式。作为一种元语法,SGML没有定义标记语言,而是详述了开发标记语言中的机器可读的技术。这个定义的核心是一种类似于巴科斯-诺尔范式(Backus-Naur Form,BNF)的形式化表达机制。这一机制携带有用于定义类型化属性及其取值的规则,以及其他一些用于进一步抽象化和间接化的设计(参见注释中对文档类型定义(Document Type Definitions,DTDs)和巴科斯-诺尔范式相似程度方面的总结)。从结构上来说,SGML文档是一种具备有序分支和带标记节点的树,它是其相应的DTD的形式化产物。
经过多年的分析和实践,SGML背后的基本理念已经众所周知。利用元语法层面的行业级标准和词表层面的本地化创新带来的优点,SGML的特有机制(类巴科斯-诺尔范式的元语法,类型化属性/属性值对,实体引用等)在应用程序和工具方面得到了高效实现。SGML标记语言本身在发展中似乎也同时支持和优化用于文档系统设计、实施和利用的理想的工作流程。20世纪80年代中期到90年代初期,大量基于SGML的标注系统发展起来。
尽管SGML的发展得到很多关注,其想法也不错,并在多个领域成功实施,但在最初的十年里,几乎没人使用它。导致这个结果的因素有很多,但最重要的还是SGML自身过于复杂,特别是SGML中包含了许多复杂的可选属性,对应的软件可能根本没必要对其实现,导致SGML软件开发速度非常缓慢。更糟糕的是,如果文档未经DTD验证,进一步的分析就不可能实现。缩写控制意味着如果不考虑文档语法,元素边界都无法确定下来。另外,SGML还包含了一些其他属性,它们会导致已有的语法分析工具不适用于形式语法,无法进行高效的语法分析。
在网络出版和交流方面,SGML系统可应用于HTML(超文本标记语言)方面。最初的HTML版本定义很松散,缺乏正式的语法说明。后来人们对HTML的SGMLDTD有了兴趣,事实证明为已经成为“正确”实践的东西设计DTD是很困难的。更重要的是,由于在最初的HTML说明书中,供应商随意地把程序性标记(如<center>)添加到关键性的描述性标记中(如<title>),导致开发者和用户同时忽略描述性标记和程序性标记的区别。HTML的描述性部分甚至不能很好地反映文档的层级结构,说明书不能提供样式表语言来支持间接性。最后,SGML的机制无法扩展元素集和使用替换元素集,HTML文档似乎不能被通用的SGML处理器(允许拓展和替换DTDs)处理,而只能被特定的HTML格式化程序处理,配合处理器中硬编码的格式规则处理HTML标签。
HTML后续的发展可以看作原有松散的HTML语言努力向SGML语言序列转变的过程。如果有足够的时间和资源来应用那些成熟的文档系统设计规则,那么这种转变是可以实现的。不过,新成立的W3C机构在采纳新元素集合以及在Web应用SGML上面临很大的压力。SGML的不足使其很难在Web上发挥SGML和描述性标记的优势。主要问题是SGML中存在大量多选特征、复杂的形式化语法,以及必须依赖DTD确定元素等。
为了确保HTML和其他相关技术能够充分利用元语法的优点,用户能够更便捷地开发和分享新的特定领域中的元素,文档能够不经DTD索引就被解析为元素树,SGML工具和应用能够协调发展,W3C创建了SGML的子集,希望能够提供一个相对简单的标准(无需进行选择)、一些相对简单的语法,以及一种无需DTD也能处理未经验证的文档格式的方法,于是XML应运而生。经过一年半的发展,XML被W3C以

XML标记的语义