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

news2024/12/27 4:57:50

上一个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.coloradmin.cn/o/1234877.html

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

相关文章

Redis从入门到精通(二)- 入门篇

文章目录 0. 前言1. 入门篇[【入门篇】1.1 redis 基础数据类型详解和示例](https://icepip.blog.csdn.net/article/details/134438573)[【入门篇】1.2 Redis 客户端之 Jedis 详解和示例](https://icepip.blog.csdn.net/article/details/134440061)[【入门篇】1.3 redis客户端之…

KNN(k近邻法)算法理论和实战

KNN概念 k近邻法(k-nearest neighbor,k-NN)是一种基本分类与回归方法。 k近邻法的输入为实例的特征向量对应于特征空间的点;输出为实例的类别,可以取多类。 k近邻法假设给定一个训练数据集,其中的实例类…

基于非链式(数组)结点结构的二叉树的层序、先序、中序、后序输入创建以及层序、先序、中序、后序输出

这个系列来记录学习一下如何用数组完成二叉树的4种顺序的创建,以及其4种顺序的遍历。 我们知道,对于一棵二叉树而言它有4种遍历的顺序,那自然就导致其输入结点时,也分这四种顺序。 分别是—— 层序: …

Kotlin 核心语法,为什么选择Kotlin ?

Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性。 Kotlin是使用Java开发者的思维被创建的,Intellij作为它主要的开发IDE。对于 Android开发者&#…

Java实现围棋算法

围棋是一种源自中国的棋类游戏,也是世界上最古老、最复杂的棋类游戏之一。该游戏由黑白两方交替放置棋子在棋盘上进行,目的是将自己的棋子占据更多的空间,并将对手的棋子围死或吃掉,最终获得胜利。围棋不仅是一种游戏,…

以太网_寻址

【架构图】 【ipconfig/all】 MAC地址:作用于本地网络,数据包发送到本地交换机或路由器后经判断目的地址是本地网络地址会转发给当前MAC地址对应的网线端口。 IP地址:供路由器寻址,会跟子网掩码进行运算,属于同一网络…

两种Deformable Attention的区别

先分别写一下流程 Deformable DETR(2020)的Deformable Attention 解释: Deformable Attention如下图所示K3, M3K是指每个zq会和K个offset算attention,M是指M个head, z q z_q zq​有NHW个: 参考点:reference points&am…

golang学习笔记——接口和继承比较1

继承 Go 语言的设计之初,就不打算支持面向对象的编程特性,因此 Go 不支持面向对象的三大特性之一——继承。但是 Go 可以通过组合的思想去实现 “继承”。继承是面向对象的三大特性之一,继承是从已有的类中派生出新的类,新的类能…

股票自选(四)

4-自选 自选表功能,均需要使用 Token 令牌进行操作,目的是为了将数据隔离。 添加自选表的作用是进行推送, 将 自选表中的近十天的涨跌幅情况通过邮箱的方式推送给对应的用户。 一. 添加到自选表 接口描述: 接口地址:/StockApi/stockSele…

快速幂极简写法快速幂求逆元

快速幂原理介绍 快速幂模板 int qmi(int a, int k, int p) {int res 1;while (k) {//后面的a其实是底数与其指数的运算结果了,是不断迭代的//第一个a其实就是a的2的0次方if (k & 1) res (res * a) % p;a (a * a) % p;//注意,a是一个不断变化的过…

华为ac+fit无线2层漫游配置案例

ap的管理dhcp在ac上,业务dhcp在汇聚交换机上、并且带2层漫游 R1: interface GigabitEthernet0/0/0 ip address 11.1.1.1 255.255.255.0 ip route-static 12.2.2.0 255.255.255.0 11.1.1.2 ip route-static 192.168.0.0 255.255.0.0 11.1.1.2 lsw1: vlan batch 100…

深入理解Java虚拟机-GC

深入理解Java虚拟机-GC 当需要排查各种内存溢出、内存泄漏时,当垃圾回收成为系统到达更高并发量的瓶颈时,我们必须对内存动态分配和内存回收技术这样的“自动化”技术采用必要的监控和调节。 Java堆和方法区:一个接口的多个实现类需要的内存…

基于知识问答的上下文学习中的代码风格11.20

基于知识问答的上下文学习中的代码风格 摘要1 引言2 相关工作3 方法3.1 概述3.2 元函数设计3.3 推理 4 实验4.1 实验设置4.2 实施细节4.3 主要结果 摘要 现有的基于知识的问题分类方法通常依赖于复杂的训练技术和模型框架,在实际应用中存在诸多局限性。最近&#x…

优秀智慧园区案例 - 三亚市崖州湾科技城智慧园区,先进智慧园区建设方案经验

一、项目背景 三亚崖州湾科技城作为海南自贸港建设的重点园区,是重点推进的海南自贸港先导项目之一。崖州湾科技城全力抢抓有利时机,进一步拓宽发展思路,持续深化体制机制创新,牢牢把握“打造产学研城深度融合的聚集地”这一核心…

手把手带你在AutoDL上部署InternLM-Chat-7B Transformers

手把手带你在AutoDL上部署InternLM-Chat-7B Transformers 调用 项目地址:https://github.com/KMnO4-zx/self_llm.git 如果大家有其他模型想要部署教程,可以来仓库提交issue哦~ 也可以自己提交PR! InternLM-Chat-7B Transformers 部署调用 环…

Python爬虫技巧:百万级数据怎么爬取?

目录 前言 一、使用多线程/协程提高爬虫速度 1.1 使用多线程 1.2 使用协程 1.3 注意事项 二、使用代理IP解决目标网站限制爬虫的问题 三、使用分布式爬虫 四、其他一些小技巧 总结 前言 在实际的爬取过程中,我们经常会遇到一些需要大量爬取数据的情况&…

ConcurrentHashMap和HashMap的区别

HashMap相关知识点见主页博客:HashMap散列表的相关知识点-CSDN博客 目录 1、ConcurrentHashMap 2、ConcurrentHashMap和HashMap的区别 1、ConcurrentHashMap ConcurrentHashMap 是 Java 中的一个线程安全的哈希表实现,它是java.util.Map接口的一个具…

负载均衡Ribbon和Feign的使用与区别

Ribbon 的介绍 Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。主要功能是提供客户端的软件负载均衡和服务调用。Ribbon 客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer…

【python】Python生成GIF动图,多张图片转动态图,pillow

pip install pillow 示例代码: from PIL import Image, ImageSequence# 图片文件名列表 image_files [car.png, detected_map.png, base64_image_out.png]# 打开图片 images [Image.open(filename) for filename in image_files]# 设置输出 GIF 文件名 output_g…

深入理解JSON及其在Java中的应用

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:每天一个知识点 ✨特色专栏&#xff1a…