语义网络,语义网,链接数据和知识图谱_语义网 图数据库-程序员宅基地

技术标签: 知识图谱  

前一篇文章“为什么需要知识图谱?什么是知识图谱?——KG的前世今生”提及了和知识图谱相关的一些早期概念。为了让读者能够更好地区分这些概念,以及更好地在整体上把握知识谱图发展过程,本文将对这些概念作一个更为详细的介绍。

一、语义网络(Semantic Network)

对于初学者来讲,这个概念很容易和语义网(Semantic Web)相混淆。为了行文一致,除非特别说明,语义网络指Semantic Network,语义网指Semantic Web。

语义网络是由Quillian于上世纪60年代提出的知识表达模式,其用相互连接的节点和边来表示知识。节点表示对象、概念,边表示节点之间的关系。

语义网络

语义网络的优点
1. 容易理解和展示。
2. 相关概念容易聚类。

语义网络的缺点
1. 节点和边的值没有标准,完全是由用户自己定义。
2. 多源数据融合比较困难,因为没有标准。
3. 无法区分概念节点和对象节点。
4. 无法对节点和边的标签(label,我理解是schema层,后面会介绍)进行定义。

简而言之,语义网络可以比较容易地让我们理解语义和语义关系。其表达形式简单直白,符合自然。然而,由于缺少标准,其比较难应用于实践。看过上一篇文章的读者可能已经发现,RDF的提出解决了语义网络的缺点1和缺点2,在节点和边的取值上做了约束,制定了统一标准,为多源数据的融合提供了便利。另外,RDF对is-a关系进行了定义,即,rdf:type(是rdf标准中的一个词汇,之后的文章会介绍)。因此,不管在哪个语义网络中,表达is-a关系,我们都用rdf:type,在语法上形成了统一。比如上图中猫、熊与哺乳动物的关系就可以形式化的表达为:

猫 rdf:type 哺乳动物

熊 rdf:type 哺乳动物

但还有个问题,如何区分概念和对象?即定义Class和Object(也称作Instance, Entity)。如果不能区分,会对我们产生什么影响?举个例子,假如我们有两个语义网络A和B。在A中,熊是哺乳动物的一个实例。在B中,熊是哺乳动物的一个子类。前者是is-a关系,后者是subClassOf关系。这种情况常有发生,我们建模的角度不同,那么同一个事物的表示也可能不同。如果我们不能用一种方法来区别两者,不仅会给我们带来理解上的困难,在进行融合的时候也会造成数据冲突。我们不能说A既是B的一个实例,又是B的一个子类。W3C制定的另外两个标准RDFS/OWL解决了这个问题,如下图。

语义网技术栈

在语义网技术栈中,RDFS和OWL是RDF更上一层的技术,主要是为了解决语义网络的缺点3和缺点4,其提供了schema层的描述。在后续文章中,我们将更详细地介绍RDF,RDFS/OWL。在这里,读者只需要知道,通过RDFS或者OWL中的预定义词汇,我们可以形式化地声明一个类:

哺乳动物 rdf:type rdfs:Class

或者

哺乳动物 rdf:type owl:Class

通过RDFS也可以声明一个子类:

熊 rdf:type rdfs:Class

熊 rdfs:subClassOf 哺乳动物

或者声明一个实例

熊 rdf:type 哺乳动物

我们也可以把rdf:type用a代替,即:

熊 a 哺乳动物

RDF,RDFS/OWL属于语义网技术栈,它们的提出,使得语义网克服了语义网络的缺点。

尽管语义网络有这些缺点,还是有许多项目是基于语义网络的思想建立起来的。下面列几个比较出名和实用的项目:
- WordNet。它是一个英语的词汇库,将英语单词划分为同义词集合,用不同的语义关系将这些集合关联起来。其在自然语言处理的中有许多应用,比如消歧、信息检索、文本分类、文本摘要等等。
- BabelNet。相对于WordNet,BabelNet是一个多语言的词汇库。它是通过自动把维基百科链接到WordNet上构建起来的,另外也用到了其他的一些词汇资源。
- HowNet,即知网,中文语义词典。其以汉语和英语词语所代表的概念为描述对象,构建了一个包含概念之间以及概念所具有的属性之间的关系的常识知识库。

二、语义网(Semantic Web)和链接数据(Linked Data)

语义网和链接数据是万维网之父Tim Berners Lee分别在1998年和2006提出的。相对于语义网络,语义网和链接数据倾向于描述万维网中资源、数据之间的关系。其实,本质上,语义网、链接数据还有Web 3.0都是同一个概念,只是在不同的时间节点和环境中,它们各自描述的角度不同。它们都是指W3C制定的用于描述和关联万维网数据的一系列技术标准,即,语义网技术栈

