构建知识图谱的时候,首先是要建立知识表达的的数据模型,也就是知识图谱整个的数据组织体系,主要是数据的分类及层次关系,还有属性及属性的关系。数据组织体系建立之后,我们就要考虑数据如何表达的问题,这种表达方式应该是既可以让人们容易理解,也要让计算机能够理解和使用。
1 Linked Data
在语义网的技术栈中,数据表示占了很大比重,按照语义网技术标准要求,所有的实体或属性数据都应该用URI/IRI来表示,除了文本描述的数据,所有数据都应该有一个统一的标识,标识的形式可以是XML、RDF、RDFS或者本体语言OWL,这些都说明数据表示是整个语义网的基础。
万维网之父,也是语义网的创始人,Tim Berners-Lee也一直呼吁建立互联的数据(Linked Data),还在TED上发表了演讲,演讲题目是raw data now,号召人们开放共享原始数据,让整个世界成为一个互通互联的世界。他的演讲既说明了数据共享的重要性,也说明了数据互联互通的重要性。
Tim Berners-Lee为了鼓励人们开放共享数据,制定了Linked Data的五星规则,数据每加一颗星,这样的数据就更容易被得到和利用,能够增强数据的互联互通。
一星:以开放的协议提供到互联网上(不论什么格式),称为开放数据
二星:能够被机器识别的结构化数据(比如excel,而不是表格的扫描图片)
三星:非专有格式(比如csv代替excel)
四星:加上以上要求,使用开放标准从W3C(RDF和SPARQL)到实体,让人们能够根据表述就能确定你所要表达的东西。
五星:满足以上所有要求,并且能够将你的数据与其他人的数据链接起来,提供上下文。
2 RDF
上面提到让数据互联互通,那么,数据以何种形式展示,才能更好的互联互通呢,知识图谱中,数据的展示形式就是RDF,RDF是应为Resource Description Framework的缩写,即资源描述框架,它可以看作是一个数据模型,也可以看作是表示数据的方法手段。
其中Resource,资源,顾名思义,是一种数据资源,可以是图片、视频,也可以是人、物或者概念等等,是用URI可以唯一标识的对象。
Description,描述,是对资源的描述,资源被IRI标识之后,我们能够确定资源,这个资源得内涵外延等具体的内容,还是需要资源的属性和关系来确定。描述就是对资源的属性和关系的内容。
Framework,框架,是描述资源的语言、语法和模型。
在RDF中,知识总是以三元组的形式出现,一条知识都是分解为主语(subject)、谓语(predicate)和宾语(object)的三元组(triple)来表示。
我们以维基百科里面的莎士比亚为例,来看一下RDF的表示方式,莎士比亚的作品有哈姆雷特,用RDF表示为:
https://www.wikidata.org/wiki/Q692 https://www.wikidata.org/wiki/Property:P800 https://www.wikidata.org/wiki/Q41567
其中https://www.wikidata.org/wiki/Q692是莎士比亚的URI,https://www.wikidata.org/wiki/Property:P800是notable work的URI
https://www.wikidata.org/wiki/Q41567是哈姆雷特的URI。
在维基数据里,关于莎士比亚的知识,都是通过这样的RDF,将一条条的知识汇聚起来,形成莎士比亚的知识卡片。以下是莎士比亚的知识卡片的一部分。
在实际的应用中,RDF还有几种序列化方法,也就是存储和传输RDF数据的具体实现形式,主要有RDF/XML,N-Triples,Turtle,RDFa,JSON-LD等。这些都是满足RDF规则的数据表现形式,各有特点,适于不同的应用场景。
XML格式技术成熟,存储和解析方便,但该格式比较冗长,不便于阅读,知识图谱很少使用这种格式来表示数据。N-Triples,比较直观简单,一行一个三元组表示一条知识,方便解析和处理,在知识图谱中应用较多。Turtle可以看作是N-Triples的全面版本,比N-Triples要复杂一些,但相对原始的RDF要简洁,语法规则也比较严谨清晰,在知识图谱中使用比较广泛。RDFa,RDF in Attributes,是将RDF数据嵌到网页中,对于前端显示没有影响,对于浏览器来说,能够在非结构化数据中较方便的提取结构化信息,有利于数据的获取和共享。JSON-LD,JSON for Linking Data,用键值对的形式存储RDF数据,也是为了网络数据的共享和传播。
和RDF一起使用的还有RDFS(RDF Schema),RDF表示的是数据层的内容,RDFS表示的是模型层的内容,RDFS为RDF数据提供一个类型系统,定义了数据的类型、子类型、属性、子属性、主语的范围、宾语的范围等信息,RDFS为数据定义了一个规则范围,RDF数据按照RDFS制定的规则组织数据。
3 OWL
OWL,不是猫头鹰,是Web Ontology Language,Web本体语言,是W3C制定一种适用于语义网使用的数据模型规范,它融合了哲学中的本体的概念,研究世界上的各种实体以及它们是如何关联的。OWL是对RDFS的一种扩展,弥补了RDFS在表达能力的一些缺陷。OWL也是遵循RDF规范的,比RDF更加严谨,丰富了属性以及属性约束,定义域、值域的约束等等。
OWL又分为OWL Lite、OWL DL和OWL Full三个子语言。OWL Lite是最简单的OWL,可以看作是OWL Full的简化版本。OWL DL在OWL Lite的基础上,包括了OWL的所有属性约束。OWL Full允许在预定义的词汇上增加词汇,导致逻辑蕴含不可判定。
OWL的新版本是OWL2,OWL2也有三个子语言,OWL2 QL、OWL2 EL和OWL2 RL,OWL2 QL代表Query Language,专为基于本体的查询设计,可以使用标准关系型数据库技术(例如SQL)来实现,仅需要依据公理扩展查询。OWL2 EL为概念术语描述、推理而设计,拥有一个具备相对表达力的类表达式语言,并且对类表达式如何可以用在公理中没有限制。应用在大型生物健康本体模型的构建中。OWL2 RL面向需要可扩展又不能牺牲太多表达能力的应用程序,被设计用来适应可以牺牲语言的完整表达力以换取效率的OWL2应用程序,以及需要一些来自OWL2的额外表达力的RDF(S)应用程序。
OWL和OWL2属于W3C推荐的语义网数据模型组织语言,结构严谨,逻辑全面,但在实际的企业级应用中较少使用,主要是因为OWL相对来说比较复杂,不如直接使用Turtle或者N-Triples来的方便。
参考资料
1 https://www.w3.org/DesignIssues/LinkedData.html
2 https://zhuanlan.zhihu.com/p/32122644
3 https://my.oschina.net/airship/blog/920020