RDF和XML区别

来源:百度文库 编辑:神马文学网 时间:2024/04/29 02:06:19
今天,越来越多的Web应用需要通过交换数据来实现互操作。XML的出现使实现Web应用之间的语法互操作成为可能,而RDF则可以借助XML来实现Web应用之间的语义互操作。那么XML和RDF是如何来完成它们各自职能的呢?

 

引言——语义

语义到底是指什么?这是一个比较难回答的问题,就像有人问起Ontology到底指什么一样。如果读者已经对Semantic Web有一些了解的话,就会知道语义是一个正在改变我们所熟悉的Internet的一个关键元素,甚至是提高全球经济发展效率不可或缺的重要元素[1]。本文并不是要给出语义的一个精确解释,因为这确实很困难,尤其当这个概念被不同领域所引用的时候,它的含义往往存在着一些差异。讨论语义的目的是希望我们能够更好地理解XML和RDF到底在数据表示和交换中起到什么作用,更清楚地看到XML和RDF之间的区别,各自的优点和不足。我们可以将语义简单地看作是数据(符号)所代表的概念的含义,以及这些含义之间的关系,是对数据的抽象或者更高层次的逻辑表示。对于计算机领域来说,语义一般是指用户对于那些用来描述现实世界的计算机表示的解释,即用户用来联系计算机表示和现实世界的途径。或许这听起来还是不够通俗,让我们通过一个的例子来进一步说明语义的含义:以关系数据库为例,数据库中的数据可以简单的认为是存储在一张张表中,例如我们将学生的基本信息存入到一张"学生"表中。这时,对于表中的每一列数据所构成的集合,其所隐含的意思就是该列数据所要表达的对应的概念,这个概念往往体现为设计人员对该列数据对应的属性所给定的名称,例如"姓名"、"性别"等等。这些属性之间的关系就相当于数据对应的概念之间所存在的关系,它们都是学生这个实体的属性。数据库表中的属性和关系都可以看作数据的语义信息。当然,语义并不是这么简单,它代表的关系可能更为复杂,甚至超过E-R模型等数据库建模语言的表达范围。其实语义并不是引入到IT领域的新概念,数据库长期以来已经在用语义来区分模式和数据,并作为数据库建模、查询和事务管理技术的一部分,语义是保证数据管理系统达到可扩展性、高效性和健壮性要求的一个关键元素。

 

数据表示中的语法与语义

在了解了什么是语义之后,让我们来进一步讨论语法和语义在数据描述和交换中的作用。事实上,数据交换所要达到的真正目的是得到所交换数据所代表的含义,实现数据在含义上的交换,而不是单纯的数据本身的交换,这同人与人之间的信息交换类似。对于人类来说,我们可以通过相同的语言进行交互,交互双方以他们所共同遵守的语言组织规律(相当于语法)对所要表达的信息含义(相当于语义)进行组织才能使对方理解。人与人之间信息的传达并不需要非常严格的语法,即便是对方在语言表达上存在着一定的错误,我们仍然可能理解对方所要表达的意思。但对于计算机之间的信息交换来说,语法与语义缺一不可。数据正确的语法表达是保证计算机之间能够进行信息交换和处理的前提,而数据语义的描述则是数据可被计算机正确理解和推理的基础。

对于今天的大部分计算机应用来说,其所产生的信息并没有采用统一的语法描述格式,信息在语法描述上存在着千差万别,这就造成了信息表达上的语法异构;而对于信息所代表含义(即语义)的解释,则是以硬编码的方式写入到了应用中,这种所谓程序式语义(procedural semantics)[2]的信息语义建模方法,分离了信息的语义和信息的语法描述,将对信息的理解固化到了特定的代码逻辑中。因此程序式语义有很大的局限,既不具备扩展性也不具备通用性,难于维护和集成。与程序式语义的信息建模方法相反,声明式的语义建模方法[2]通过将数据的语义描述与特定应用逻辑的分离,将数据的语义描述纳入到数据层,将数据语义的解释留给了通用的形式化系统(例如一阶逻辑,描述逻辑,Datalog等推理系统),而与具体的数据和应用逻辑无关,具有非常好的适应性、可重用性。数据基于语义的描述就是以声明式的语义建模方法对数据的语义进行描述。通过实现数据的语义描述可以大大减轻应用处理数据的压力。

 

