基于XML的三个常用元数据描述工具的评价与比较
【内容提要】随着Internet和WWW的飞速发展,XML凭借其自身的特点,为网络信息的管理、搜索以及Web上各种应用的链接提供了极大的便利,从而得到了广泛应用。XML的一个重要特点就是允许用户定义自己的标签,从而实现对信息的存储和管理。XML中较常用的标签定义工具有DTD和XML Schema,而RDF是一个专用的元数据描述框架。本文结合一个MARC元数据描述的实例,对这三个工具进行了比较细致的分析和对比,并对未……
1 引言
XML是继HTML之后的又一种WEB标记语言,它为用户提供了灵活的标记扩展机制,使得不同内容的资源能以格式良好的自定义的标记元素来表现。元数据是描述信息资源或数据等对象的数据,主要用来识别、评价、追踪资源,以及方便对资源的管理、发现、查找和交换。随着计算机网络的发展,特别是Internet的普及,网络环境下信息的描述和处理成为一个重要的问题,相应地网络环境下的元数据问题也成为一个研究的热点。DTD和XML Schema是XML中常用的进行标记扩展的工具,RDF是专用的元数据描述工具,网络环境下的元数据描述通常就是借助这几个工具,利用XML的标记可扩展性来完成。在这三个工具中,DTD随着XML1.0最早被提出,伴随着XML应用的普及和人们对DTD认识的加深,又进一步提出了RDF和更有发展潜力的XML Schema。
2 DTD
DTD作为XML1.0规范的重要组成部分,它使用EBNF(Extended Backus Naur Form)语法完成XML文档结构的定义,即XML文档中标记的定义。一个XML文档只能对应一个DTD,一个DTD由一系列标记定义组成,包括元素定义(element declaration)、属性定义(attribate declaration)、实体定义(entity declaration)、注释定义(notation declaration),是目前支持和应用最广泛的一种标记扩展工具。例如,一个用于描述MARC元数据的XML文档的DTD可以定义如下:
<!DOCTYPE mare [
<!ELEMENT marc (record) *>
<!ATTLIST mare TYPE (CN |US| UN11) # REQUIRED>
<!ELEMENT record (datafield) *>
<!ATTLIST record
type CDATA # REQURED
info CDATA # REQUIRED>
<!ELEMENT,datafield (subdatafield) *>
<!ATTLIST datafield
tag CDATA # REQUIRED
ind1 CDATA # IMPLIED
ind2 CDATA # IMPLIED>
<!ELEMENT subdatafield (# PCDATA)>
<!ATTLIST subfield
code CDATA # REQUIRED>
]>
上例中各个标记和属性的作用如下:
<MARC>:用于标记内容的开始和结束,属性“type”用于标记MARC类型,如CNMARC,USMARC,UNIMARC。
<RECORD>:用于标记MARC记录的24byte定长头标区,属性有“type”和“info”。
<DATAFIELD>:MARC记录数据字段区的数据字段标记,对应MARC记录中每个字段的内容,属性“tag”、“ind1”和“ind2”分别代表字段标识、第一和第二指示符。
<SUBDATAFIELD>:MARC记录数据字段区中数据字段的子字段标记,属性“code”为子字段标识。
通过该例,我们可以看到DTD较好地完成了XML的标记扩展(即元数据描述)的任务,目前在Internet上已有大量使用DTD描述的元数据存在。但是DTD提出较早,人们在使用过程中也发现它有很多的不足之处。其主要特点如下:
①难以理解和书写。由于采用的是不同于XML的名为EBNF的语法,因为需要先了解EBNF,这对于人们的阅读和书写都带来了困难。
②难以使用程序进行元数据的自动处理。由于使用EBNF语法,这给DTD的自动处理也带来了麻烦。通常情况下,我们需要对DTD进行验证,这时使用DOM就不可能对使用EBNF语法书写的DTD进行分析,而必须使用专门的分析程序进行分析验证。
③DTD不支持数据类型。DTD只支持包括文档类型在内的少数几种数据类型,这意味着在实际使用过程中经常需要进行类型的转换才能达到预想的效果。
④DTD不支持Namespaces。由于必须把所有的元数据放在一个DTD文件中,如果需要对已有的DTD进行扩充则只能在原文件的基础上进行重写,这对于元数据的维护和扩充都十分不方便。
总之,DTD在简单的文档结构定义方面是较出色的,如果考虑到XML,是源自同样使用DTD的SGML的话,理解在XML1.0中选择了DTD就不难了。但如果我们考虑到XML的用途现在已不仅局限于文档处理,那么DTD的这些缺点就变得日趋严重。因此W3C(World Wide Web Consortium)在看到了DTD的诸多问题之后,提出了一系列用来代替DTD的建议(Recommendation,即正式标准),包括RDF、XML-Data、DCD、XML Schema等,其
3 RDF
RDF是W3C在1999年2月颁布的一个关于元数据的建议,它主要解决如何采用XML标准语法无二义性地描述资源对象的问题,使得所描述资源的元数据信息成为机器可理解的信息。RDF不仅可以象DTD一样允许设计者定义对象,并可以加入属性以对对象进行描述和定义,还可以作出有关对象的复杂的陈述,例如申明资源之间的关系等。RDF的基本对象类型有:资源(Resources)、属性(Properties)、陈述(Statements)。每一个资源都有属性,每个资源通过唯一资源标识符URI来标识,它的属性由属性类型来作标识,每一个属性类型都有对应的属性值。属性类型表示出这些属性值与资源之间的关系。在RDF中,属性值要么是一些被认为具有原子性的事物(如字符中或数字符),要么是其他的资源,而这些资源本身又拥有自身的属性。所有指向同一资源的陈述的集合就是描述。以前面所描述的MARC元数据为例,使用RDF可以定义如下:
<?xml version=‘1.0’?>
<rdf:RDF
xmlns:rdf=“httP://www.w3.org/1999/02/22 rdf—syntax—ns#”
xmlns:rdfs=“http://=www.w3.org/TR/1999/ PR—rdf—schema—19990303#”
xmlns:dc=“http://purl.org/dc#”
xmlns:marc=“http://libsys2000.nju.edu.cn/marc #”>
<rdf:Description ID=“MARCTYPE”>
<rdf:type rdf:resource=“http://www.w3.org/ 1999/02/22—rdf—syntax—ns#Property”/>
<rdfs:label>MARCTYPE</rdfs:label>
<rdfs:is DefinedBY   《基于XML的三个常用元数据描述工具的评价与比较》
本文链接地址:http://www.oyaya.net/fanwen/view/61438.html
1 引言
XML是继HTML之后的又一种WEB标记语言,它为用户提供了灵活的标记扩展机制,使得不同内容的资源能以格式良好的自定义的标记元素来表现。元数据是描述信息资源或数据等对象的数据,主要用来识别、评价、追踪资源,以及方便对资源的管理、发现、查找和交换。随着计算机网络的发展,特别是Internet的普及,网络环境下信息的描述和处理成为一个重要的问题,相应地网络环境下的元数据问题也成为一个研究的热点。DTD和XML Schema是XML中常用的进行标记扩展的工具,RDF是专用的元数据描述工具,网络环境下的元数据描述通常就是借助这几个工具,利用XML的标记可扩展性来完成。在这三个工具中,DTD随着XML1.0最早被提出,伴随着XML应用的普及和人们对DTD认识的加深,又进一步提出了RDF和更有发展潜力的XML Schema。
2 DTD
DTD作为XML1.0规范的重要组成部分,它使用EBNF(Extended Backus Naur Form)语法完成XML文档结构的定义,即XML文档中标记的定义。一个XML文档只能对应一个DTD,一个DTD由一系列标记定义组成,包括元素定义(element declaration)、属性定义(attribate declaration)、实体定义(entity declaration)、注释定义(notation declaration),是目前支持和应用最广泛的一种标记扩展工具。例如,一个用于描述MARC元数据的XML文档的DTD可以定义如下:
<!DOCTYPE mare [
<!ELEMENT marc (record) *>
<!ATTLIST mare TYPE (CN |US| UN11) # REQUIRED>
<!ELEMENT record (datafield) *>
<!ATTLIST record
type CDATA # REQURED
info CDATA # REQUIRED>
<!ELEMENT,datafield (subdatafield) *>
<!ATTLIST datafield
tag CDATA # REQUIRED
ind1 CDATA # IMPLIED
ind2 CDATA # IMPLIED>
<!ELEMENT subdatafield (# PCDATA)>
<!ATTLIST subfield
code CDATA # REQUIRED>
]>
上例中各个标记和属性的作用如下:
<MARC>:用于标记内容的开始和结束,属性“type”用于标记MARC类型,如CNMARC,USMARC,UNIMARC。
<RECORD>:用于标记MARC记录的24byte定长头标区,属性有“type”和“info”。
<DATAFIELD>:MARC记录数据字段区的数据字段标记,对应MARC记录中每个字段的内容,属性“tag”、“ind1”和“ind2”分别代表字段标识、第一和第二指示符。
<SUBDATAFIELD>:MARC记录数据字段区中数据字段的子字段标记,属性“code”为子字段标识。
通过该例,我们可以看到DTD较好地完成了XML的标记扩展(即元数据描述)的任务,目前在Internet上已有大量使用DTD描述的元数据存在。但是DTD提出较早,人们在使用过程中也发现它有很多的不足之处。其主要特点如下:
①难以理解和书写。由于采用的是不同于XML的名为EBNF的语法,因为需要先了解EBNF,这对于人们的阅读和书写都带来了困难。
②难以使用程序进行元数据的自动处理。由于使用EBNF语法,这给DTD的自动处理也带来了麻烦。通常情况下,我们需要对DTD进行验证,这时使用DOM就不可能对使用EBNF语法书写的DTD进行分析,而必须使用专门的分析程序进行分析验证。
③DTD不支持数据类型。DTD只支持包括文档类型在内的少数几种数据类型,这意味着在实际使用过程中经常需要进行类型的转换才能达到预想的效果。
④DTD不支持Namespaces。由于必须把所有的元数据放在一个DTD文件中,如果需要对已有的DTD进行扩充则只能在原文件的基础上进行重写,这对于元数据的维护和扩充都十分不方便。
总之,DTD在简单的文档结构定义方面是较出色的,如果考虑到XML,是源自同样使用DTD的SGML的话,理解在XML1.0中选择了DTD就不难了。但如果我们考虑到XML的用途现在已不仅局限于文档处理,那么DTD的这些缺点就变得日趋严重。因此W3C(World Wide Web Consortium)在看到了DTD的诸多问题之后,提出了一系列用来代替DTD的建议(Recommendation,即正式标准),包括RDF、XML-Data、DCD、XML Schema等,其
中以RDF和XML Schema的影响较大.
3 RDF
RDF是W3C在1999年2月颁布的一个关于元数据的建议,它主要解决如何采用XML标准语法无二义性地描述资源对象的问题,使得所描述资源的元数据信息成为机器可理解的信息。RDF不仅可以象DTD一样允许设计者定义对象,并可以加入属性以对对象进行描述和定义,还可以作出有关对象的复杂的陈述,例如申明资源之间的关系等。RDF的基本对象类型有:资源(Resources)、属性(Properties)、陈述(Statements)。每一个资源都有属性,每个资源通过唯一资源标识符URI来标识,它的属性由属性类型来作标识,每一个属性类型都有对应的属性值。属性类型表示出这些属性值与资源之间的关系。在RDF中,属性值要么是一些被认为具有原子性的事物(如字符中或数字符),要么是其他的资源,而这些资源本身又拥有自身的属性。所有指向同一资源的陈述的集合就是描述。以前面所描述的MARC元数据为例,使用RDF可以定义如下:
<?xml version=‘1.0’?>
<rdf:RDF
xmlns:rdf=“httP://www.w3.org/1999/02/22 rdf—syntax—ns#”
xmlns:rdfs=“http://=www.w3.org/TR/1999/ PR—rdf—schema—19990303#”
xmlns:dc=“http://purl.org/dc#”
xmlns:marc=“http://libsys2000.nju.edu.cn/marc #”>
<rdf:Description ID=“MARCTYPE”>
<rdf:type rdf:resource=“http://www.w3.org/ 1999/02/22—rdf—syntax—ns#Property”/>
<rdfs:label>MARCTYPE</rdfs:label>
<rdfs:is DefinedBY   《基于XML的三个常用元数据描述工具的评价与比较》