#gStore-weekly | gBuilder功能详解之结构化数据抽取

上一个weekly中已经详细讲解了schema的设计,在schema设计好了之后,gBuilder支持将结构化和非结构化数据转化为RDF图数据。其中结构化数据支持数据的无损转化。

1. 技术介绍

gBuilder的结构化数据抽取采用D2RQ技术实现。 

DR2Q是一个能够将关系数据库中的内容转换成RDF三元组的工具,由于知识图谱中储存的数据通常为三元组格式,而知识图谱构建模块的数据大多储存在关系数据库中,以不同的表的形式来区分,所以需要进行转换。D2RQ主要包括 D2R Server, D2RQ Engine 以及 D2RQ Mapping 语言。 

虽然D2RQ为知识图谱构建模块提供了一个较好的结构化数据自动转换为RDF数据的工具,但由于D2RQ无法与知识图谱Schema相结合,如果完全依赖D2RQ工具的话,会导致生成的RDF数据不符合知识图谱Schema结构,因此,gBuilder结构化数据抽取是一个基于D2RQ和知识图谱Schema的知识图谱构建功能模块。

2. 功能介绍

对于结构化数据通过对表的字段自动化映射到Schema中,从而自动化构建知识图谱,主要包括获取数据库信息、表与实体映射、字段与属性、关系映射、跨表数据映射、生成mapping文件、D2RQ自动抽取。其中映射入口为项目卡片中的对应的【映射】按钮。

2.1 连接关系型数据库

映射首先需要连接存储原始数据的关系型数据库,通过输入数据库名称、数据库类型、数据库地址、用户名、密码、端口号、类型等信息,然后点击连接数据库进行数据库连接。其中当前我们支持MySQL、Oracle、SQL Server、OpenGauss、PostgreSQL、达梦六种数据库类型。类型中我们支持所有表、所有视图、表加视图三种方式进行选择。

例如我们下图连接了一个名称为gbuidlerduie 的MySQL数据库。

连接成功后可以筛选需要进行映射的表,因为数据库中可能存在很多的表,而我们根据schema来选择需要后续操作的表。选择需要映射的表,然后通过点击中间的箭头,即可将其选中:

2.2 关系表与实体的映射

我们在schema设计的实体一般来说都会有一张表或多个表与同一个实体对应,在连接好关系型数据库且选择了需要映射的关系表后,需要将schema中实体同关系表对应起来,我们点击状态为未映射的表点击【映射】进行映射编辑。

依次点击需要处理的关系表,确定其对应的实体及uri标识列(默认是主键),点击后选择在schema中的具体实体名称,针对该实体我们要保障它的唯一性,所以需要选择对应的关系型数据库中的字段(可以选择一个或者多个)作为该实体在知识图谱中的URI(类似关系型数据库中的主键字段)。

同时,由于可能在结构化抽取过程中会定时抽取,为了避免每次全量抽取,提升抽取效率,我们在本步骤进行映射时也可以增加约束条件,在后面进行映射时就只映射符合约束条件的数据,类似SQL语句中的where条件,我们点击【条件】按钮,在弹出的弹框中编写我们的约束条件,例如我们编写只抽取t_song 表中 id>100的数据,那么后面在抽取该表时就只抽取id>100的数据。

处理完的表,按钮会变为蓝色。如需要修改重新点击即可。

如需删除某张表的映射,可右键点击,同时可以点击【批量删除】进行批量的表删除,以及【重置映射】对所有映射关系进行重置。用户也可根据【已映射】和【未映射】状态进行筛选。

对于该步骤我们可以查看当前schema中已经映射好了的实体有哪些,点击【预览映射】即可查看,便于使用者能查看当前映射整体情况,已经映射好的将会以亮色展示,未映射的以灰色展示。

注:只有经过该步操作的表,才会在后续步骤中被处理,因此请确保你要生成三元组的表都进行了映射。

2.3 关系表与谓词的映射

在映射好实体后,接下来需要将实体的属性进行映射。具体将三元组来源于同一张表的列与schema中实体的谓词进行对应。依次选择下拉框中要处理的关系表, 在选好需要处理的表后,平台会将该表有的字段读取出来,例如人物表拥有人物名称、年龄、性别、出生日期等字段,会在平台的【表中的列】的下面展示出来。

如果将表中的列元素拖拽入对应的数据属性谓词框中,生成三元组的宾语为该列的字面值,若需要生成的三元组的宾语,则点击“拖拽变量”按钮,并输入常量值,例如年龄可用常量值100,但是设置常量值后所有人的年龄均会变为设置的常量值。

如果将表中的列元素拖拽入对应的对象属性谓词框中,生成三元组的宾语为该列值对应的实体,因此还需要右键点击以确定其对应实体及对应依据。

