【Semantic Web】从G. Antoniou等人视角看语义网(二)资源描述框架:RDF

学习笔记:G. Antoniou, Paul Groth et al. A Semantic Primer,Third Edition.

引言

      目前,HTML作为编辑网页的标准语言,它允许任何人发布一个文档,并且这个文档可以被万维网上的其他浏览器正确呈现。其拥有三个组成元素:语法、数据模型及语义

  1. 语法制定了如何撰写数据;
  2. 数据模型指明数据的结构或组织形式;
  3. 语义指明如何解释数据。

      在语义网技术中,RDF(资源描述框架)恰好提供了类似HTML一样的领域无关(domain independent)的数据模型,其基础构件是一个实体 - 属性 - 取值的三元组,称之为声明(statement)。通常所说的RDF一般泛指一下三个部分:

  • RDF——数据模型
  • RDFs——语义
  • Turtle/RDFa/RDF-XML——语法

RDF数据模型

资源

      我们可以将资源看做是一个对象,我们希望谈论的任何一个“事物”。比如,资源可以是作者、学生、公寓、酒店、中国、查询,等等。每一个资源应当有一个唯一标识符,URL被认为是一种良好的解决方案。

属性

      属性也是资源,将其看做是一类特殊资源,它描述了资源间的关系。比如:”friend of”、”written by”。和一般资源一样,属性也由URL标识。

声明

      声明断言了资源的属性。一个声明是一个实体 - 属性 - 取值的三元组,由一个资源、一个属性、一个属性取值构成。属性值要么是个资源,要么是一串文字(literal)。文字是原子值,如数字、字符串、日期等。实体可以使用“主语”一次来指称,属性可以使用“谓语”一次指称,属性值则可以使用“宾语”一次指称。
      举个简单的例子,对于声明:Baron Way Building is located in Amsterdam. 我们可以按如下书写(利用URL来标识资源):
      <http://www.semanticwebprimer.org/ontology/apartments.ttl#BaronWayBuilding>
      <http://dbpedia.org/ontology/location>
      <http://dbpedia.org/resource/Amsterdam>.

      图可以用来图形化地表示一个声明,在这个图中,带标签的节点通过带标签的边相连。边是有向的,从声明的主语到声明的宾语,声明的属性被标记在边上。如下图所示:
这里写图片描述

RDF语法

      RDF标准语法包括Turtle(Terse RDF Triple Language)、RDF/XML、RDFa.

Turtle语法

      语法简述:URL包含于尖括号中。一个声明的主语、属性、宾语依次出现,由句号结尾。如下例子所示:
      <http://www.semanticwebprimer.org/ontology/apartments.ttl#BaronWayBuilding>
      <http://dbpedia.org/ontology/location>
      <http://dbpedia.org/resource/Amsterdam>.
      
      同时,Turtle还允许文字、引入@prefix来重用命名空间、省略重复主语等,这里不再具体描述。下例是一个重复命名空间的例子:
      @prefix swp: <http://www.semanticwebprimer.org/ontology/apartments.ttl#>.
      @prefix dbpedia: <http://dbpedia.org/resource/>.
      @prefix dbpedia-owl: <http://dbpedia.org/ontology/>.
      swp:BaronWayBuilding dbpedia-owl:location dbpedia:Amsterdam.

RDF/XML语法

      RDF/XML语法:主语在一个rdf:Description元素中通过rdf:about定义,与主语关联的谓语和宾语也包含在rdf:Description元素中,命名空间可以通过XML命名空间结构(xmlns:)被使用,所有RDF/XML必须被包含在跟一个rdf:RDF元素中。

RDFa语法

      RDFa:在HTML标签的属性中嵌入RDF。

例子下载

      RDF/XML语法示例和RDFa语法示例请点击这里进行下载(因为字符“<”为markdown编辑器预定义字符,示例不便于在此直接给出,本想上传至CSDN免费提供下载,但目前CSDN资源上传时指定积分数至少需要2,请读者朋友结合自己实际情况决定是否下载)。

RDFs:添加语义

      RDF是一种领域无关的通用语言,允许用户使用自己的词汇表来描述资源。为了指明语义,需要通过RDFs中定义的一组基本的领域无关的结构来定义其词汇表的含义。