语义网是一个更官方的名称,也是该领域学者使用得最多的一个术语,同时,也用于指代其相关的技术标准。在万维网诞生之初,网络上的内容只是人类可读,而计算机无法理解和处理。比如,我们浏览一个网页,我们能够轻松理解网页上面的内容,而计算机只知道这是一个网页。网页里面有图片,有链接,但是计算机并不知道图片是关于什么的,也不清楚链接指向的页面和当前页面有何关系。语义网正是为了使得网络上的数据变得机器可读而提出的一个通用框架。“Semantic”就是用更丰富的方式来表达数据背后的含义,让机器能够理解数据。“Web”则是希望这些数据相互链接,组成一个庞大的信息网络,正如互联网中相互链接的网页,只不过基本单位变为粒度更小的数据,如下图。

语义网

链接数据起初是用于定义如何利用语义网技术在网上发布数据,其强调在不同的数据集间创建链接。Tim Berners Lee提出了发布数据的四个原则,并根据数据集的开放程度将其划分为1到5星5个层次。链接数据也被当做是语义网技术一个更简洁,简单的描述。当它指语义网技术时,它更强调“Web”,弱化了“Semantic”的部分。对应到语义网技术栈,它倾向于使用RDF和SPARQL(RDF查询语言)技术,对于Schema层的技术,RDFS或者OWL,则很少使用。链接数据应该是最接近知识图谱的一个概念,从某种角度说,知识图谱是对链接数据这个概念的进一步包装。本专栏的头像,读者可能在很多地方看见过,这其实就是开放链接数据项目(Linked Open Data Project)进展的可视化(读者可以打开链接查看可交互的可视化图),也通常用来展示当前开放知识图谱的规模,涉及的领域以及知识图谱间的链接关系。

开放链接数据项目

三、知识图谱(Knowledge Graph)

上一篇文章中,我们用平实的语言给出了知识图谱的定义和组织形式。用更正式的说法,知识图谱是由本体(Ontology)作为Schema层,和RDF数据模型兼容的结构化数据集。本体本身是个哲学名词,AI研究人员于上个世纪70年代引入计算机领域。Tom Gruber把本体定义为“概念和关系的形式化描述”,分别指实体的类层次和关系层次。我们以上篇文章罗纳尔多知识图为例,我们用IRI唯一标志的节点都是某个类的一个实例,每一条边都表示一个关系。罗纳尔多是一个人,里约热内卢是一个地点,我们用RDF来表示就是:

www.kg.com/person/1 rdf:type kg:Person.

www.kg.com/place/10086 rdf:type kg:Place.

关系我们也称为属性(Property),根据是实体和实体之间的关系还是实体和数据值之间的关系分为对象属性(Object Property)和数据属性(Data Property)。在图中,罗纳尔多和里约热内卢的关系(本例中是对象属性)与罗纳尔多和全名的关系(本例中是数据属性)用RDF就可以表示为:

www.kg.com/person/1 kg:hasBirthPlace www.kg.com/place/10086

www.kg.com/person/1 kg:fullName “Ronaldo Luís Nazário de Lima”^^xsd:string

这里kg:Person,kg:Place,kg:hasBirthPlace,kg:fullName是我们在Ontology中定义好的类和关系。

罗纳尔多知识图谱

链接数据和知识图谱最大的区别在于:
1. 正如上面Open Linked Data Project所展示的,每一个圆圈代表一个独立存在和维护的知识图谱;链接数据更强调不同RDF数据集(知识图谱)的相互链接。
2. 知识图谱不一定要链接到外部的知识图谱(和企业内部数据通常也不会公开一个道理),更强调有一个本体层来定义实体的类型和实体之间的关系。另外,知识图谱数据质量要求比较高且容易访问,能够提供面向终端用户的信息服务(查询、问答等等)。

四、总结

本文介绍了和知识图谱相关的几个早期概念,以及他们之间的异同。在下一篇文章当中,我们将会介绍语义网技术栈中比较基础和重要的技术标准:RDF,RDFS和OWL。另外,会结合实践,让读者学会用protege自顶向下地构建自己的本体结构。

参考资料:

  1. Blog:The Many Names of the Semantic Web
  2. 科普 | 知识图谱相关的名词解释
  3. Exploiting Linked Data and Knowledge Graphs in Large Organisations
  4. Video:What is Linked Data?
  5. The Linking Open Data cloud diagram
id="tmp_downloadhelper_iframe">
        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
            </div>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jiaxinhong/article/details/82597853

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签