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

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

1.语义网体系

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

知识图谱本体建模之RDF、RDFS、OWL详解_第1张图片

2.RDF 表现形式

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

具体地,

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

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

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

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

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:
     
      "罗纳尔多·路易斯·纳萨里奥·德·利马"^^string.
      "足球运动员"^^string.
      "Ronaldo Luís Nazário de Lima"^^string.
      "1976-09-18"^^date.
      "180"^^int.
      "98"^^int.
      "巴西"^^string.
      .
      "里约热内卢"^^string.
      "-22.908333, -43.196389"^^string.
    

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

    Example2 Turtle:
     
    @prefix person:  .
    @prefix place:  .
    @prefix :  .
     
    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:  .
    @prefix rdf:  .
    @prefix :  .
    
    :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能提供描述属性具有传递性、对称性、函数性等性质。还有两个类等价或者不相交,两个属性等价或者互逆,两个实例相同或者不同,还有枚举类等等。
OWL 描述属性常用的词汇:
描述属性特征的词汇

  • owl:TransitiveProperty.表示该属性具有传递性质。例如,我们定义“位于”是具有传递性的属性,若A位于B,B位于C,那么A肯定位于C。
  • owl:SymmetricProperty. 表示该属性具有对称性。例如,我们定义“认识”是具有对称性的属性,若A认识B,那么B肯定认识A。
  • owl:FunctionalProperty. 表示该属性取值的唯一性。 例如,我们定义“母亲”是具有唯一性的属性,若A的母亲是B,在其他地方我们得知A的母亲是C,那么B和C指的是同一个人。
  • owl:inverseOf. 定义某个属性的相反关系。例如,定义“父母”的相反关系是“子女”,若A是B的父母,那么B肯定是A的子女。

本体映射词汇(Ontology Mapping)

  • owl:equivalentClass. 表示某个类和另一个类是相同的。
  • owl:equivalentProperty. 表示某个属性和另一个属性是相同的。
  • owl:sameAs. 表示两个实体是同一个实体。
    用OWL对罗纳尔多知识图进行概念层的描述如下:
@prefix rdfs:  .
@prefix rdf:  .
@prefix :  .
@prefix owl:  .
:Person rdf:type owl:Class.
:Place rdf:type owl:Class.
### owl区分数据属性和对象属性。owl:DatatypeProperty为数据属性,owl:ObjectProperty为对象属性。
:chineseName rdf:type owl:DatatypeProperty;
        rdfs:domain :Person;
        rdfs:range xsd:string .

:career rdf:type owl:DatatypeProperty;
        rdfs:domain :Person;
        rdfs:range xsd:string .

:fullName rdf:type owl:DatatypeProperty;
        rdfs:domain :Person;
        rdfs:range xsd:string .

:birthDate rdf:type owl:DatatypeProperty;
        rdfs:domain :Person;
        rdfs:range xsd:date .

:height rdf:type owl:DatatypeProperty;
        rdfs:domain :Person;
        rdfs:range xsd:int .

:weight rdf:type owl:DatatypeProperty;
        rdfs:domain :Person;
        rdfs:range xsd:int .

:nationality rdf:type owl:DatatypeProperty;
        rdfs:domain :Person;
        rdfs:range xsd:string .

:hasBirthPlace rdf:type owl:ObjectProperty;
        rdfs:domain :Person;
        rdfs:range :Place .

:address rdf:type owl:DatatypeProperty;
        rdfs:domain :Place;
        rdfs:range xsd:string .

:coordinate rdf:type owl:DatatypeProperty;
        rdfs:domain :Place;
        rdfs:range xsd:string .

6.SPARQL

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

你可能感兴趣的:(知识图谱,知识图谱,本体建模)