类和属性

      我们将一个类看成元素的集合或者抽象。属于一个类的个体对象成为该类的一个实例(instance)。RDF提供一个特殊属性rdf:type来定义实例和类之间联系。比如house、apartment都属于building类。
      对于一个无意义声明:“Beijing has number of bedrooms 3.”。 城市不能拥有房间,这叫做限制了属性的定义域(domain)。对于另外一个无意义声明:“BaronWayApartment rents Mike.”。房子不能租人,即对“rents”属性限制了值域(range)。

类层次和继承

      类似于面向对象编程语言,在RDFs中,类也存在着继承关系,并且其允许一个类有多个超类(superclass)。如下图所示:
这里写图片描述
      RDFs中类、继承、属性和面向对象编程中的一个显著不同是:在面向对象编程中,一个对象类定义了可以用于它的属性;但是在RDFs中,属性是全局定义的,换句话说,属性不会被封装在类的定义当中。

属性层次

      举个例子,“rents”可以看做是“resident at”的子属性(subproperty)。如果一个人p租了房子r,则p也居住在r(当然这里不能钻牛角尖,举例只是为了说明)。相反则不成立。抽象来说,属性P是属性Q的子属性,当且仅当P(x,y)成立时Q(x,y)总成立。

RDF和RDFs分层

      下面使用一个简单的例子(例子图来源于网络)来说明RDF和RDFs涉及的不同分层:“Discrete mathmatics is taught by David Billington.”。
这里写图片描述
      可以看到,虚线以上的圆圈是类,虚线以下的圆圈是实例(instance)。往往通过RDF表示的一个声明,在语义层面需要添加相当的解释(对比虚线上下两个部分)用于支撑语义操作(如信息聚类、推理等)。

RDFs:语言

      RDFs的建模原语使用资源和属性定义,如下定义RDFs建模原语:

核心类

      核心类包括:

  • rdfs:Resource,所有资源的类。
  • rdfs:Class,所有类的类。
  • rdfs:Literal,所有文字(字符串)的类。
  • rdf:Property,所有属性的类。
  • rdf:Statement,所有具体化声明的类。

      注意,rdfs:Class是rdfs:Resource的一个子类,因为所有的类都是资源,但同时,rdfs:Resource是rdfs:Class的一个实例,因为rdfs:Resource也是一个类,它是所有资源的类。每个类都是rdfs:Class的实例。(这里可能会比较绕,但是明白每一个原语的含义之后也就变得容易了)

定义联系的核心属性

      用于定义联系的核心属性包括:

  • rdf:type,将一个资源关联到它的类,即说明这个资源是某个类的实例。
  • rdfs:subClassOf,将一个类关联到它的超类。
  • rdfs:subPropertyOf,将一个属性关联到它的超属性。

限制属性的核心属性

      用来限制属性的核心属性包括:

  • rdfs:domain,指定一个属性P的定义域,声明任何拥有该属性的资源(主语)是定义域类的一个实例。
  • rdfs:range,指定一个属性的值域,声明一个属性的取值是值域类的实例。

      如下是一个示例,说明“拥有地址属性的资源必须为Unit类的实例,比如house,apartment等,地址属性的取值必须是Literal类的实例,比如字符串”:
      swp:address rdfs:domain swp:Unit
      swp:address rdfs:range swp:Literal

对具体化有用的属性

      如下表示一些对具体化有用的属性:

  • rdf:subject,将一个具体化声明关联到它的主语。
  • rdf:predicate,将一个具体化声明关联到它的谓语。
  • rdf:object,将一个具体化声明关联到它的宾语。

容器类

      RDF允许使用一个标准的方式表达容器,包括包、序列、选择。

  • rdf:Bag,包的类。
  • rdf:Seq,序列的类。
  • rdf:Alt,选择的类。
  • rdfs:Container,所有容器的超类,包括上述三种。

效用属性

      一个资源可以在万维网上的许多地方被定义和描述。

  • rdfs:seeAlso,将一个资源关联到另一个解释它的资源。
  • rdfs:isDefinedBy,是rdfs:seeAlso的一个子属性,将一个资源关联到它的定义,一般来说是一个RDFs。
  • rdfs:comment,注释,通常是一个长文本。
  • rdfs:label,关联到一个人类友好标签(名字)。

本体示例

      读者可能会对上述原语中的命名空间应该用rdf还是rdfs感到疑惑,其实这是利用@prefix定义命名空间(URL)得到的,或许下面的示例可以帮助理解。
      现提供一个住房供给领域的概念模型,即一个本体,点击这里进行下载(此资源和前文RDF语法资源为同一个,不必重复下载)。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值