说明:CAS是国科大的简称,KG是知识图谱的缩写,这个栏目之下是我整理的国科大学习到的知识图谱的相关笔记。
课程目标
教学安排
详情请见博客:CAS-KG——课程安排
语言与图谱:知识载体
知识图谱是完全形式化的,方便机器进行处理。
知识图谱
知识图谱是一种有向图结构,描述了现实世界中存在的实体、事件或者概念以及它们之间的相关关系。
知识图谱中的知识表示
知识图谱中的知识是通过RDF的结构进行表示的,其基本构成单元是事实三元组,每个事实被表示为一个形如
知识图谱中的知识表示(示例)
知识图谱中的知识是通过RDF的结构进行表示的,其基本构成单元是事实,每个事实被表示为一个形如
知识图谱:图数据
广泛应用的大规模图结构数据
应用方向:社交网络
应用方向:路径规划
求取首都机场到中科院自动化所乘地铁的最短距离或最快交通线路
应用方向:生物学
图结构在生物学上已经得到广泛应用
应用方向:有机化学
化合物的性质与复杂化学反应的分析
应用方向:软件剽窃检测
目前软件剽窃检测的新方法是基于图模式匹配,将代码先转化为程序依赖图,然后再通过图匹配方法进行检测
应用方向:健康医疗大数据
运用健康医疗大数据构建知识图谱
大规模图数据特点
知识图谱:大规模图数据
知识图谱的目标是构建一个能够刻画现实世界的知识库,为自动问答、信息检索等应用提供支撑。因此,对知识的持久化存储并提供对目标知识的高效检索是合格的知识图谱(系统)必须具备的基本功能。
G={(屠呦呦,type,药学),
(屠呦呦,Birth_date,1930-12-30),
(屠呦呦,Citizenship,中国),
(屠呦呦,Name,”屠呦呦”),
(诺贝尔医学奖,Awarded,屠呦呦),
(诺贝尔医学奖,type, Nobel Prizes),
(诺贝尔医学奖,Name, Nobel Prize in Physiology or Medicine),
(诺贝尔医学奖,Location, Stockholm, Sweden),
(诺贝尔医学奖,Reward(s), 9 million SEK (2017)} 9个三元组
上述描述有以下问题:
定义一个虚拟节点,如下图红色节点描述一个原本不可描述的事件。
属性图G是5元组: = (, , , ,)
知识存储方式
三元组表
知识图谱中的事实是一个个的三元组,一种最简单直接的存储方式是设计一张三元组表用于存储知识图谱中所有的事实。
三元组表特性
基于三元组表的存储方式的优点是简单直接,易于理解;然而缺点也非常明显,主要有以下几点:
三元组表的六重索引
六重索引
优点:
➢ 三元组模式查询(triple pattern)的高效执行
➢ 任意两个三元组模式的高效归并连接(merge-join)
问题:
➢ 6倍空间开销?
➢ 更新维护代价
为每种类型构建一张表,同一类型的实例存放在相同的表中。表的每一列表示该类实体的一个属性,每一行存储该类实体的一个实例。
类型表的不足
考虑层级关系的类型表
构建数据表时,将知识图谱的类别体系考虑进来。具体来说,每个类型的数据表只记录属于该类型的特有属性,不同类别的公共属性保存在上一级类型对应的数据表中,下级表继承上级表的所有属性。
类型表特性
类型表克服了三元组表面临的单表过大和结构简单的问题,但是也有明显的不足之处:
基本概念
关系数据库以二维表结构对数据进行组织和存储。
上述二维表格有以下限制:
关系数据库属性分类
候选码:能够唯一标识元组的最小的属性集合。
主码:一个数据表可以包含多个候选码,从中任意选取一个作为主码。虽然理论上所有的候选码都可以作为主码,但是实际操作中一般选择单属性组成的候选码作为主码。
外码:如果数据表中的某个属性或属性组是其它表的候选码,那么称该属性或属性组是当前表的外码。外码能够保证不同数据表之间数据的一致性。
主属性与非主属性:包含在任何候选码中的属性称为主属性;相反地,不包含在任何候选码中的属性称为非主属性。
关系数据库完整性约束
关系数据库通过关系完整性约束条件来保证数据的正确性和一致性。所谓关系完整性约束条件主要是指在表和属性(列)上定义的规则,数据库管理系统会依据这些约束条
件维护数据完整性。
域完整性规则
在关系数据模型定义时,由用户对属性值的数据类型、长度、单位、精度、格式、值域范围、是否允许为空值等进行限定,规定属性取值必须在其值域中。
实体完整性:
元组(记录)在构成主码的属性上不能有空值且主码的值不能相同。实体完整性主要是为了确保主码能唯一标识元组。
参照完整性:
一个外表的外码取值必须是其主表主码的存在值或空值。
关系数据库操作语言
如果选择关系数据库作为知识图谱的存储引擎,那么对知识图谱的所有操作都需要转换为SQL语句才能执行。
关系数据库通过SQL语言为用户提一系列的操作接口,其核心功能包括插入、修改、删除、查询四种操作。
将实体看做节点,关系看做带有标签的边,那么知识图谱的数据很自然地满足图模型结构。
图数据库基于有向图,其理论基础是图论。节点、边和属性是图数据库的核心概念。
图数据模型:节点、边、节点属性、边属性
问题:单机系统可扩展性不足,图查询复杂度高
语义网回顾
本质:以Web数据的内容(即语义)为核心,用机器能够理解和处理的方式链接起来的海量分布式数据库。
RDF回顾
RDF(Resource Description Framework,资源描述框架)是一种资源描述语言,其核心思想是利用Web标识符(URI)来标识事物,通过指定的属性和相应的值描述资源的性质或资源之间的关系。
SPARQL是Simple Protocol and RDF Query Language的缩写,是由W3C为RDF数据开发的一种查询语言和数据获取协议,是被图数据库广泛支持的查询语言。和SQL类似,SPARQL也是一种结构化的查询语言,用于对数据的获取与管理.
数据操纵
数据插入:将新的三元组插入到已有的RDF图中。SPARQL通过INSERT DATA语句完成该功能,其基本语法为:
INSERT DATA 三元组数据
例 将以下两条三元组插入到图1所示的RDF图中。
ns:producer
ns:writer
数据删除:从RDF图中删除一些三元组。SPARQL通过DELETE DATA
语句完成该功能,其基本语法为:
DELETE DATA 三元组数据
例 将以下三元组从图2所示的RDF图中删除。
ns:producer
数据更新:更新RDF图中指定三元组的值。和SQL不同,SPARQL没有定义UPDATE操作,也就是说SPARQL语言没
有直接更新已有数据的方法。但是,可以通过组合INSERT DATA语句和DELETE DATA语句来实现该功能。
例 将图3中三元组 (http://example/movie1 ns:director http://example/person1) 的客体http://example/person1 修改为http://example/person4。
数据查询
SPARQL提供了丰富的数据查询功能,包括四种形式:
SELECT语句
ASK语句
DESCRIBE语句
CONSTRUCT语句
RDF图查询语言:SPARQL
W3C RDF 标准查询语言
Oracle在2016年提出:Oracle PGX
LDBC图查询语言工作组设计
G-CORE与已有图查询语言相比
Neo4j的特点
Neo4j的优点与缺点
一、优点
Neo4j的获取与启动
一、从网址 https://neo4j.com/download/ 下载Neo4j Server
二、社区版免费,根据自己系统需要选择合适版本(以Linux/Mac 为例)
三、将下载文件解压,修改名称(例如:NEO4J_HOME ),并在终端NEO4J_HOME的bin目录下输入命令:./neo4j console(注: 该步骤需要确保安装JDK1.8及以上版本)
四、打开浏览器访问 http://localhost:7474/ ,默认密码neo4j
五、登录完成后的Launcher提供了一部分CQL示例,点击Movie Graph,运行示例代码,创建该图数据库
CQL语言
Neo4j CQL——节点&关系
Neo4j CQL——CREATE
Neo4j CQL——MATCH
Neo4j CQL——RETURN
Neo4j CQL——DELETE&REMOVE&SET
Neo4j CQL——WHERE
Neo4j CQL——ORDER BY&UNION
Neo4j CQL——LIMIT&SKIP&IN
CQL语言
Neo4j CQL——字符串函数
Neo4j CQL——聚合函数
Neo4j CQL——关系函数
Neo4j——知识图谱的构建
1.打开IDEA,新建Java Project
2.打开Project Structure对话框,导入jar文件
3.创建Neo4j数据库
4.启动数据库
5.定义节点类型player,team
6.定义关系类型play_in
7.创建新节点 playerNode, teamNode,并设置它们的属性
8.创建新关系relationship,并设置其属性
9.运行代码,创建数据库
10.代码运行成功后,打开Neo4j数据库目录下的conf中的配置文件,
将第九行内容改为下图所示:
11.启动数据库,浏览器访问 http://localhost:7474 查看结果
知识图谱
知识图谱中的知识表示
知识图谱数据模型
知识存储方式
基于图结构的存储模型
知识图谱查询语言
常见图数据库平台
知识图谱数据管理