XML——Web数据的语法描述标准

信息在语法描述上的差异,我们往往可以通过必要的数据格式转化来将信息转化为目标应用能够处理的语法格式。当然,更为理想的情况应该是所有的信息都采用同样的语法来描述,XML的出现使得不同类型的数据表示成同一格式成为了可能。XML已经成为了Web上数据表示和交换的事实标准,是应用之间或者机器之间共享数据的一种有效方式。XML及其相关技术的发展极大地促进了信息表达和交换过程中语法描述上的统一,越来越多的应用开始选用XML作为其数据、配置信息、消息以及服务的语法描述模式。迄今为止,XML已经成为了Web上最理想的数据表达方式。XML的可扩展性是XML区别其他标记语言的最基本特征。XML的核心在于以一种标准化的方式来建立数据表示的结构,而将具体标记的定义留给了用户。XML的可扩展性使XML可以满足各种不同领域数据描述的需要,并可以对计算机之间交换的任何数据进行编码。

 

XML是否已经足够

当我们刚刚接触XML时,我们可能会因为XML的表现能力,可扩展性和光明的前景而激动不已,可是随之而来的问题是:两个用XML表示的消息或数据,如何才能实现交换?是不是我们只要采用了XML格式,二者的交换就万事大吉了?。XML除了给我们提供了一个可以被应用自动化读取的格式外,并不能进一步促进数据交换的自动化程度,我们还需要通过专用的程序来对XML数据进行解释,以获取目标应用能够处理的数据部分。注意,这里的解释并不同于对XML文档的解析。当然,对XML文档解释的前提是首先完成对XML文档的解析。尽管XML已经拥有了各种版本的解析器,但解析器的真正作用是一个XML的读取和处理器,并不是一个解释器。因此我们必须采用特定的应用程序来对XML的内容解释,很显然这些程序之间并不存在互换性和通用性。

尽管XML的灵活性使得用户可以快速、容易的描述任意的内容,但由于XML并不能解释它标记的含义,大多数处理应用要求这些标记集合能够满足某种标准或者双方的约定。XML允许用户通过XML模式来定义这些标记的集合。XML模式(诸如XML DTD和XML Schema等)为XML文档提供了一种约束机制,用来限定XML文档所用到的标记和这些标记之间的结构关系。XML模式为XML文档提供了一定的语义描述能力,然而XML模式的语义仍然是隐含的。XML模式的元素含义要么由用户根据元素的名称(通过自然语言描述)去推断,要么通过另外一个文档来描述,XML模式并不能对其所含有的语义进行任何解释。

为了实现XML文档的解释或者转换,用户必须将这些语义编码到工具中,而将数据的最终解释留给了特定的应用。不仅如此,由于XML模式只能对XML的语法合法性进行验证,而不能区分XML属性和元素在含义上的不同,因此对于同样的信息内容,我们可以将其映射为多种不同的XML结构。例如我们要说明某本书(Book)的作者(Author)是哪个作家(Name),可以得到例1中的多种XML Schema的定义。

例1 对于同一信息的多个XML Schema的定义

XML实例  对应的DTD定义  

   
   
 



 
  
   
  

 



  
   
   
  

  
 



 
  
 





 
  
   A_id
  

 



 
   
   
  

 



  
   
    
  
   
  
 
 
 

  
   
    
  
 
 
 




 B_id
 
  
   A_id
  

 



 
 
   
   
 
    
   
  
    
       
   

  

  

   
 
 

   

  
 


 


这种数据表达上的不唯一性意味着,相同的XML文档可以存在多种不同的解释,而相同的应用也可能对不同的XML作出同样的解释。这种解释上的多对多关系,使得我们在交换XML文档之前,必须对其所使用到的标记的名称、组织格式和含义进行约定,任何对该XML文档的单方面扩展都可能会给数据交换过程带来更多的麻烦,甚至导致失败。然而,这种通过约定来实现信息共享的方式只适用于两两之间的信息交换,却不能满足Web上多个用户或团体大范围的信息共享。假设我们要集成n个应用所产生的XML信息,即便是要集成部分的含义完全一致,但由于它们来自不同的应用,各自的XML模式描述很可能存在着不同(既包括标记命名的不同也包括结构组织上的不一致),所以我们仍然不得不做大量的模式之间的转换,而目的只是为了保证它们在语法的描述结果上保持一致。当然我们可以通过采用一个统一的全局的XML模式来描述所有相关的XML信息,但这显然是不现实的,即便是在一个企业内部,我们也很难建立一个稳定的标准化的企业数据表示模式。

 

