语义网的核心是对语义的揭示与表达,而语义又隐藏于一定的网络资源(数据)之中,因此要想实现语义网构想就必须解决资源描述与语义揭示两大问题。XML是Web上数据表示的标准,具有清晰的结构以及强大、灵活的标签定义和数据描述机制,但与语义网的要求相比,还存在着明显的不足。
在语义揭示上,XML的数据语义隐藏于其结构与标签之中,通过标签之间的并列和嵌套表达数据以及数据和数据之间的语义关系。例如:
代码清单4-1
<搜索引擎>
<名称>百度</名称>
<网址>www.baidu.com</网址>
</搜索引擎>
现在假设一个XML处理程序对上述代码进行语义分析,通过标签对<名称>,该程序“理解”了文本“百度”的含义为“名称”,对于文本“百度”和“搜索引擎”之间的关系,则必须通过标签<名称>和<搜索引擎>之间的嵌套来获得。但文本“百度”和“www.baidu.com”之间的关系该如何获得呢?虽然这种隐藏的语义关系对我们而言再简单不过,但对自动处理的程序而言就没那么容易了。
这种隐藏的语义关系不仅不利于机器的“理解和处理”,而且也不能表达确切的语义。例如代码清单3-2,三个不同的XML片段都表达了同一个事实,即“搜索引擎百度的网址为www.baidu.com”。因此标签以及它们的层层嵌套所表达出来的语义是不确定的,在进行处理时容易产生歧义。因此从语义揭示的角度讲,XML只能描述数据的语法,而不能显式地表达数据的语义。
在资源描述上,XML的数据表达方式实际上是一种树形结构。一方面,这种树形结构在描述数据元时缺乏一定的灵活性;另一方面,Web是网状结构,使用树形结构的数据描述方式揭示和反映具有网状结构的网络信息资源,必然会带来语义上的缺失。
因此在资源描述上,语义网必须提供一种更为简单、有效的资源描述的框架或模型。该模型应具有以下几个特点:1)基于XML;2)它只是一个模型或框架,而不是具体的资源描述;3)在该模型或框架下可以方便地描述各类资源,并可显式地揭示它们之间的语义关系;4)结构简单且容易扩展,适用于网状的Web应用。
为此,W3C推出了RDF,并将其作为语义网的核心技术之一。
RDF是资源描述框架(Resource Description Framework)的简称,用于表达资源的元数据信息,如页面标题、作者、摘要、修改时间等。资源描述框架,顾名思义,它只是提供了一个通用的框架或模型,在该框架下,所有的资源都可以得到充分有效的描述。其基本思想是:1)用URI来标识事物;2)将一切可以在Web上标识的事物(具体的或抽象的,存在的或不存的)统称为“资源”;3)用属性(Property)和属性值描述资源。
基于这一理念,RDF可以将一个或多个关于资源的简单陈述(Statement)表示为一个由结点和边构成的有向图(Graph),其中结点代表资源或属性值,边代表属性。下图就是一个典型的RDF有向图,它描述了关于资源http://www.example.com/staffid#0311(下面简单HM)的这样一组陈述:
l HM指的是一个人
l HM的姓名是Hakuna Matata
l HM的邮箱是mailto:[email protected]
l HM的职位是Sales Manager
在该有向图中,http://www.w3.org/1999/02/22-rdf-syntax-ns#type、“http://www.example.com/schemas/person#fullName”、“http://www.example.com/schemas/person#mailbox”、和“http://www.example.com/schemas/person#position”是资源HM的属性,http://www.example.com/schemas/person#Person、Hakuna Matata、mailto:[email protected]和Sales Manager分别为各个属性的属性值。它们都使用URI进行标识。
除了有向图外,RDF还提供了一个基于XML的语法――称为RDF/XML――来保存和交换RDF数据。如果上述有向图采用RDF/XML来描述的话可能是这样:
代码清单4-2
<?xml version="1.0" encoding="GB2312" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:experson="http://www.example.com/schemas/person#">
<experson:Person rdf:about="http://www.example.com/staffid#0311">
<experson:fullName>Hakuna Matata</experson:fullName >
<experson:mailbox rdf:resource="mailto:[email protected]"/>
<experson:position>Sales Managerperson:position>
</experson:Person>
</rdf:RDF>
注意:上述代码定义了两个命名空间,并用简写的形式(标签)表示资源的属性。
实际上,属性和属性值都可以包含URI,也同样是资源。通过URI可以引用任何可以被标识的事物,不管它是抽象的、具体的、存在的还是不存在的,因此RDF可以链接到Web上的任何地方,描述Web上的一切资源。
目前,RDF已经成为W3C的推荐标准,其规范文档及其相应的存取地址为:
l RDF/XML语法规范
http://www.w3.org/TR/rdf-syntax-grammar/
l RDF词汇描述语言1.0:RDF Schema
http://www.w3.org/TR/rdf-schema/
l RDF入门
http://www.w3.org/TR/rdf-primer/
l RDF概念和抽象语法
http://www.w3.org/TR/rdf-concepts/
l RDF语义
http://www.w3.org/TR/rdf-mt/
l RDF测试用例
http://www.w3.org/TR/rdf-testcases/
RDF主要由RDF模型、RDF/XML语法、RDF Schema(RDFS)和RDF语义构成。本章将对RDF模型、RDF/XML语法、RDF Schema以及RDF查询做一个尽可能全面而简单的介绍,RDF语义将在本书第7章的“概念语义”一节进行详细讨论。关于RDF更为权威和详尽的描述,请参阅相关的规范文档。
RDF和XML最本质的区别在于它们的语义表达方式。XML是一种可扩展的标记语言,即标记语言的元语言,其语义全部隐含在文档的标记与结构之中,不能表达机器可理解的语义。RDF则可以看成是一种Web上的知识表示语言,是谓词逻辑的一个特殊形式,它具有形式化的语义即模型论语义,机器可以据此理解它所表达的语义信息。总之,RDF是一个完备的形式化系统。
其次,RDF与XML的模型不同。XML是一种树形结构,应用逻辑中的数据都被转换为树形逻辑,这种固定、树状的逻辑形式不仅缺乏灵活性,而且也会带来一定的语义丢失。RDF实际上是一种二元关系模型,我们知道,任何一种结构都可以被分解为一个或多个二元关系的组合,虽然RDF采用类似于XML的语法,但这并不影响它具有足够的灵活性来描述分布式的、呈网状的Web资源(RDF的二元关系模型可以很容易地扩展为网状结构)。
第三,它们所呈现的资源不同。XML文档中的标签构成了XML树形结构的节点,而各标签之间的层层嵌套则形成了该树形结构的隐藏的边。它们可以是某一应用逻辑中的任意数据,即使不在Web上也可以。而对于RDF而言,节点和边则是使用URI标识的资源。
第四,XML Schema和RDF Schema的含义不同。XML的Schema规定了XML文档的结构,并为XML文档提供一定的语义解释,它是隐含的。而RDF Schema并不会约束一个RDF文档(实际上就是一个XML文档)的结构,它本身就带有语义信息,用于解释RDF中词汇的含义。
最后,RDF数据容易聚合,这是XML数据所无法比拟的。RDF使用URI引用标识资源,其二元关系模型很容易扩展为图模型,因此很容易通过URI引用将RDF数据进行合并。而XML数据由于没有URI引用而很难聚合。
转自:http://blogger.org.cn/blog/more.asp?name=Lee&id=23069