使用图数据库 Nebula Graph 数据导入快速体验知识图谱 OwnThink

  • 时间:
  • 浏览:1
  • 来源:uu快3计划师_uu快3app苹果_全天计划

查看 relation 边类型的属性

当数据量较大时,查找全路径/最短经类似的操作会比较耗时。都可不能否看了:本次查询返回 8 条数据,说明姚明和其妻子叶莉在三跳之内共有 8 条直接或间接的关系。

都可不能否点击这里下载:https://nebula-graph.oss-accelerate.aliyuncs.com/ownthink/kg_v2.tar.gz

导入完毕后,让让我们都让让我们都 都可不能否使用 Nebula Graph 服务做一些简单的查询。回到 Nebula Graph 的命令行 CLI :

最近 @Yener 开源了史上最大规模的中文知识图谱——OwnThink(链接:https://github.com/ownthink/KnowledgeGraphData ),数据量为 1.4 亿条。

输入下面命令连接 Nebula Graph:

该工具会把转换后的顶点的数据写入到 vertex.csv 文件、边数据写入到 edge.csv 文件。

分析上图的三元组数据,发现无论是 (实体, 属性, 值) 形式的三元组数据,还是 (实体, 关系, 实体) 形式的三元组数据,每条三元组数据均都可不能否建模成三个白 点第四根边的形式。前者三元组中的“实体”和“”建模为三个白 点(起点、终点),“属性”建模为第四根边,后者三元组中的三个白 “实体”也建模为三个白 点(起点、终点),“关系”建模为第四根边.

Nebula Graph 是三个白 开源的分布式图数据库(链接:https://github.com/vesoft-inc/nebula),相比 Neo4j 来说,它的主要特点是完整性的分布式,或者图数据库 Nebula Graph 适合补救数据量超过单机的场景

命令执行结果如下:

命令执行结果如下:

说明:第一列是起点的 VID,第二列是终点的 VID,第三列是这条边的"属性"可能"描述"。

本文测试的后来,使用的操作系统是 CentOS 7.5,工具由 Golang 语言编写而成。

在本机完整性去重的清洗tcp连接池池运行时间最少是 6 分钟。

命令行 CLI 输入下面命令启动服务

本文介绍怎样才能将这份数据快速导入图数据库 Nebula Graph,全过程最少时要 400 分钟。

Nebula Graph GitHub 地址:https://github.com/vesoft-inc/nebula  ,加入 Nebula Graph 交流群,请联系 Nebula Graph 官方小助手微信号:NebulaGraphbot

清洗完的 vertex.csv 文件长就是:

结果如下:

说明:在测试过程中,发现有少量的重复点数据,就是工具里边也做了去重。完整性去重后的点的数据最少是 44000 万条,完整性去重后的边的数据最少是 1 亿 4000 万条。

另外,准备三个白 YAML 配置文件,告诉这种 importer 工具去哪里找 csv 文件。(可直接一键复制下面这段)

比如 (大龙湫,著名景点,芙蓉峰) 都可不能否表示成下图这种 样子:

笔者系统是 CentOS 7.5,下载 CentOS 7.5 最新的压缩包,解压都可不能否找到 rpm 安装包 nebula-5ace754.el7-5.x86_64.rpm,注意 5ace754 是 git commit 号,使用时可能会有所不同。下载好后解压,输入下面命令进行安装,记得替打上去新的 git commit:

本文由 Nebula Graph 实习生@王杰贡献。

可能 ownthink_v2.csv 数据太大,摘录每种数据为例:

本篇文章涉及到的一些概念和链接:

最近 Yener 开源了史上最大规模的中文知识图谱—— OwnThink(链接:https://github.com/ownthink/KnowledgeGraphData),数据量为 1.4 亿条。数据以 (实体, 属性, 值) 和 (实体, 关系, 实体) 混合的三元组形式存储,数据格式为 csv。

这里的 (红色食品,否有含防腐剂,否) 就是典型的 (实体, 属性, 值) 形式的三元组数据; 而 (姚明[中国篮球学着主席、中职联公司董事长],妻子,叶莉) 是典型的 (实体, 关系, 实体) 形式的三元组数据。

说明:每一行是三个白 顶点,第一列整型 -2469395383949115281 是顶点的 ID(叫做 VID),它是由第二列文字通过 hash 计算出来的,类似 -2469395383949115281 就是由 std::hash("过度包装") 计算出来的值。

按照前一节的分析,原始的每条三元组数据,还时要清洗转换为三个白 点和第四根边都都可不能否变成属性图的模型。

清洗完的 edge.csv 文件:

知识图谱是由 Google 在 2012 年提出来的三个白 概念。主就是用来描述真实世界中占据 的各种实体和概念,以及让让我们都让让我们都 之间的关系。在搜索引擎、问答机器人、知识抽取等多个领域有着诸多应用。

执行结果如下:

登陆 GitHub 进入 https://github.com/vesoft-inc/nebula-importer ,nebula-importer 这种 工具也是 Golang 语言写的,在这里下载并编译源代码。

图数据库通常支持的数据模型为有向属性图(directed property graph)。图中的每个顶点(vertex)都可不能否用标签(tag)来表示类型(Neo4j 叫做 Label),顶点和顶点之间的关系用边(edge)连接起来。每种 tag 和 edge 还都可不能否含高属性。——然而,哪些功能对于知识图谱的三元组数据没哪些意义:

登陆 GitHub 后,在这里 (链接:https://github.com/vesoft-inc/nebula/actions) 找到 Nebula 的安装包。

找到你所用系统对应的下载链接:

最后:后来后来刚结束导入数据

现在,让让我们都让让我们都 都可不能否做一些简单查询

命令执行结果如下:

或者,所有的点完整性都是 相类似型(取叫雪entity ),只时要三个白 属性(叫 name ),所有的边也完整性都是 同一类型(取叫雪 relation ),边上也只能三个白 属性(叫 name )。

create space 的概念接近 MySQL 里边 create database。在 nebula console 里边输入下面这种 命令。

查看 entity 标签的属性

都可不能否看了, 本次导入 QPS 最少在 40 w/s。完整性导入总耗时最少 15 min。

最后简单确认下元数据是完整性都是 正确。

进入刚才导入的三元组数据的 test 空间:

我就在这里 (链接:https://github.com/jievince/rdf-converter) 下载这种 简单的清洗工具源代码并编译使用。

结果如下:

执行过程如下:

都可不能否看了:本次查询返回 51 条数据,耗时 3 ms 左右;

执行结果如下:

Nebula Graph 的使用风格有点痛 接近 MySQL,时要先准备各种元信息。

都可不能否执行以下命令检查服务否有成功启动

说明:测试后来发现 csv 数据文件含高少量转义字符 (\) 和换行字符 (\r),nebula-importer 也做了补救。