完成对应关系处理后,点击右上角“保存当前表”,则下拉框中的表会显示成"已处理",所有表处理完之后就可以点击“下一步”按钮进行后续处理, 若拖拽入对象属性谓词框中的元素没有点击右键进行映射,元素会呈现紫色,无法点击“下一步”按钮。

同样的也可通过【预览映射】查看当前实体属性同schema中的映射情况。

2.4 处理跨表数据

存在希望生成的三元组的主语和宾语来自不同的关系表,即需要处理跨表数据。通过依次选择主语所在的表、schema中谓词、宾语所在的表、宾语所在的列,以及跨表连接的依据。

这里会涉及到两种情况,一种是对于实体的属性值来源于其他的表,以及实体和实体的关系之间来源于其他的表。

第一种例如人物的性别这个属性的值它来源于另外一张表中,当前表中只是编码,例如001这种,但是还需要将001转化为具体的男或者女,那么就需要通过在另外一张编码表中去找到这样涉及多表的数据处理需要用此步骤,如下图所示:首先我们选择主语的表人物表t_person 谓语(即属性)为性别,性别来源的表为t_b_bcode编码表, 然后用标题作为性别的具体值,然后添加join依据,即我们用人物表t_person中的性别字段去等于t_b_bcode编码表中的id字段来去join。在设置好这个依据后就可以将人的性别在最终的三元组中为一个具体的男还是女。

第二种实体之间的关系,即宾语是对象而非某一列的字面值,宾语列选择none对象,系统会匹配到该表对应的实体,然后根据上面的一样去进行join依据的设置,这样即可进行实体之间关系的三元组抽取。

join依据中依次选择要连接的两张表和连接的列,如若需要跨多张表,可添加多组join依据。

同时我们可以进行编辑操作,修改前面设置的映射关系。

通过以上四个步骤能够使用户按照自己的需求实现关系数据库到RDF三元组的转换,并且从繁琐的映射规则编写中解放出来我们的流程可以满足用户绝大部分需求。如果还有更复杂的要求,我们也可以支持一键生成mapping文件,通过编写mapping文件或处理关系数据库来完成。

2.5 生成mapping文件

通过在项目卡片上点击【mapping生成】即可根据前面四步设置的映射关系自动生成mapping文件。

此外,也可对生成的mapping文件进行编辑和修改:

2.6 D2RQ自动抽取

通过点击项目管理卡片的【生成NT文件】即可通过任务的方式使用D2RQ引擎将数据自动抽取为NT文件,文件的数据格式为RDF三元组。

除此之外还支持直接导入一个已有的项目使用,见gBuilder功能详解之项目管理章节对应内容。 

若大家在实际项目中需要使用gBuilder可联系运营同学或者发送邮件进行项目层面合作沟通。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/153121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux上安装qt creator

linux上安装Qt Creator 1 Qt Creator 的下载 下载地址为:http://download.qt.io/archive/qt/ 根据自己的需求选择Qt Creator版本,这里我下载的是5.12.9,如下图所示: 在ubuntu上可以使用wget命令下载安装包: wget h…

【Qt开发流程】之程序主窗口

描述 就目前的应用程序而言,一般包含菜单栏、工具栏、状态栏、中央区域等。 qt窗口部件类图如下: 一个主窗口提供了一个构建应用程序用户界面的框架。 Qt有QMainWindow及其相关类来管理主窗口。 QMainWindow有自己的布局,可以向其中添加QTo…

归并排序知识总结

归并排序思维导图: 知识点:如果原序列中两个数的值是相同的,它们在排完序后,它们的位置不发生变化,那么这个排序是稳定的。快速排序是不稳定的,归并排序是稳定的。 快排变成稳定的>使快排排序数组中的每…

24 - 内存持续上升,我该如何排查问题?

我想你肯定遇到过内存溢出,或是内存使用率过高的问题。碰到内存持续上升的情况,其实我们很难从业务日志中查看到具体的问题,那么面对多个进程以及大量业务线程,我们该如何精准地找到背后的原因呢? 1、常用的监控和诊断…

Python - Wave2lip 环境配置与 Wave2lip x GFP-GAN 实战 [超详细!]

一.引言 前面介绍了 GFP-GAN 的原理与应用,其用于优化图像画质。本文关注另外一个相关的项目 Wave2lip,其可以通过人物视频与自定义音频进行适配,改变视频中人物的嘴型与音频对应。 二.Wave2Lip 简介 Wave2lip 研究 lip-syncing 以达到视频…

