级别: 中级 Erik Hennum (ehennum@us.ibm.com), 信息架构师, IBM Robert Anderson (robander@us.ibm.com), 开发人员,信息开发工作室, IBM Colin Bird (colinl_bird@uk.ibm.com), 信息架构师, IBM
2005 年 11 月 24 日 用 DITA 专门化管理文档内容的主题问题 —— 即根据每个题目来区分和处理内容。使用这篇文章中介绍的技术,可以利用语义 Web 技术改善搜索、集成和其他处理工作。这样,不需要从头开始,就可以根据面向主题的策略编写和处理内容。
把 DITA 题目(topic)规范化成主题(subject)
在像 DITA 这样面向题目的架构中,内容是用小的独立单元编写的,然后汇集在一起,提供帮助系统、图书、课程和其他可以交付的东西。每个信息单元只回答针对特定目的的一个问题。也就是说,每个题目都有特定的、独立的主题问题 —— 这就是这些信息单元被称为 题目(topic) 的原因。例如,一个题目可能描述了 Web 站点上用户定义文件的格式,而另一个题目可能解决了 Web 站点安全性的原则,而第三个题目可能说明了设置 Web 站点登录的过程。
因为每个题目都有特定的意义,所以 DITA 题目是为语义处理而度身定制的。但是,当前的语义处理器不能读取题目的内容来发现它的含义。缺少的是语义处理器能够理解的题目主题问题的正规声明 —— 就像信封上的地址让邮件分捡员可以把内容路由到适当的目的地一样。
简单知识组织系统(Simple Knowledge Organization System,SKOS) 提供了指示内容的主题问题的标准。SKOS 允许定义具体主题问题范围的主题(如果希望,还可以把这些主题组织成分类系统),然后对每部分内容进行分类,指出它的主题。例如,使用 SKOS,可以把配置和安全定义成主题,然后把三个与这些主题有关的示例题目归到这个主题,这样用户可以浏览主题,不论在文本是否确实出现“配置”或“安全”这两个单词,都可以找到内容。
SKOS 是用资源描述框架(Resource Description Framework,RDF)表示的,RDF 是语义 Web 的基础语言。但是,SKOS 提供了专为可读内容设计的更高层次的语言。SKOS 受益于很多方面,包括 OWL/RDF、TopicMaps、存在主义和图书馆科学方面的专家。在标准的谱系中,SKOS 的作用是衔接传统的索引和语言 Web 的正式本体。
所以,DITA 自然而然地适合 SKOS 解决方案:DITA 题目用主题进行分类,主题用 SKOS 表达,在运行时对主题进行处理。
注意: SKOS 用 概念(concept) 这个标签表示这些正式主题。但是 DITA 用 概念(concept) 这个标签表示在概念上自然地成为一体的内容单元。为了避免混淆,这篇文章(以及伴随的专门化)用 主题(subject) 标签表示与 SKOS 的概念相同的事情,概念(concept) 标签则采用 DITA 的含义。
分类法的典型方式是维护独立于内容的正式的主题定义。但是,通过使用 DITA 专门化,可以把主题定义作为编辑的内容进行维护。通过把主题定义按内容进行管理,内容创建者可以得到以下好处:
- 正式主题通常是由已经公布的信息集中的术语表题目或其他题目定义的。TopicMaps 社区很久以来就认识到了这类权威的定义资源,并把它命名为 公布的主题指标(published subject indicators)。例如,应用程序服务器产品的文档通常会把主题定义在重要的主题领域内(例如 验证(authentication)、Web 服务器 等等)。
即使在公布的信息中不包含主题定义,也可以把标准的内容工具用于主题定义。例如,可以用 XML 编辑器编写主题定义,然后把主题定义与内容一起在内容管理中进行归档或在版本控制系统中管理版本。还可以使用现有的格式化处理,生成供作者使用的主题定义的目录 —— 也就是说,不必为主题定义单独实现一套编写和处理系统。
- 主题分类与导航组织一样,也是内容信息架构的很大一部分。所以信息架构师与其苛求语义相对于事实的精确性,不如通过对内容涉及的主题提供正式定义,推动更好的内容,并指导内容的创建。
在现有的信息架构特别脆弱的地方,信息架构师可能发现,有些主题分类仅仅是规范化了题目之间现有的组织或者关系。
- RDF 适合进行处理而不是编写。具体来说,RDF 不采用 XML,而是把信息表示为记录集,从而得到更易理解的树和表结构。RDF 的支持者们经常说:高级的工具导致不再需要查看源文件的格式;但是,HTML 已经证实了,即使这类工具存在,容易理解的文档格式也是有价值的。
具体来说,主题的分类法有种自然的树状结构,可以直接用专门化的 DITA 图表示。RDF 模型有很多不同的序列化方式,专门针对主题定义和分类的 DITA 图可以当作 SKOS 模型的一种序列化方式。
主题分类的组成部分
根据 SKOS 的规定和 DITA 专门化的实现,主题分类有以下部分:
表 1. 主题分类的组成部分
| 组成部分 | 标识 | DITA 实现 |
|---|
| 主题定义 | 正式主题的意义 | DITA 题目,定义主题的默认标签并解释主题覆盖的内容。 | | 主题方案 | 主题之间的关系 | DITA 图,把主题组织成层次结构。例如,Task 主题可能既包含 Installing 主题又包含 Configuring 主题。图还可以表示用其他方式关联的主题之间的关联关系。 | | 内容分类 | 资源的主题问题 | 另一个 DITA 图,表示定义正式主题的题目与处理主题某些方面的题目之间的关系。
在标准的 DITA 实践中,同一个图还能定义内容主题的导航关系和相关链接。 |
另外,DITA 还提供了进行分类的内容题目,以及与这些题目相关的其他信息的内容题目。例如,DITA 图可以把内容题目组成起来,提供导航层次结构或者定义这些题目的相关链接。
图 1 表示了主题分类的组成部分:
图 1. 主题分类的组成部分
图 1 的显示方式是:
- 正式主题以凫蓝圆显示
- 内容题目以蓝色圆显示
- 主题关系以黄色箭头显示
- 分类关系以蓝色箭头显示
- 题目导航关系(例如导航层次和相关链接)以洋红箭头显示。
从出版的角度来看,主题分类类似于索引和术语表。这个概念并不新 —— 关于术语表和索引进行语义断言这个认识对 TopicMaps 贡献很大。一个索引术语可能有多个含义,但每个主题只能有一个精确含义,就像术语表中的每个含义一样。就是这种精确性,才使基于含义管理内容成为可能。
定义主题
要定义主题,需要创建 DITA 题目(通常是内容题目)来标识内容的主题问题方面(请参阅 图 2)。
图 2. 定义好的主题
DITA 题目用特别的小节元素指定主题,包括的信息有以下几种:
- 默认标签:包括同义词和表示图片。
- 对主题定义和覆盖范围的说明。
清单 1 显示了 Configuring 主题的定义示例:
清单 1. Configuring 主题的定义
<concept id="configuring">
<title>Configuring</title>
<shortdesc>You configure components to set up or refine your solution.</shortdesc>
<conbody>
<p>You don't have to get the best configuration the first time....</p>
<subjectDetail>
<subjectLabels>
<altLabel>Setting up</altLabel>
</subjectLabels>
<scopeNote>Administrative tasks performed after installation...</scopeNote>
</subjectDetail>
</conbody>
</concept> |
这个特殊的小节可以用在任何允许小节元素的题目类型中。具体来说,要规范化现有的对主题有权威定义的术语表、概念或参考题目,可以添加进这段特殊小节。因为正式题目的含义不会根据它的使用变来变去,所以这些字段应当成为题目的一部分。
组织主题
作为方案的一部分,专门化的 DITA 图元素指定的关系定义了辞典或分类法的层次结构(请参阅 图 3)。
图 3. 主题之间的层次和相关关系
层次结构可以包括主题头,它的意义与主题头中包含的所有主题的联合相同。专门化的题目组和关系表指定横切在主题层次结构上的相关关系。
清单 2 是一个主题方案示例,它把 Installing 和 Configuring 归为 Task 主题,把 Resource utilization 和 Security 归为 Concerns 主题:
清单 2. 主题方案示例
<subjectScheme title="Sampletaxonomy" id="taxonomyScheme">
<subjectdef href="task.dita" navtitle="Task">
<subjectdef href="installing.dita" navtitle="Installing"/>
<subjectdef href="configuring.dita" navtitle="Configuring"/>
...
<subjectdef href="concern.dita" navtitle="Concern">
<subjectdef href="utilization.dita" navtitle="Resource utilization"/>
<subjectdef href="security.dita" navtitle="Security"/>
... |
同一个主题可以有多个方案。例如,不同的观众可能对分类的不同子集感兴趣。
这种在主题上放置替代组织结构的方式非常适合 DITA 从内容中分离上下文的标准应用,从而可以把不同的组织方式放在同一内容上。也就是说,可以把方案当作负责主题定义题目的特殊类型的内容。
方案可以使用非 DITA 主题定义(例如公开定义的 SKOS、OWL 或 TopicMaps 主题)。使用 subjectdef 元素引用主题的公开标识,并用 format 属性指定主题定义格式。这样就可以把公开定义的主题整合进自己的方案中,或者把组织维护的正式本体与特定于自己内容的概念集成进来。
最后,如果没有把主题组织进层次分类法或者也没有表示主题之间的关系,那么就没有必要创建方案。在没有方案的时候仍然可以对内容进行分类。例如,可以用标签对题目进行分类,用这种方式支持受控的索引或受控的 标签分类法(tagsonomy),但是在这种情况下,定义每个标签时都要用精确的定义来创建主题题目。
对内容进行分类
为了对内容进行分类,另外一个图专门化把正式主题与题目关联起来(请参阅 图 4)。
图 4. 按主题分类的内容题目
topicref 元素引用分类的内容或包含到分类内容的引用,在这个元素内部,嵌套了 topicsubject 元素来指定内容的主题。可以用 topicsubject 元素的 href 属性来表示主要主题,这个元素还包含 subjectref 元素来表示次要主题。如果没有主题是主要的,那么 topicsubject 元素就应当是一个没有 href 属性的容器。
清单 3 是内容分类的示例:
清单 3. 内容分类
<topicref href="websecure.dita">
<topicsubject>
<subjectref href="webserver.dita"/>
<subjectref href="security.dita"/>
</topicsubject>
<topicref href="https_protocol.dita"/>
... other subordinate content topics ...
</topicref>
<topicref href="loginsetup.dita" collection-type="sequence">
<topicsubject>
<subjectref href="configuring.dita"/>
<subjectref href="webserver.dita"/>
<subjectref href="security.dita"/>
</topicsubject>
<topicref href="editinguserdef.dita"/>
... other subordinate content topics ...
</topicref> |
就像可以引用公开的非 DITA 主题一样,也可以用 subjectref 引用公开的 URI 标识,并设置 format 属性,使用 SKOS、OWL 或 TopicMaps 主题对 DIT 内容进行分类。也可以对非 DITA 内容(例如 HTML 和 PDF 文件)进行分类,方法是用 topicref 元素引用这些文件,但是要用 format 属性标识内容的格式。
因为主题是由特殊的题目定义的,所以可以在内容中包含主题定义 并 把它用于分类。例如,Security 的主题题目既可以对安全性的内容进行分类,又可以描述 Web 站点或帮助系统内容中的安全性。图 5 演示了这个场景:
图 5. 主题题目也是分类内容的题目
中央的圆圈代表概念题目(例如 Security),它:
- 和方案中的其他主题(可能是 System Concerns)有更广的关系
- 按其他两个主题进行分类(可能是 Background 类型和 Novice User 角色)
- 用于一个题目的分类(例如 Web Security)
- 在导航序列中处于第二位(可能在 Glossary 大标题下)
把组成部分关联起来并且进行处理
因为分类图与方案图不同,所以不需要改变分类,就可以把多个方案应用到同一分类上。要把方案图和分类图组合起来形成可以发布的内容,可以用 DITA 图引用,在更高层次的图中引用这两个图(请参阅 图 6)。
图 6. 把方案图和内容图汇集成一个可以发布的东西
只处理一个图,就可以生成内容的 HTML 表示和主题/分类的 SKOS 表示。
生成用来处理的 SKOS
在定义了正式主题、把它们组织进层次方案中、对内容进行分类之后,可以运行转换,把 DITA 主题分类转换成 SKOS,以便让 SKOS 工具进行处理。要做到这一点,要安装 DITA 开放工具包(请参阅 参考资料)并下载随这篇文章提供的演示 x-dita10_thesaurus.zip。这个演示要更新的 demo 目录有一个 thesaurus 子目录,里面有一个 readme.html 文件,文件中有构建示例内容的参考文档和说明的链接。
典型情况下,SKOS 工具会把辞典或分类法显示给用户进行浏览。通过选择一个或多个主题,用户就导航到相关的分类内容。例如,用户可能选择 Security 和 Web Server 主题,从而找到示例题目。可以在语义 Web 环境目录(SWED)的站点上(请参阅 参考资料)看到这类界面的示例。这个框架采用 SKOS 进行它的主题分类。主题分类的更复杂应用也是可行的。
结束语
这篇文章只介绍了对内容进行分类的基础知识。DITA 专门化提供了额外的功能,包括主题之间关联性的关系和表格式分类。但是,就像前面指出过的,需要独立的运行时工具在分类上进行操作。另外,定义主题和把它们组织成分类法的艺术也有自己的策略和最佳实践。
而且,这项 DITA 专门化的用户应当记住,SKOS 本身还没有发展成一个被认可的标准。所以,与 SKOS 兼容的 DITA 专门化可能会有所发展。
但是,DITA 专门化已经展示了把分类法和分类作为内容的一部分进行维护的价值。通过采取这种方式,内容的创建者可以使用语义 Web 的技术,根据内容的意义来处理内容。
下载 | 描述 | 名字 | 大小 | 下载方法 |
|---|
| Download for thesaurus specialization | x-dita10_thesaurus.zip | 259 KB | HTTP |
|---|
参考资料 学习
获得产品和技术
讨论
作者简介  | |  | Erik Hennum 为 IBM System Group 从事 User Assistance 的设计和实现工作。对于 DITA,他帮助制定了域专门化原则,而且是 OASIS DITA 技术委员会的一个成员代表。 |
 | 
|  | Robert D. Anderson 是 DITA 开放工具包的首席架构师,也是 OASIS DITA 技术委员会的成员。他从 1999 年起就在 IBM 内部的信息开发室工作,对 XML(DITA)和 SGML(IBMIDDoc)进行支持。 |
 | 
|  | Colin Bird 是 IBM Hursley 用户技术部门的信息架构师。在此之前,Colin 在 IBM 的英国科学中心工作,开发图片操纵和可视化应用程序。这项工作形成了几项信息检索项目,特别是包括基于内容的图片检索,最后他被借调到位于南安普顿大学的 Intelligence, Agents, Multimedia Group 一年。Colin 目前是那里的高级访问研究学者。他在南安普顿期间产生了对元数据捕捉的强烈兴趣,这些元数据可以用在信息的规则检索和适应性发布上。 |
对本文的评价
|