分享
 
 
 

XML编程思想:从书本学习XMLTopicMaps

王朝other·作者佚名  2008-05-21
窄屏简体版  字體: |||超大  

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>

<resourceRefxlink: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 的简单与直接。至少有一点可以确定,我会及时在这个专栏中与您分享这项工作最新的进展。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有