基于Springboot的地方美食分享网站(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的地方美食分享网站(有报告)。Javaee项目,springboot项目。 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 项目介绍: 采用…

常见树种(贵州省):009楠木、樟木、桂木种类

摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、楠木 …

【腾讯云云上实验室-向量数据库】探索腾讯云向量数据库:全方位管理与高效利用多维向量数据的引领者

目录 前言1 腾讯云向量数据库介绍2 向量数据库信息及设置2.1 向量数据库实例信息2.2 实例监控2.3 密钥管理2.4 安全组2.5 Embedding2.6 可视化界面 3 可视化界面4 Embedding4.1 embedding_coll精确查询4.2 unenabled_embedding_coll精确查询 5 数据库5.1 创建数据库5.2 插入数据…

NTLM 认证支持的添加与实现

我在psf/requests项目中报告了bug #932,并提出了一个关于支持HTTP NTLM认证的问题。这篇文章将详细介绍问题背景和解决方案。 HTTP NTLM认证是一种用于验证用户身份的协议。在某些场景下,用户可能需要使用NTLM认证才能访问某些网站或资源。然而&#xff…

SpringCloud 微服务全栈体系(十五)

第十一章 分布式搜索引擎 elasticsearch 五、RestClient 操作文档 为了与索引库操作分离,再次参加一个测试类,做两件事情: 初始化 RestHighLevelClient酒店数据在数据库,需要利用 IHotelService 去查询,所以注入这个接…

Linux shell编程学习笔记28:脚本调试 set命令

0 引入 在Linux Shell 脚本编程的过程中,编写简单功能的脚本,代码不多,一般阅读起来没什么难度,有问题也比较有查出原因和修正。但是当脚本要实现的功能较多,代码变得较为复杂时,阅读起来就不那么容易看明…

一道简单的积分题目

题目如下图&#xff1a; 解法1&#xff1a; 解法2&#xff1a; 解法3&#xff1a; 错误做法&#xff1a; 在 x ∈ ( 0 , ∞ ) 上有 ln ⁡ x < x &#xff0c;令 f ( x ) ln ⁡ x 1 x 2 &#xff0c; g ( x ) &#xff1d; x 1 x 2 ∴ f ( x ) < g ( x ) &#x…

Qt按钮大全续集(QCommandLinkButton和QDialogButtonBox )

## QCommandLinkButton 控件简介 QCommandLinkButton 控件中文名是“命令链接按钮”。QCommandLinkButton 继承QPushButton。CommandLinkButton 控件和 RadioButton 相似,都是用于在互斥选项中选择一项。表面上同平面按钮一样,但是 CommandLinkButton 除带有正常的按钮上的文…

SpringCloud之Feign

文章目录 前言一、Feign的介绍二、定义和使用Feign客户端1、导入依赖2、添加EnableFeignClients注解3、编写FeignClient接口4、用Feign客户端代替RestTemplate 三、自定义Feign的配置1、配置文件方式全局生效局部生效 2、java代码方式 四、Feign的性能优化连接池配置 五、Feign…

代码随想录算法训练营第六十天丨 单调栈03

84.柱状图中最大的矩形 思路 单调栈 本地单调栈的解法和接雨水的题目是遥相呼应的。 为什么这么说呢&#xff0c;42. 接雨水 (opens new window)是找每个柱子左右两边第一个大于该柱子高度的柱子&#xff0c;而本题是找每个柱子左右两边第一个小于该柱子的柱子。 这里就涉…

从入门到精通,mac电脑录屏软件使用教程!

“mac电脑怎么录屏呀&#xff0c;刚买了一台mac电脑&#xff0c;用了几个月感觉挺流畅的&#xff0c;最近因为工作原因&#xff0c;需要用到录屏功能&#xff0c;但是我不会操作&#xff0c;想问问大家有没有简单易懂的录屏教程&#xff0c;谢谢啦。” 在日常生活中&#xff0…

几个强力的nodejs库

几个强力的nodejs库 nodejs被视为许多Web开发人员的理想运行时环境。 nodejs的设计是为了在运行时中使用JavaScript编写的代码&#xff0c;它是世界上最流行的编程语言之一&#xff0c;并允许广泛的开发者社区构建服务器端应用程序。 nodejs提供了通过JavaScript库重用代码的…

FastJsonAPI

maven项目 pom.xml <dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.26</version></dependency><dependency><groupId>junit</groupId>&l…

Java读写Jar

Java提供了读写jar的类库Java.util.jar&#xff0c;Java获取解析jar包的工具类如下&#xff1a; import java.io.File; import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; import java.util.Enumeration; import java.util.HashMap; import …

【图像分类】【深度学习】【Pytorch版本】ResNet模型算法详解

【图像分类】【深度学习】【Pytorch版本】 ResNet模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】 ResNet模型算法详解前言ResNet讲解Deep residual learning framework(深度残差学习框架)残差结构(Residuals)ResNet模型结构 ResNet Pytorch代码完整代码总结 前…