这篇对 XML 和语义的讨论揭开了这个由 Uche Ogbuji 撰写的专栏的序幕,本专栏讨论了 XML 知识管理方面的问题,包括元数据、语义、资源描述结构 (RDF)、主题映射和自主主体。本专栏从实践的角度来剖析这个主题,因此它针对的读者是程序员,而不是针对理论家。
“XML 编程思想”这个新专栏将讨论 XML 和 知识体系结构 (KA) 的交汇处。知识体系结构听起来象是一句行话,但它其实只是一个涵盖面很广的术语,是指当今 XML 逐步走向成熟时出现的一些非常有用的技术。元数据管理、语义透明性和自主主体都是 XML 独有的概念,但 XML 对统一结构化语法和半结构化语法的承诺有助于将几乎不可能的事变成切实可行的。
区分本专栏和许多此类主题讨论的主要特征是我将针对程序员展开讨论,而不是针对理论家。我将讨论一些开发工具和技术,它们可以让开发人员使用 XML 更好地收集和浏览隐藏在数据中的知识,无论这些数据是在公司的数据库中还是在 Web 上。这听上去象是在夸夸其谈,但本专栏的各篇文章其实是一个循序渐进的过程,决不会脱离常识。
本专栏的前两篇文章介绍了预备知识,因此它们可能会稍微偏离我的基本规则“重代码,轻理论”。前两篇专栏文章将讨论 XML 的语义和相关词汇。我只用现有产品来讨论其创始过程,以供开发人员了解,但现在还不会展示许多实用代码。
究竟什么是语义?
那么,什么是语义?因为语义这个单词的特殊性,每个人对语义定义的观点都各有不同。一般来说,语义是构建在公用语法上的系统中 XML 数据的一层规范。这就引出了许多标记了 XML 语义的概念。
它们包括:元素类型名称、属性名称和某些情况下内容术语的解释 用于用有效文档引导事务的处理规则(也称作商业规则) 一个文档中的结构化元素与另一个文档中的结构化元素之间的关系
当然,在这三概念之间有一些重叠。
反观语义
两年前,我写了一篇文章在 Sunworld(现在称作 Unix Insider:请参阅 参考资料)上发表,这篇文章研究了新的 XML 如何适应电子数据交换 (EDI) 的世界。促使 EDI 回到 70 年代的事件之一就是对统一商业事务词汇的承诺,以便改进不同公司的信息系统之间的电子通信自动化。
EDI 为特定业界定义了一种特殊语法和一套特殊语义 -- 一些是普通语义,而另一些是非常特殊的语义。XML 目前有明确的语法和结构,但它没有提 语义透明性。语义透明性可以使 XML 机器建立元素(比如, PurchaseOrder 或 PO )和根据该元素执行专门操作的高阶处理之间的关系。总而言之,它意味着数据中的表达式如实地表示了相应概念的含义。语义透明性的最终测试是如果某个人 只使用适用于 XML 处理软件的机制,他能否正确理解 XML 数据的含义。
显然,单靠 XML 根本无法实现语义透明性,这正是那么多 XML 技术专家关注语义透明性的原因。如果 XML 系统不能实现语义透明性,那么这些系统可能就不符合有三十几年历史的 EDI,就不能成为一种自动电子交易的方式。
关于 XML 实现语义透明性的必要性还有一些争论。在完成 XML 1.0 规范之前,各种团体都期望开发语义透明性的机制。实际上,某些创意没有考虑到 XML;它们期望(至今仍是这样)成为集 SGML、XML、EDI、表格式报表和其它机器格式的术语于一身的通用权威。
关于 ISO BSR
机器可读语义的业界元老自有其 EDI 基础:自 1998 年开始开发的 ISO 基本语义字典 (BSR),其主旨是“充当参考中心,辅助跨商业、工业和管理的数据的通用、多语言理解”。这个宏伟的目标似乎只有 ISO 才能承担,然而 BSR 却迟迟不能完成。
目前已经建立了基本规则(出版物 ISO 16668:2000),ISO 已经收集了一个试用集合,有几千项,例如 AccountsPayables 、 ContactParty.CustomerAssigned.Identifier 和 Contract 。一旦完成,BSR 可以让程序员使用合成 XML 模式,如以下 DTD 片段:
<!ELEMENT
AccountsPayables.Contact (ContactParty.CustomerAssigned.Identifier)><!ELEMENT
ContactParty.CustomerAssigned.Identifier (#PCDATA)>
假设那些元素是由制造公司使用的报表格式,该公司将其会计工作外包给另一家公司。那么,XML 词汇的开发人员将从以下方式中得到语义透明性的好处:开发人员确保所使用的元素类型名称符合 BSR 中的等价概念,以最小化元素含义的多义性。制造商可以与会计人员讨论数据,并确保双方都认同所表达的内容。 由于术语的含义非常清楚,因此将此格式映射成会计学的标准格式比完成此类任务的常规做法更简单,它甚至可以自动完成。即使制造商使用 EDI,而会计人员使用 XML,这种简单映射仍是可行的。 BSR 中的含义指出了元素之间的关系,例如 ContactParty.CustomerAssigned.Identifier 元素和报表中别处或另一个文档中的 Contract 元素。
即便在这个初级阶段,也可以使用 BSR 进行实验,因为全球信息定位服务 (GILS) 已经创造了试用 BSR 项的 RDF 模式和 XML 模式编译。GILS 是美国政府的倡议,它涵盖了用于寻找结构化信息的技术和资源。GILS BSR 编译是一个有价值的资源,它已经涵盖了在常规政府与私人交流中使用的常用术语。
但是,请注意这个初始集合是实验性的。不仅描述非常粗略,而且 XSchema 和 RDFS 表示中还有语法错误。
我建议查看 BSR,因为它影响着重要组织,如 UN/CEFACT(全球范围)、CEN/ISSS(欧洲)和 DISA(美国)。
统一欧洲和美国的术语
CEN/ISSS 值得一提,这个组织在 XML/EDI 的领域中做了大量工作。CEN/ISSS 是负责促进欧盟中信息系统标准化的委员会。虽然据官方声称,它的 XML/EDI 工作仍处于试行阶段,但 CEN/ISSS 已经创建了一个综合结构,用于将 EDI 的 UN/EDIFACT 风格转换成 XML。这个转换结构包括 DTD 生成规则和熟悉 EDI 的开发人员可以试用的样本。其结果的确很复杂,但 EDI 的悠长历史确保了这两个字段和 XML/EDI 中使用的消息流都是非常明确的。
显然,开发 EDI 的组织在处理 XML 语义方面跳跃了一大步。其中不带 EDI 标记的主要代表是 Microsoft。在 1999 年,Microsoft 推出了 BizTalk 结构。BizTalk 是 Microsoft、其伙伴和业界组织用于注册模式、进程描述和样本 XML 文件的库。其旨在充当 XML 格式和相关进程的交换所,这是它成为实现语义透明性的重要力量。
部分是因为它是由一家公司开发的,部分是因为常用行业政策,BizTalk 已经成为激烈争论的主题。某些人将它看作是 Microsoft 通过在语义问题上建立霸权以达到掠夺 XML 的目的。不管政策如何,现在已经出现了在 BizTalk 结构中工作的工具。许多工具都是类似于 XML 解决方案的映射软件,它们提供了 GUI 以便将一个词汇映射成词汇。同样,开发人员可以开始使用基于 SOAP 的 BizTalk XML 消息格式的公开规范。遗憾的是,如果要执行重要的 BizTalk 消息传递,需要使用 Microsoft 的商业 BizTalk 服务器产品。
该领域中的新生事物
我没有涵盖部分相关的工作,如 OMG 的 XML 元数据交换 (XMI),或 Unisys 的通用库 (UREP),因为它们的主要目的是交换应用程序开发模型(虽然 XMI 和 UREP 与 XML 有一些关系)。
在这篇文章中,我讨论了 XML 语义这个舞台上的一些重要演员。然而,现在该领域中的许多活动来自于新生代,如 ebXML、UDDI 和 eCo,以及纵向联合行业组织的工作。在下一篇文章中,我将讨论这些新加入者更实际的方面。