#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可联系运营同学或者发送邮件进行项目层面合作沟通。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【23真题】很少见!第6题有点新颖!

今天分享的是23年太原理工大学801的信号与系统试题及解析。 本套试卷难度分析:该学校考察数字电路和信号与系统两部分,数字电路我没有知道,所以不知道难度。但是从信号部分来看,考察的知识点非常常见,对信号时域和频域…

基于Spring Boot 框架的试卷自动生成系统的设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题,今天给大家介绍…

11.16~11.19绘制图表,导入EXCEL中数据,进行拟合

这个错误通常是由于传递给curve_fit函数的数据类型不正确引起的。根据你提供的代码和错误信息,有几个可能的原因: 数据类型错误:请确保ce_data、lg_data和product_data是NumPy数组或类似的可迭代对象,且其元素的数据类型为浮点数。…

Altium Designer 相同模块的布局布线复用-AD

1、利用交互式布线,将两个相同模块的元器件在PCB上分块显示。 在原理图中,框选某一模块电路、按快捷键 TS 切换到PCB编辑界面、工具>器件摆放>在矩形区域内排列(可将模块中的器件都集中放置到矩形框内)。2、为模块电路添加 …

spring-boot-maven-plugin插件 —— 重新打包命名

如果需要重新打包的 jar 具有与项目的 artifactId 属性定义的本地名称不同的名称&#xff0c;只需使用标准 finalName&#xff0c;如下例所示&#xff1a; <build><!-- 打包重命名&#xff0c;打包后文件名称&#xff1a;项目名 --><finalName>${project.ar…

【如何让你的建筑设计更高效】推荐7个3DMAX建筑设计的实用插件

3DMAX是创建具有复杂对象和照片级真实感材质的大型三维项目的绝佳工具。它有用于粒子模拟和参数化建模的内置工具&#xff0c;只要有足够的时间和练习&#xff0c;你就可以创建任何东西。然而&#xff0c;总有改进的余地。许多第三方开发人员已经发布了自己的扩展&#xff0c;也…

课程设计:C++实现哈夫曼编码

功能实现&#xff1a; //1:先计算每个字符的权重//2&#xff1a;构建哈夫曼树//3&#xff1a;得出每个字符的哈夫曼编码。//4:根据哈夫曼编码转化为字符 代码实现&#xff1a; // 哈夫曼编码.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //1:先计…

[ 云计算 | AWS 实践 ] 使用 Java 更新现有 Amazon S3 对象

本文收录于【#云计算入门与实践 - AWS】专栏中&#xff0c;收录 AWS 入门与实践相关博文。 本文同步于个人公众号&#xff1a;【云计算洞察】 更多关于云计算技术内容敬请关注&#xff1a;CSDN【#云计算入门与实践 - AWS】专栏。 本系列已更新博文&#xff1a; [ 云计算 | …

用css实现原生form中radio单选框和input的hover已经focus的样式

一.问题描述&#xff1a;用css实现原生form中radio单选框和input的hover已经focus的样式 在实际的开发中&#xff0c;一般公司ui都会给效果图&#xff0c;比如单选按钮radio样式&#xff0c;input输入框hover的时候样式&#xff0c;以及focus的时候样式&#xff0c;等等&#…

C++学习笔记——C++ deque和vector的区别

C中的std::deque&#xff08;双端队列&#xff09;和std::vector&#xff08;向量&#xff09;是两种不同的容器类型&#xff0c;它们有以下区别&#xff1a; 内部实现方式不同&#xff1a;std::deque使用了一种双端队列的数据结构&#xff0c;它由多个块&#xff08;chunks&am…

软件外包开发需要注意的问题

软件外包开发是一种常见的业务模式&#xff0c;但在选择和合作外包团队时需要注意一些关键问题&#xff0c;以确保项目的成功和顺利进行。以下是一些在软件外包开发过程中需要注意的问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开…

[oeasy]python001_先跑起来_python_三大系统选择_windows_mac_linux

先跑起来 &#x1f94a; Python 什么是 Python&#xff1f; Python [ˈpaɪθɑ:n]是 一门 适合初学者 的编程语言 类库 众多 几行代码 就能 出 很好效果 应用场景丰富 在 各个应用领域 都有 行内人制作的 python 工具类库 非常专业、 好用 特别是 人工智能领域 pytho…

C++ DAY03 类与对象

概述 对象&#xff1a;真实存在的事物 类&#xff1a; 多个对象抽取其共同点形成的概念 静态特征提取出的概念称为成员变量, 又名属性 动态特征提取出的概念称为成员函数, 又名方法 类与对象的关系 在代码中先有类后有对象 一个类可以有多个对象 多个对象可以属于同一个…

HashMap会用就行了?一文解决HashMap的底层问题

前言 我们的手机通讯录之所以能快速定位到特定联系人&#xff0c;就是因为它运用了HashMap底层的原理。手机通讯录将每个联系人的姓名作为键&#xff0c;电话号码作为对应的值&#xff0c;通过这个键值对的方式实现了快速的数据定位和获取。就像你通过关键字快速找到对应的联系…

vue动态配置路由

文章目录 前言定义项目页面格式一、vite 配置动态路由新建 /router/utils.ts引入 /router/utils.ts 二、webpack 配置动态路由总结如有启发&#xff0c;可点赞收藏哟~ 前言 项目中动态配置路由可以减少路由配置时间&#xff0c;并可减少配置路由出现的一些奇奇怪怪的问题 路由…

你学了Python之后让你成为行业卷王,升职加薪更有优势

都说Python能够实现自动化&#xff0c;那么Python具体能应用在哪些地方?哪些岗位学了Python更有优势?今天我们来看看一些大神将Python应用的出神入化的成果。 在这之前&#xff0c;先跟为大家分享个真实的故事。我朋友小宇前段时间为了一个品牌设计的大项目&#xff0c;想方案…

Elasticsearch 和 LangChain 合作开发可用于生产的 RAG 模板

作者&#xff1a;Aditya Tripathi 在过去的几个月里&#xff0c;我们一直与 LangChain 团队密切合作&#xff0c;他们在推出 LangServe 和 LangChain 模板方面取得了进展&#xff01; LangChain Templates 是一组用于构建生产质量的生成式 AI 应用程序的参考架构。 你可以在此处…

QMI8658A Datasheet Rev A-勘误表

QMI8658A Datasheet Rev A-勘误表 1. Reset Register2. CTRL9 Command List3. Temp Sensor Output 1. Reset Register 在5.9章节 和 7.4 章节对复位操作的写入数据&#xff0c;有笔误 正确的数据是&#xff1a; 0xB0 2. CTRL9 Command List 在 5.10.2 章节 Table 28. List…

汇编-loop循环指令

LOOP指令是根据ECX计数器循环&#xff0c;将语句块重复执行特定次数。 ECX自动作为计数器&#xff0c; 每重复循环一次就递减1。 语法如下所示&#xff1a; 循环目的地址必须在距离当前位置计数器的-128到127字节范围内 LOOP指令的执行有两个步骤&#xff1a; 第一步&…

SpringBoot的启动流程

一、SpringBoot是什么&#xff1f; springboot是依赖于spring的&#xff0c;比起spring&#xff0c;除了拥有spring的全部功能以外&#xff0c;springboot无需繁琐的xml配置&#xff0c;这取决于它自身强大的自动装配功能&#xff1b;并且自身已嵌入Tomcat、Jetty等web容器&am…