学海荡舟手机网

主页 > 实用文摘 > 教育文摘_02 > > 详细内容

基于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等,其中以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  rdf:resource=“”/>
  </rdf:description>
  <rdf:description  id=“record”>
  <rdf:type  rdf:resource=“http://www.w3.org/  1999/02/22—rdf—syntax—ns  #  property”/>
  <fdfs:label>record</rdfs:label>
  <rdfs:isdefinedby  rdf:resource=“”/>
  </rdf:description>
  <rdf:description  id=“datafield”>
  <rdf:type  rdf:resource=“http://www.w3.org/  1999/02/22—rdf—syntax—ns  #  property”/>
  <rdfs:label>datafield</rdfs:label>
  <rdfs:isdefinedby  rdf:resource=“”/>
  </rdf:description>
  <rad:description  id=“datafield”>
  <rdf:type  rdf:resource=“http://www.w3.org/  1999/02/22—rdf—syntax—ns  #  property”/>
  <rdfs:label>subdatafield</rdfs:labcl>
  <rdfs:is  definedby  rdf:resource=“”/>
  </rdf:description>
  通过上例,我们可以看到针对dtd种种不足而提出的rdf建议克服了dtd的主要缺点,具有以下几个优点:
  ①易控制性。由于rdf使用简单的资源——属性——值三元组,所以很容易控制,即使是数量很大的时候。
  ②包容性。在rdf这种元数据模型中既可以定义自己的词汇集,也可以嵌入dc元数据或别的类型的元数据。
  ③可交换性。由于xml是目前最具发展前景的标记语言,使用xml作为描述语法的rdf在未来也就可以成为一种可以携带多种元数据来往于网络上的框架工具。
  ④易综合性。在rdf中资源的属性是资源,属性值以及关于资源的陈述也可以是资源,都可以用rdf进行描述,这样可以很容易地将多个描述综合,以达到发现知识的目的。
  总之,rdf是一个公认的极佳的强有力的元数据描述工具,这也部分地实现了它结束在元数据描述领域一切努力的雄心。但是,rdf的这种强有力也导致了它严重的缺陷,就是在一些日常应用中显得太复杂了,设计者不仅需要定义对象和属性,而且需要定义复杂的陈述。一个复杂的标准是很难在短时间内被广大网络应用开发人员接受、掌握和应用的,因此这个复杂的标准也就很难在网络上推广和被接受。就象复杂的sgml很少有人使用,而对其进行简化后形成的xml则迅速被接受一样,rdf在网络上尤其是internet上是很难有市场的,而只会在一些特定的领域得到应用。internet上的元数据描述需要的应该是一种简单而且可靠的解决方案。
      4 xml  schema
  schema是一种描述结构的模型,它是借用数据库中一种描述相关表格内容的机制,为一类文件建立一个模式。从这一层意义上讲,dtd实际上也是一种schema,只不过这种schema使用了古怪的ebnf语法,因而带来了诸多的不便。rdf  schema可能是由于rdf的原因,w3c最终只推出了rdf  schema的草案,一直未能更进一步推出正式的建议(即标准)。xml  schema是今年5月由w3c推荐的用于描述xml文件结构的一个框架,它的语法与xml相同,但schema文件所描述的是引用它的xml文件中的元素和属性的具体类型。以前面所描述的marc元数据定义为例,使用xml  schema可以定义如下:
  <xsd:schema  xmlns:xsd=“http://www.w3.org/2001/  xmlschema”>
  <xsd:element  name=“mare”type=“marc”/>
  <xsd:complextype  name=“marc”>
  <xsd:sequence>
  <xsd:element  name=“recurd”  minoccurs=“0”  maxoccurs=“unbounded”>
  <xsd:complextype>
  <xsd:sequence>
  <xsd:element  name=“datafield”  type=“datafield”minoccurs=  “0”  maxoccurs=“unbounded”  />
  </xsd:sequence>
  <xsd:attribute  name=“rectype”  type=“xsd:string”/>
  <xsd:attribute  name=“recinfo”  type=“xsd:  string”/>
  </xsd:complextype>
  </xsd:element>
  </xsd:sequence>
  <xsd:attribute  name=“marctype”  type=  “xsd:  string”/>
  </xsd:complextype>
  <xsd:complextype  name=“datafield”>
  <xsd:sequence>
  <xsd:element  name=“subdatafield”type=‘xsd:  string”minoccurs=“0”maxoccurs=“unbounded”content  =“textonly”>
  <xds:attribute  name=“code”  type=“xsd:  string”/>
  </xsd:element>
  </xsd:sequence>
  <xsd:attribute  name=“tag”  type=“xsd:string”/>
  <xsd:attribute  name=“ind1”type=“xsd:string”/>
  <xsd:attribute  name=“ind2”type=“xsd:string”/>
  </xsd:complextype>
  </xsd:schema>
  通过上例,我们可以看到xml  schema本身就是一个xml文件,但不同的是,schema文件所描述的是引用它的xml文件中的元素和属性的具体类型。相比dtd,xml  schema具有以下优点:
  ①一致性。schema使得对xml的定义不必再利用一种特定的形式化的语言,而是直接借助xml自身的特性,利用xml的基本语法规则采定义xml文档的结构,使得xml达到了从内到外的完美统一,也为xml的进一步发展奠定了坚实的基础。
  ②扩展性。schema对dtd进行了扩充,引入了数据类型、命名空间,从而使其具备较强的可扩展性。
  ③互换性。利用schema,我们能够书写xml文档以及验证文档的合法性。另外,通过特定的映射机制,还可以将不同的schema进行转换,以实现更高层次的数据交换。
  ④规范性。同dtd一样,xml  schema也提供了一套完整的机制以约束xml文档中置标的使用,但相比之下,后者基于xml,更具有规范性。schema利用元素的内容和属性来定义xml文档的整体结构,如哪些元素可以出现在文档中、元素间的关系是什么、每个元素有哪些内容和属性、以及元素出现的顺序和次数等等,都可一目了然。
      5 综述
  田于xml  schema的种种优点,现在schema取代dtd已成大势所趋。在这种情况下,国际上一些知名企业和组织审时度势纷纷在战略上向xml  schema倾斜,提供对xml  schema的支持。其中最为典型的当然要数微软的biztalk和xml.org组织的注册/资源库。更加值得一提的是:微软在其浏览器软件internet  explorer  5.0中率先提供对schema的支持。尽管微软支持的schema也只是过渡性“标准”,但今后肯定还会不断修改。
  虽然我们说xml  schema终将代替dtd,但在短期内dtd还是有着它的优势的,例如广泛的工具支持,广泛的应用经验等。因此,短期内dtd会与xml  schema共存,而rdf则会在一些需要它的强大的元数据描述能力的领域找到它的位置。
【参考文献】
  1 黄伟红,张福炎.基于xml/rdf的marc元数据描述技术.情报学报,2000(4)
  2 程变爱.试论资源描述框架(rdf).现代图书情报技术,2000(6)
  3 xml  schema  part  0:primer.http://www.w3.org/  tr/xmlschema—0/#4q99html.xml
  4 xml  schema  part  1:structures.http://www.w3.org/  tr/xmlschema—1/
  5 xml  schema  part  2:datatypes.http://www.w3.org/  tr/xmlschema—2/
  6 xml  schema  requirements.http://www.w3.org/tr/  note—xml—schema—req
  7 w3c  proposed  recommendation.resource  description  framework  (rdf)  schema  specification.http://www.  w3.org/tr/pr—rdf—schema
  8 w3c  proposed  recommendation,resource  description  framework  (rdf)  model  and  syntax  specification.  http://www.w3.org/tr/1999/pr—rdf—syntax—19990105
  9 张敏,张晓林.元数据(metadata)的发展和相关格式.四川图书馆学报,2000(2)
  10 张伟,苑迎春,等.dtd与schema简介.现代电子技术,2001(6)