RDF、RDFS和OWL数据模型

引言

       RDF、RDFS和OWL是W3C推荐的本体描述语言,也是知识图谱中数据的常用存储格式,它们都是基于XML(可扩展标记语言)编写的元数据(描述数据的数据),即用于计算机传输数据,让机器可理解,而不是面向用户展示的数据模型。

RDF(Resource Description Framework,资源描述框架)

      RDF本质上是一个数据模型,它提供了一个统一的标准来描述web上资源,所谓的资源可以是指类(class)、属性(property)、实例(Instance)等等。RDF在形式上表示为SPO三元组(triple),即(主语/主体、谓语/属性、宾语/客体),用于描述具体的事物及关系,即实体以及实体之间的关系。RDF也可以表示为一张带有标记的有向图,图中有节点和边,节点对应实体,边对应关系或者属性,关系指的是实体之间、实体与属性之间的关系。

                                                RDF中的三元组(triple)

       实际中,RDF格式的数据在描述web资源时,每个资源都有唯一对应的URI,即资源标识符。URI类似于URL,用于声明资源的出处。资源标识符URI(有的也叫IRI)通常是由域名+路径名+资源名组成,如下图就是带有资源标识符的三元组。

                                               带有资源标识符URI的三元组

      上图中每一个资源前面都有一个URI,这种书写方式类似于XML中的name space(命名空间),XML中命名空间有一个前缀prefix,可以代替这样的链接,书写格式为“命名空间:资源名称”。举个例子,比如事先声明命名空间ex = http://ex.org/和ex-schema = http://ex.org/schema,那么上面带有URI的三元组就可以表示为下图形式。

                                                 声明前缀的三元组

      RDF以三元组的形式描述资源,简洁明了,但是有着语义表达能力的缺陷。RDF中没有定义类、属性等词汇,RDF只能是对具体的事物进行描述,缺乏抽象能力,无法对同一个类别的事物进行定义和描述。也就是说,RDF可以描述实体、实体的属性以及他们之间的关系,但是无法描述类与类之间的关系,类的属性等。

RDFS(RDF Schema ,RDF模式语言)

      RDFS在RDF的基础上定义了类(class)、属性(property)以及关系(relation)来描述资源,并且通过属性的定义域(domain)和值域(range)来约束资源。RDFS在数据层(data)的基础上引入了模式层(schema),模式层定义了一种约束规则,而数据层是在这种规则下的一个实例填充。

                                                 RDF Schema

      上图中在数据层(Instance)有一个三元组(图灵,研究领域,人工智能),引入模式层(schema)之后,实体图灵属于计算机科学家,人工智能属于计算机技术,属性研究领域的主体(定义域Domain)被限制在计算机科学家,客体(值域Range)被限制在计算机技术。而计算机科学家属于科学家的子类(subclassof),计算机技术属于信息技术的子类。

     RDFS中描述资源的词汇是固定的,只有Class、type、subClassof、Property、subPropertyof、Domain和Range。

Class:类;

type:定义了实例与类之间的关系;

subClassof:表示子类;

Property:类或者实体的属性;

subPropertyof:子属性;

Domain:谓语的定义域,限制了属性的主体范围;

Range:谓语的值域,限制了属性的客体范围;

      RDFS相比于RDF语义表达能力有所提升,但RDFS依旧有语义表达的缺陷。在RDFS中关于类与类之间的关系它只能声明子类关系,无法声明互斥类的关系,也无法声明多个类、实例、属性是否等价。

OWL(Web Ontology Language,网络本体语言)

      OWL是对RDFS关于描述资源词汇的一个扩展,OWL中添加了额外的预定于词汇来描述资源,具备更好的语义表达能力。在OWL中可以声明资源的等价性,属性的传递性、互斥性、函数性、对称性等等,具体见OWL的词汇扩展。

       本体和知识图谱在构建过程中,数据的存储常以RDF格式存放。而基于RDF数据的结构化查询语言SPARQL,可以实现对三元组的查询。在SPARQL中,常以“?”来表示变量或者资源标识符,select子句检索指定资源的资源标识符,where子句限定资源的由来。

注:学习王昊奋老师《知识图谱》的笔记总结。

原文同作者链接https://blog.csdn.net/m0_37788308/article/details/81189268

猜你喜欢

转载自blog.csdn.net/baijinswpu/article/details/81185965