#NLP# 知识图谱入门知识,这一篇就够啦!

1 知识图谱基础知识

1.1 数据模型

1.1.1 RDF图

#NLP# 知识图谱入门知识,这一篇就够啦!_第1张图片

  • RDF三元组集合即为RDF图中的有向边集合~
  • RDF图对于节点和边上的属性没有内置的支持
  • 节点属性可以用三元组表示,即上图中的矩形

1.1.2 属性图

#NLP# 知识图谱入门知识,这一篇就够啦!_第2张图片
(1)每个节点具有唯一的id;
(2)每个节点具有若干条出边;
(3)每个节点具有若干条入边;
(4)每个节点具有一组属性,每个属性是一个键值对;
(5)每条边具有唯一的id;
(6)每条边具有一个头节点;
(7)每条边具有一个尾节点;
(8)每条边具有一个标签,表示联系;
(9)每条边具有一组属性,每个属性是一个键值对。

1.2 查询语言

  • RDF图:SPARQL语言
  • 属性图:Cypher和Gremlin

在下面第三部分将主要介绍Cypher查询语句,在此不再赘述

2 知识图谱存储方法

2.1 基于关系数据库的存储方案

  • 关系数据库:指采用了关系模型来组织数据的数据库。简单来说,就是存储结构化数据。比如MySQL,Oracle等
  • 非关系数据库:比如Redis(可见推文:),存储的是k-v对,而不是结构化数据

存储结构:
三元组表、水平表、属性表、垂直划分、六重索引和DB2RDF

2.1.1 三元组表

把三元组存成数据表的三列#NLP# 知识图谱入门知识,这一篇就够啦!_第3张图片

2.1.2 水平表

主语最左边一列拉下来,谓语最上边一行拉过去,宾语在表格中
问题:列可能会非常多,维度爆炸#NLP# 知识图谱入门知识,这一篇就够啦!_第4张图片

2.1.3 属性表

主语进行归类,相当于对水平表在行维度进行的拆分
#NLP# 知识图谱入门知识,这一篇就够啦!_第5张图片

2.1.4 垂直划分

谓语进行划分,相当于对水平表在列维度进行的拆分

2.1.5 六重索引

空间换时间,三元组全部 6 种排列对应地建立为 6 张表。

2.1.6 DB2RDF

一种面向实体的 RDF 知识图谱存储方案
将关系数据库(如DB2)中的数据映射到RDF(资源描述框架)格式的技术

2.2 面向RDF的三元组数据库

支持查询语言SPARQL

  • RDF4J
  • RDF-3X
  • gStore
  • Virtuoso
  • AllegroGraph
  • GraphDB
  • Blazegraph
  • Stardog

2.3 原生图数据库

主要包括 Neo4j(第三部分重点介绍),分布式的JanusGraph和OrientDB,Cayley

2.4 上述三种数据库的比较

**存储量级:**RDF三元组数据库(百万到上亿级三元组) < 基于关系数据库(千万到十亿级三元组) < 分布式数据库(几亿到十亿级三元组)
#NLP# 知识图谱入门知识,这一篇就够啦!_第6张图片

3 重点介绍Neo4j

略 https://blog.csdn.net/qq_27782503/article/details/118017731

3.1 Neo4j基础及配置

3.2 Neo4j导入数据

3.2.1 导入节点

3.2.2 导入关系

3.2.3 导入关系(含关系的相关属性)

3.3 Neo4j可视化

3.4 Neo4j查询语言—Cypher

4 参考

属性图和RDF图简要介绍与比较:https://zhuanlan.zhihu.com/p/260430189
关系型数据库 VS 非关系型数据库: https://zhuanlan.zhihu.com/p/78619241
Neo4j安装参考:https://blog.csdn.net/huacha__/article/details/81123410
Neo4j 批量导入数据的几种方式: http://weikeqin.com/2017/04/14/neo4j-import-data/
服务器端Neo4j的配置文件:https://github.com/RucLee/neo4j_iaap/blob/main/neo4j.conf
服务器端Neo4j修改端口后的配置文件:https://github.com/RucLee/neo4j_iaap/blob/main/super/neo4j.conf

你可能感兴趣的:(AIGC,数据分析,自然语言处理,知识图谱,人工智能,数据库)