知识图谱本体建模之RDF、RDFS、OWL详解

(一)知识图谱本体建模之RDF、RDFS、OWL详解

1.语义网体系

知识图谱于2012年由Google提出,并不是新概念,而是由语义网络(Semantic Network)衍生而来。语义网络由相互连接的节点和边组成,节点表示概念或者对象,边表示他们之间的关系。RDF,RDFS与OWL都是基于语义网的知识表示框架,在节点和边的取值上做了约束,制定了统一标准,为多源数据的融合提供了便利。RDF,RDFS/OWL 属于语义网技术栈,它们的提出,使得语义网克服了语义网络的缺点。其语义网技术栈如下所示。

知识图谱本体建模之RDF、RDFS、OWL详解

2.RDF 表现形式

RDF(Resource Description Framework),即资源描述框架,其本质是一个数据模型(Data Model)。

具体地,

Resource:页面、图片、视频等任何具有URI标识符的资源。

Description:属性、特征和资源之间的关系。

Framework:模型、语言和这些描述的语法。

它提供了一个统一的标准,用于描述实体/资源。RDF 形式上表示为 SPO 三元组,有时候也称为一条语句(statement),知识图谱中我们也称其为一条知识(subject, predicate, object ),如下图所示,其节点表示实体/资源、属性,边则表示了实体和实体之间的关系以及实体和属性的关系。
知识图谱本体建模之RDF、RDFS、OWL详解

3.RDF序列化方法

若需要对RDF数据进行传输和存储,则需要对RDF数据进行序列化(Serialization)。目前,RDF 序列化的方式主要有:RDF/XML,N-Triples,Turtle,RDFa,JSON-LD等几种。

  • RDF/XML,就是用 XML 的格式来表示 RDF 数据。之所以提出这个方法,是因为 XML 的技术比较成熟,有许多现成的工具来存储和解析XML。然而,对于 RDF 来说,XML 的格式太冗长,也不便于阅读,通常我们不会使用这种方式来处理 RDF 数据。

  • N-Triples,即用多个三元组来表示 RDF数 据集,是最直观的表示方法。在文件中,每一行表示一个三元组,方便机器解析和处理。开放领域知识图谱 DBpedia 通常是用这种格式来发布数据的。

  • Turtle, 应该是使用得最多的一种 RDF 序列化方式了。它比 RDF/XML 紧凑,且可读性比 N-Triples好。

  • RDFa, 即“The Resource Deion Framework in Attributes”,是HTML5 的一个扩展,在不改变任何显示效果的情况下,让网站构建者能够在页面中标记实体,像人物、地点、时间、评论等等。也就是说,将 RDF 数据嵌入到网页中,搜索引擎能够更好的解析非结构化页面,获取一些有用的结构化信息。读者可以去感受一下 RDFa,其直观展示了普通用户看到的页面,浏览器看到的页面和搜索引擎解析出来的结构化信息。

  • JSON-LD,即“JSON for Linking Data”,用键值对的方式来存储 RDF 数据。

    例如,如下所示为关于罗纳尔多知识图谱其N-Triples和Turtle的具体表示:

    Example1 N-Triples:
     
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/chineseName> "罗纳尔多·路易斯·纳萨里奥·德·利马"^^string.
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/career> "足球运动员"^^string.
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/fullName> "Ronaldo Luís Nazário de Lima"^^string.
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/birthDate> "1976-09-18"^^date.
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/height> "180"^^int.
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/weight> "98"^^int.
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/nationality> "巴西"^^string.
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/hasBirthPlace> <http://www.kg.com/place/10086>.
    <http://www.kg.com/place/10086> <http://www.kg.com/ontology/address> "里约热内卢"^^string.
    <http://www.kg.com/place/10086> <http://www.kg.com/ontology/coordinate> "-22.908333, -43.196389"^^string.
    

    用Turtle表示的时候,一般会加上前缀(Prefix)对RDF的IRI进行缩写。

    Example2 Turtle:
     
    @prefix person: <http://www.kg.com/person/> .
    @prefix place: <http://www.kg.com/place/> .
    @prefix : <http://www.kg.com/ontology/> .
     
    person:1 :chineseName "罗纳尔多·路易斯·纳萨里奥·德·利马"^^string.
    person:1 :career "足球运动员"^^string.
    person:1 :fullName "Ronaldo Luís Nazário de Lima"^^string.
    person:1 :birthDate "1976-09-18"^^date.
    person:1 :height "180"^^int. 
    person:1 :weight "98"^^int.
    person:1 :nationality "巴西"^^string. 
    person:1 :hasBirthPlace place:10086.
    place:10086 :address "里约热内卢"^^string.
    place:10086 :address "-22.908333, -43.196389"^^string.
    

4.RDFS —对RDF的补充

RDF的表达能力有限,无法区分类和对象,也无法定义和描述类的关系/属性。RDF是对具体事物的描述,缺乏抽象能力,无法对同一类别的事物进行定义和描述,需要schema的引入。RDFS,即“Resource Deion Framework Schema”模式语言作为RDF的补充解决了RDF表达能力有限的困境。

RDFS里有多个比较重要常用的词汇:

  • rdfs:Class. 用于定义类。

  • rdfs:domain. 用于表示该属性属于哪个类别。

  • rdfs:range. 用于描述该属性的取值类型。

  • rdfs:subClassOf. 用于描述该类的父类。比如,我们可以定义一个运动员类,声明该类是人的子类。

  • rdfs:subProperty. 用于描述该属性的父属性。比如,我们可以定义一个名称属性,声明中文名称和全名是名称的子类。

    RDFS的表现形式和RDF一样,常用的方式主要是RDF/XML,Turtle。

    如下所示,只是针对RDF数据在概念层进行了约束:

    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    @prefix : <http://www.kg.com/ontology/> .
    
    :Person rdf:type rdfs:Class.
    :Place rdf:type rdfs:Class.
    

5.OWL—对RDFS的进一步扩展

通过RDF(S)可以表达一些简单的语义,但在更复杂的场景下,RDF(S)语义表达能力显得太弱,还缺少诸多常用的特征。包括对局部值域的属性定义,类、属性、个体的等价性,不相交类的定义,基数约束,关于属性特征的描述等。因此W3C提出了OWL语言扩展RDF(S),作为语义网上表示本体的推荐语言。OWL可以看作是RDFS的一个扩展,添加了额外的预定义词汇。

OWL相较于RDFS,引入了布尔算子(并、或、补)、递归地构建复杂的类,还提供了表示存在值约束、任意值约束和数量值约束等能力。同时,owl能提供描述属性具有传递性、对称性、函数性等性质。还有两个类等价或者不相交,两个属性等价或者互逆,两个实例相同或者不同,还有枚举类等等。

6.SPARQL

关系型数据库一般用SQL进行查询,RDF的数据都是以图形式存储的,它的查询语言使用的是SPARQL。
一条SPARQL查询,其核心是对于一组变量及其之间关系的描述,构成了一种带有变量的图模式,与SQL类似,SPARQL查询可以返回一条或多条结果,每条结果包含的是对上述每个变量的一个绑定-指明了该变量与一个RDF术语之间的对应关系。RDF术语可以是URI、空白节点或者字面量。于是,根据每条结果,通过将查询图模式中的变量根据绑定替换为对应的RDF术语,应当构成待查询的RDF图的一个子图,这个子图称作与上述图模式相匹配。RDF查询语言主要定义了表达查询图模式的一套语法和语义。

上一篇:MetaData & RDF


下一篇:本体开发日记05-努力理解SWRL(RDF Concrete Syntax)