RDF(Resource Description Framework)——Web数据的语义描述模型

XML所存在的问题是因为XML不具备语义描述能力。为此,W3C推荐以RDF(resource Description Framework)标准来解决XML的语义局限。RDF提出了一个简单的模型用来表示任意类型的数据。这个数据类型由节点和节点之间带有标记的连接弧所组成。节点用来表示Web上的资源,弧用来表示这些资源的属性。因此,这个数据模型可以方便的描述对象(或者资源)以及它们之间关系。RDF的数据模型实质上是一种二元关系的表达,由于任何复杂的关系都可以分解为多个简单的二元关系,因此RDF的数据模型可以作为其他任何复杂关系模型的基础模型。

RDF和XML是互为补充的。首先,RDF希望以一种标准化,互操作的方式来规范XML的语义。XML文档可以通过简单的方式实现对RDF的引用。如例2所示。

例2 XML对RDF的引用示例


   xmlns="http://www.w3.org/TR/WD-rdf-syntax#"               
   about="http://www.w3.org/test/page"       
    s:Author ="http://www.w3.org/staff/Ora"/>


借助RDF,表达同一事实的XML描述就可以被转化为统一的RDF陈述。对于例1,它们可以表示为下面的RDF模型:


通过在XML中引用RDF,可以将XML的解析过程与解释过程相结合。也就是说,RDF可以帮助解析器在阅读XML的同时,获得XML所要表达的主题和对象,并可以根据它们的关系进行推理,从而做出基于语义的判断。XML的使用可以提高Web数据基于关键词检索的精度,而RDF与XML的结合则可以将Web数据基于关键词的检索更容易地推进到基于对象的检索。

其次,由于RDF是以一种建模的方式来描述数据语义的,这使得RDF可以不受具体语法表示的限制。但是RDF仍然需要一种合适的语法格式来实现RDF在Web上的应用。虽然RDF(模型)既可以用Notation3[3]来表示,也可以用XML来表示。但是,由于XML已经成为被广泛支持的Web数据表示标准,便于应用的读取,因此将RDF序列化为XML表示可以使RDF获得更好的应用可处理特性,并使得RDF数据可以像XML数据一样的容易使用、传输和存储。

因此,RDF是定制XML的良伴,而不只是对某个特定类型数据的规范表示[4],XML和RDF的结合,不仅可以实现数据基于语义的描述,也充分发挥了XML与RDF的各自优点,便于Web数据的检索和相关知识的发现。

 

 

RDF是否已经足够

与XML中的标记(tags)类似,RDF中的属性(properties)集也是没有任何限制的。也就是说我们既可以张三也可以用张三 来表示某个作品的创作者。这就是我们通常所说的同义词现象,即同一个概念可以以不同的词汇来描述。在实际应用中这个词汇并不一定要和词典中的词汇有一定的对应关系,例如英文语法中常见的缩写就属于此种情况。与同义词现象相对应的另一个问题就是一词多意,即同一个词汇在不同的应用背景下可以表示不同的意思。RDF的模型不具备解决这两个问题的能力,而RDF Schema虽然可以为RDF资源的的属性和类型提供词汇表,但是基于RDF的数据语义描述仍然可能存在语义冲突。为了消解语义冲突,我们在描述数据语义的时候可以通过引用Ontology的相关技术,对语义描述结果作进一步的约束。幸运的是,RDF(Schema)在提供了简单的机器可理解语义模型的同时,为领域化的Ontology语言(OIL(Ontology Interchange Language),OWL(Web Ontology Language))提供了建模基础,并使得基于RDF的应用可以方便地与这些Ontology语言所生成的Ontology进行合并。RDF的这一特性使得基于RDF的语义描述结果具备了可以和更多的领域知识进行交互的能力,也使基于XML和RDF的Web数据描述具备了良好的生命力。