CN116028651B - 一种支持本体和数据增量更新的知识图谱构建系统及方法 - Google Patents
一种支持本体和数据增量更新的知识图谱构建系统及方法 Download PDFInfo
- Publication number
- CN116028651B CN116028651B CN202310311149.0A CN202310311149A CN116028651B CN 116028651 B CN116028651 B CN 116028651B CN 202310311149 A CN202310311149 A CN 202310311149A CN 116028651 B CN116028651 B CN 116028651B
- Authority
- CN
- China
- Prior art keywords
- data
- new
- delete
- current
- edge
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的一个技术方案是公开了一种支持本体和数据增量更新的知识图谱构建系统。本发明的另一个技术方案是公开了一种支持本体和数据增量更新的知识图谱构建方法。本发明支持了图谱本体增量更新,用户只需在图谱管理模块中对图谱本体、绑定的数据进行设计和修改,然后执行图谱构建即可。并且,这个过程只会对发生变化的实体和关系进行局部更新,使得构建过程更加高效。本发明还支持了图谱数据增量更新,数据源的数据变化,能够通过数据库日志捕获模块及时获取,然后经过消息队列模块,由图谱构建模块处理之后进入到图数据库,保证了下游图数据库数据的实效性。同时,实现了图谱本体增量更新和数据增量更新协同工作。
Description
技术领域
本发明涉及一种同时支持处理知识图谱本体的增量变化和图谱数据的增量变化的知识图谱构建系统及方法,涉及知识图谱构建系统及方法技术领域。
背景技术
知识图谱(Knowledge Graph)以结构化的形式描述客观世界中的概念、实体及关系,将互联网上的信息表达成更接近人类认知的形式,提供了一种更好地组织、管理和理解海量复杂信息的能力。谷歌于2012年提出知识图谱,并将其成功应用于搜索引擎,促使知识图谱在更多的领域、更多的行业中使用。
知识图谱技术是知识图谱建立和应用的技术,是语义Web、自然语言处理和机器学习等交叉学科。知识图谱技术可以分为三部分:知识图谱构建技术、知识图谱查询与推理和知识图谱应用。工业界围绕知识图谱技术进行系统化、平台化建设可以整体概括为如图1所示数据流。
首先,利用相关方法进行知识的抽取,可以是利用自然语言处理算法,比如实体抽取、关系抽取、属性抽取等算法,也可以是传统的用户规则程序,将得到的结构化数据存储到数据库中,常用的比如MySQL、MongoDB数据库。
然后,基于用户的知识图谱本体设计,本体与数据源数据的对应关系,进行知识图谱构建。通过这一步,传统的关系型数据库中的数据就会被作为实体、关系及属性等知识图谱数据,存储到相应的图数据库中,供上层的知识图谱应用查询、分析和展示。
知识图谱技术在企业的实际落地应用中,特别是金融、电商、公安等领域,构建的知识图谱规模通常都非常大,可以达到十亿实体,几十亿关系,超百亿属性的规模。如此大的规模,要想完成一次知识图谱构建,通常需要花费几十个小时甚至更久的时间。一个构建好的图谱,在实际的使用过程中,会时常随着数据和业务的变化而变化,这种变化包括两种:
1. 知识图谱本体的变化:用户可能增加、删除或修改了某些类型的实体和关系,也有可能增加、删除或修改了某种类型实体或关系的属性。比如在一个金融图谱中,用户可能增加了基金类的实体,或者为企业实体增加或删除了注册地址的属性等等。知识图谱本体变化反映到图数据库的问题称为知识图谱本体增量更新。
2. 知识图谱数据的变化:在一个包含企业实体金融图谱中,因为注册新的企业或者某些企业注销,或者某个企业修改了企业名称、注册地址等等,导致的图数据库中具体实例数据的变化,就是知识图谱数据的变化。知识图谱数据源数据变化反映到图数据库的问题称为知识图谱数据增量更新。
为了能够更快地将知识图谱本体和数据的变化反映到下游系统,需要知识图谱平台能够支持这两种类型的变化,并且是基于增量的方式处理这两种变化,这样才能保证系统的性能是高效的。现有的知识图谱平台,在处理知识图谱本体和数据变化时,存在以下的问题:
1. 对于知识图谱本体的变化,通常是需要用户基于修改后的新本体进行全量的重构,无法只针对变化的本体或属性的变更自动对图谱进行局部修改;
2. 对于知识图谱数据的变化,现有的解决方案只是单纯考虑本体没有发生变化时的处理逻辑,没有结合知识图谱本体变化的解决方案,处理增量数据时,如果不考虑图谱本体的变化,会导致系统运行时出现逻辑错误,进而导致数据上的错误。
发明内容
本发明的目的是设计一种支持图谱本体增量更新的构建方法,该构建方法:1)只针对发生变化的本体进行图数据库数据的修改;2)支持数据源数据一旦发生变化,下游图数据库中的数据能同时跟着变化,同时要能够与图谱本体增量更新协同工作,保证系统整体逻辑和相关数据的正确性。
为了达到上述目的,本发明的技术方案是提供了一种支持本体和数据增量更新的知识图谱构建系统,其特征在于,包括:
图谱管理模块,用于给用户提供知识图谱的本体设计及数据配置界面;在进行知识图谱构建时,将用户设计的知识图谱的本体及数据配置信息发送给下游的图谱构建模块;
图谱构建模块,用于根据接收到的本体和数据配置信息,从数据源中读取全量数据或者从消息队列中读取数据库的增量数据库日志数据,然后将数据写入到下游的图数据库中;
图数据库,用于提供图模型数据的存储和查询功能;在图数据库中,原始存储于数据表中的数据被转换为了实体、实体属性、关系及关系属性;
数据源模块,作为知识图谱的数据源,数据源支持增量数据库日志,从而能够让数据库日志捕获模块实时获取数据源的变更信息,推送给下游的图谱构建模块;
数据库日志捕获模块,用于实时从数据源模块中获取数据变更的数据库日志信息,这些数据库日志描述了数据源中数据发生的增、删、改变化,若发生了删、改,数据库日志还包含删、改之前的原始数据内容;这些数据库日志按照时间的先后顺序发送到消息队列模块;
消息队列模块,用于保证数据库日志捕获模块发送的消息和图谱构建模块收到的消息有相同的顺序;实现作为消息生产者的数据库日志捕获模块和作为消息消费者的图谱构建模块的解耦。
优选地,在所述图谱管理模块中维护着每一个知识图谱的最新版本,不需要进行多版本管理。
本发明的另一个技术方案是提供了一种支持本体和数据增量更新的知识图谱构建方法,基于上述的知识图谱构建系统实现,其特征在于,包括图谱本体增量更新流程以及数据增量更新流程,其中:
数据增量更新流程包括以下步骤:
数据库日志捕获模块从支持日志的数据源模块中实时获取数据源数据的变更日志,然后将这些数据库日志推送到消息队列模块,图谱构建模块订阅消息队列模块上对应数据库的消息,消息的处理逻辑包括如下步骤:
步骤A、为每个知识图谱创建一个独立的线程,用于处理来自消息队列模块的数据库日志数据;
步骤B、从消息队列拉取消息MG(DBG,TableG,OPG,DataG),其中:DBG表示消息来自的数据库;TableG表示消息来自的数据表;OPG表示消息的类型;DataG是发生变化的数据本身;
步骤C、从当前版本的图谱信息Gcurrent(SG,DG)中找到以DBG、TableG为数据源的所有实体Ncurrent(SN,DN)和关系Ecurrent(SE,DE) ,其中:SN表示实体本体信息,DN表示实体的数据配置信息,SE表示关系信息,DE表示关系的数据配置信息;
步骤D、根据Ncurrent(SN,DN)和Ecurrent(SE,DE),将DataG封装为实体实例nodes和关系实例edges;
步骤E、根据OPG的信息,对实体实例nodes和关系实例edges执行对应的增加、删除和更新操作;
在上述步骤A至步骤E执行过程中,若用户在图谱管理模块中完成知识图谱本体的设计并为设计的本体配置数据后,得到了完整图谱配置信息Gnew(SG,DG),其中,SG为本体信息集合,DG为数据配置信息集合,图谱管理模块将完整图谱配置信息Gnew(SG,DG) 作为图谱构建请求的一部分发送给图谱构建模块,图谱构建模块根据收到的图谱构建请求,从本地查找同一个知识图谱的当前版本的图谱信息Gcurrent(SG,DG),图谱构建模块通过比较Gcurrent(SG,DG)和Gnew(SG,DG),最终得到两个图谱配置信息:Gdelete(SG,DG)和更新了状态信息的Gnew(SG,DG),其中,Gdelete(SG,DG)描述了当前图数据库中的哪些数据需要删除;
当图谱管理模块获得了Gdelete(SG,DG)和更新了状态信息的Gnew(SG,DG)后,数据增量更新流程暂停,暂停从消息队列模块中继续接收数据库日志消息,进入图谱本体增量更新流程,更新图数据库,包括以下步骤:
基于Gdelete(SG,DG)的图谱信息,对当前图数据库中的数据执行删除操作;
基于Gnew(SG,DG)对图数据库中的数据执行增加操作,使得最终图数据库中的数据和收到图谱构建请求的Gnew(SG,DG)保持一致;
完成了图谱本体增量更新流程后,再启动数据增量更新流程,开始从消息队列模块接收消息、处理消息。
优选地,在所述步骤B中,消息的类型包括增加、删除、更新,则有:
若消息的类型是更新,DataG要包含更新前的数据和更新后的数据;
若消息的类型是增加,DataG只需要包含增加的数据本身;
若消息的类型是删除,DataG只需要包含删除前的数据。
优选地,比较Gcurrent(SG,DG)和Gnew(SG,DG)得到Gdelete(SG,DG)和更新了状态信息的Gnew(SG,DG)具体包括以下步骤:
步骤1、比较Gcurrent(SG,DG)和Gnew(SG,DG)绑定的数据库是否发生了变化:
若绑定的数据库发生了变化,用新的数据库中的数据进行知识图谱的构建过程,则Gdelete(SG,DG)= Gcurrent(SG,DG),并且将Gdelete(SG,DG)的操作类型属性设置为“删除数据库”,然后将Gnew(SG,DG)的操作状态设置为1,表示Gnew(SG,DG)的配置信息还没有被处理,获得更新了状态信息的Gnew(SG,DG);
若绑定的数据库没有发生变化,则进入步骤2的实体比较子过程和步骤3的关系比较子过程;
步骤2、实体比较子过程:
比较Gcurrent(SG,DG)的实体集合Ncurrent(SN,DN)和Gnew(SG,DG)的实体集合Nnew(SN,DN),得到需要执行删除操作的实体信息集合Ndelete(SN,DN)和更新了操作状态的Nnew(SN,DN),其中,Ndelete(SN,DN)属于Gcurrent(SG,DG),SN表示实体信息,DN表示实体的数据配置信息;
步骤3、关系比较子过程:
比较Gcurrent(SG,DG)的关系集合Ecurrent(SN,DN)和Gnew(SG,DG)的关系集合Enew(SE,DE),得到需要执行删除操作的关系信息集合Edelete(SE,DE)和更新了操作状态的Enew(SE,DE),其中,Edelete(SE,DE)属于Gdelete(SG,DG),SE表示关系本体信息,DE表示关系的数据配置信息。
优选地,所述步骤2包括以下步骤:
步骤201、针对实体集合Ncurrent(SN,DN)中的每个实体nodecurrent(Snode,Dnode),检查nodecurrent(Snode,Dnode)是否在Nnew(SN,DN)中存在,其中,Snode表示实体的信息,Dnode表示实体的配置数据信息:
如果不存在,表示nodecurrent(Snode,Dnode)需要被删除,直接把其放入到Ndelete(SN,DN)中,并且把nodecurrent(Snode,Dnode)的操作类型改为“删除实体”;
如果存在,将Nnew(SN,DN)中与nodecurrent(Snode,Dnode)对应的实体表示为nodenew(Snode,Dnode),进入步骤202比较nodecurrent(Snode,Dnode)和nodenew(Snode,Dnode);
步骤202、比较nodecurrent(Snode,Dnode)和nodenew(Snode,Dnode)的数据配置信息:
若绑定的数据表发生了变更,等价于实体当前的数据完全被删除,然后加载新的数据表中的数据,写入到图数据库中,此时把nodecurrent(Snode,Dnode)放到Ndelete(SN,DN)中,并设置操作类型为“删除实体”,然后把nodenew(Snode,Dnode)的状态设置为1,表示还未处理;
若数据配置信息没有发生变化,进入步骤203比较nodecurrent(Snode,Dnode)的属性信息Pcurrent(SP,DP)和nodenew(Snode,Dnode)的属性信息Pnew(SP,DP),其中,SP是属性本体集合,DP是属性对应的数据表字段和数据类型;
步骤203、遍历Pcurrent(SP,DP)的每个属性propcurrent(Sprop,Dprop),检查当前属性propcurrent(Sprop,Dprop)是否在Pnew(SP,DP)中存在:
若不存在,则将propcurrent(Sprop,Dprop)放入到Pdelete集合中,将nodedelete操作类型设置为“删除属性”,其中,nodedelete表示Ndelete(SN,DN)的实体,Pdelete是nodedelete的属性集合;
若存在,比较propcurrent(Sprop,Dprop)和Pnew(SP,DP)中对应的属性propnew的数据配置信息Dprop:若Dprop不一致,则将propcurrent(Sprop,Dprop)放入到Pdelete集合中;若Dprop一致,表示此属性没有发生变化,将propnew的状态设置为2,表示无需后面的操作。
优选地,所述步骤3包括以下步骤:
步骤301、针对Ecurrent(SN,DN)中的每个关系edgecurrent(Sedge,Dedge),检查edgecurrent(Sedge,Dedge)是否在Enew(SE,DE)中已经存在:
若不存在,直接把edgecurrent(Sedge,Dedge)放入到Edelete(SE,DE)中,并且把edgecurrent(Sedge,Dedge)的操作类型改为“删除关系”;
若已存在,将Enew(SE,DE)中与edgecurrent(Sedge,Dedge)对应的关系表示为edgenew,进入步骤302比较edgecurrent(Sedge,Dedge)和edgenew;
步骤302、比较edgecurrent(Sedge,Dedge)和edgenew的数据配置信息:
若绑定的数据表发生了变更,等价于关系当前的数据完全被删除了,然后再加载新数据表中的数据,写入到图数据库中,此时把edgecurrent(Sedge,Dedge)放到Edelete(SE,DE)中,并设置操作类型为“删除关系”,然后把edgecurrent(Sedge,Dedge)的状态设置为1,表示还未处理;
若头实体ID对应的数据表字段和尾实体ID对应的数据表字段中的任何一个发生变化,都表示旧的关系完全失效,把edgecurrent(Sedge,Dedge)放到Edelete(SE,DE)中,并设置操作类型为“删除关系”,然后把edgecurrent(Sedge,Dedge)的状态设置为1,表示还未处理;
若数据配置信息没有发生变化,进入步骤303比较edgecurrent(Sedge,Dedge)的属性信息Pcurrent(SP,DP)和edgenew的属性信息Pnew(SP,DP),其中,SP是属性集合,DP是属性的数据信息,包含属性对应的数据表字段及数据类型;
步骤303、遍历Pcurrent(SP,DP)的每个属性propcurrent(Sprop,Dprop),检查属性propcurrent(Sprop,Dprop)是否在Pnew(SP,DP)中存在:
若不存在,则将propcurrent(Sprop,Dprop)放入到Pdelete集合中,将edgedelete操作类型设置为“删除属性”,其中,edgedelete表示Edelete(SE,DE)的关系,Pdelete是edgedelete的属性集合;
若存在,则比较propcurrent(Sprop,Dprop)和propnew的数据配置信息Dprop:若Dprop不一致,则将propcurrent(Sprop,Dprop)放入到Pdelete中;若一致,将propnew的状态设置为2,表示无需后面的操作。
优选地,基于Gdelete(SG,DG)的图谱信息,对当前图数据库中的数据执行删除操作具体包括以下步骤:
步骤401、检查Gdelete(SG,DG)的操作类型是否是“删除数据库”:
如果是,则直接执行删除当前整个图数据库的操作;
如果不是,则进入步骤402执行实体的删除操作和进入步骤404执行关系的删除操作;
步骤402、遍历Gdelete(SG,DG)的实体集合Ndelete的每个实体nodedelete,检查nodedelete的操作类型是否是“删除实体”:
如果是,则直接从图数据库中删除该实体;
如果不是,则进入步骤403,处理nodedelete的属性集合Pdelete;
步骤403、遍历属性集合Pdelete的每个属性,从图数据库中删除nodedelete对应实体的这些属性;
步骤404、遍历Gdelete(SG,DG)的关系集合edgedelete的每个关系edgedelete,检查edgedelete的操作类型是否是“删除关系”:
如果是,则直接从图数据库中删除该关系;
如果不是,则进入步骤405,处理edgedelete的属性集合Pdelete;
步骤405、遍历属性集合Pdelete的每个属性,从图数据库中删除edgedelete对应关系的这些属性。
优选地,基于Gnew(SG,DG)对图数据库中的数据执行增加操作包括以下步骤:
步骤501、检查Gnew(SG,DG)的操作类型是否为“新增数据库”:
如果是,则先执行创建图数据库实例的过程后,进入步骤502;
如果不是,则直接进入步骤502;
步骤502、遍历Gnew(SG,DG)的实体集合Nnew(SN,DN)的每个实体nodenew(Snode,Dnode),检查其状态是否为1:
如果实体nodenew(Snode,Dnode)的状态是1,则需要先根据Snode描述的实体信息在图数据库中创建实体后,再进入步骤503;
如果实体nodenew(Snode,Dnode)的状态是2,此时需要检查nodenew(Snode,Dnode)的属性集合Pnew:
若存在状态为1的属性propnew(Sprop,Dprop),则先根据Sprop描述的属性信息为nodenew添加新的属性,然后根据Dprop描述的字段信息,从数据库中读取对应字段的数据,写入到图数据库中,从而完成nodenew新属性的添加和属性数据的导入;
步骤503、基于Dnode表示的数据配置信息,开始从数据源数据库的对应表中读取数据,然后将每一条数据封装为一个实体实例,写入到图数据库中,完成实体nodenew(Snode,Dnode)数据的写入,进入步骤504;
步骤504、遍历Gnew(SG,DG)的关系集合Enew(SE,DE)的每个关系edgenew(Sedge,Dedge),检查其状态是否为1:
如果edgenew(Sedge,Dedge) 的状态为1,先根据Sedge描述的关系信息在图数据库中创建关系后,进入步骤505;
如果edgenew(Sedge,Dedge) 的状态为2,检查edgenew(Sedge,Dedge)的属性集合Pnew:如果存在状态为1的属性propnew(Sprop,Dprop),则先根据Sprop描述的属性信息,为edgenew添加新的属性,然后根据Dprop描述的字段信息,从数据库中读取对应字段的数据,写入到图数据库中,从而完成edgenew新属性的添加和属性数据的导入;
步骤505、基于Dedge数据配置信息,开始从数据源数据库的对应表中读取数据,然后将每一条数据封装为一个关系实例,写入到图数据库中,完成关系edgenew(Sedge,Dedge)数据的写入。
与现有的技术方案相比,本发明具有如下有益效果:
1. 支持了图谱本体增量更新,用户只需在图谱管理模块中对图谱本体、绑定的数据进行设计和修改,然后执行图谱构建即可,无需考虑相比上一个版本修改了哪些内容,也无需手动修改下游图数据库的相关信息,即可交由图谱构建模块,自动地进行图数据库中数据的修改,最终使得图数据库中的数据和用户的图谱配置保持一致。并且,这个过程只会对发生变化的实体和关系进行局部更新,使得构建过程更加高效。
2. 支持了图谱数据增量更新,数据源的数据变化,能够通过数据库日志捕获模块及时获取,然后经过消息队列模块,由图谱构建模块处理之后进入到图数据库,保证了下游图数据库数据的实效性。同时,实现了图谱本体增量更新和数据增量更新协同工作。
附图说明
图1示意了知识图谱平台化建设的整体数据流;
图2示意了知识图谱构建系统的系统结构;
图3示意了支持本体增量更新的图谱构建流程;
图4示意了实体信息比较子过程;
图5示意了关系信息比较子过程;
图6示意了更新图数据库子过程
图7示意了图谱数据变化的增量处理逻辑;
图8示意了结合图谱本体增量更新和数据增量更新的处理流程。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
如图2所示,本发明涉及的知识图谱构建系统包括:
图谱管理模块201,用于给用户提供知识图谱的本体设计及数据配置界面,在进行知识图谱构建时,将用户设计的知识图谱的本体及数据配置信息发送给下游的图谱构建模块202。
在图谱管理模块201中维护着每一个知识图谱的最新版本,此模块不需要进行多版本管理,用户需要通过图谱管理模块201设计一个知识图谱中包含哪些实体、哪些关系、实体和关系拥有哪些属性,同时,用户也需要配置知识图谱的数据源来自哪个数据库,以及知识图谱中的实体、关系分别对应结构化数据库中的哪张数据表,属性分别对应这些数据表的哪个字段。
用户完成一个知识图谱的本体和数据配置信息之后,可以执行知识图谱构建,此时图谱管理模块201将这些数据配置信息封装为一个JSON格式的请求,发送给图谱构建模块202。
图谱构建模块202,负责根据接收到的本体和数据配置信息,从数据源中读取全量数据或者从消息队列中读取数据库的增量数据库日志数据,然后将数据写入到下游的图数据库206中。图谱构建模块202会存储一份和当前图数据库206中的本体和数据一致的用户配置信息。
图数据库206,提供图模型数据的存储和查询功能。在图数据库206中,原始存储于数据表中的数据被转换为了实体、实体属性、关系及关系属性。
数据源模块203,作为知识图谱的数据源,对于数据源的选择,有一个基本的要求,数据源要支持增量数据库日志,从而能够让数据库日志捕获模块实时获取数据源的变更信息,推送给下游的图谱构建模块。可以选用的技术包括:MySQL、MongoDB等。
数据库日志捕获模块204,用于实时从数据源模块203中获取数据变更的日志信息,这些数据库日志描述了数据源中数据发生的增、删、改变化,如果发生了删、改,还要包含删、改之前的原始数据内容。然后将这些数据库日志按照时间的先后顺序发送到消息队列模块205。
消息队列模块205,有两个重要的作用,一个是保证消息的有序性,即保证数据库日志捕获模块204发送的消息和图谱构建模块202收到的消息有相同的顺序,另一个实现作为消息生产者的数据库日志捕获模块204和作为消息消费者的图谱构建模块202的解耦。
基于图2所示的知识图谱构建系统,本发明还提供了一种实现同时支持本体增量和数据增量的图谱构建方法。
首先介绍实现本体增量构建的方法,整个图谱构建过程的整体流程如图3所示,构建过程主要有图谱管理模块201和图谱构建模块202来完成,具体步骤如下:
步骤1、在图谱管理模块201中完成本体的设计,根据具体的业务需求,设计整个知识图谱中包含哪些实体、哪些关系,以及这些实体和关系包含哪些数据。比如在金融场景下的知识图谱,可能包含的实体有企业、人、股票、债券等,包含的关系有董事、监事、高管、股东、控股等。企业会包含名称、行业、注册地址等实体属性,股东关系会包含持股比例、报告期等属性。这里将我们创建或更新的知识图谱表示为Gnew,配置的这些信息构成了一个知识图谱的本体信息集合SG,目前我们得到了Gnew(SG)。
步骤2、为步骤1设计的本体配置数据,数据配置包括以下内容:为知识图谱Gnew指定数据库信息,包括数据库类型(可以是MySQL、MongoDB等)、数据库名、IP地址、端口号等;为实体配置数据来自指定数据库的哪张数据表;指定实体的属性与数据表的字段对应关系,对于实体,必须要配置ID字段,用于唯一标识一个实体实例;配置关系来自于数据库的哪张数据表;配置关系的数据与数据表的哪些字段一一对应,关系必须配置起始实体ID字段和结束实体ID字段。这些数据配置信息的集合表示为DG,结合前面的本体配置信息,我们得到了一个知识图谱的完整图谱配置信息Gnew(SG,DG)。
步骤3、将步骤2得到的完整图谱配置信息Gnew(SG,DG)封装为一个JSON格式的图谱构建请求发送给图谱构建模块202。
步骤4、图谱构建模块202根据收到的图谱构建请求,从本地查找同一个知识图谱的当前版本的图谱信息Gcurrent(SG,DG)。Gcurrent(SG,DG)与目前图数据库206中的本体和数据保持一致。后面为了表述更简洁,将Gcurrent(SG,DG)表示为Gcurrent,将Gnew(SG,DG)表示为Gnew。接下来,就是通过比较Gcurrent(SG,DG)和Gnew两个配置,最终得到两个图谱配置信息:Gdelete(SG,DG)和更新了状态信息的Gnew。Gdelete(SG,DG)描述了当前图数据库206中的哪些数据需要删除,后面也会表示为Gdelete。
步骤5、首先比较Gcurrent和Gnew绑定的数据库是否发生了变化,一旦绑定的数据库发生了变化,就可以认为当前整个知识图谱的数据都发生了变更,这就等价于把当前图数据库206中的数据完全删除,然后用新的数据库中的数据进行图谱的构建过程。所以,令Gdelete=Gcurrent,并且将Gdelete的操作类型属性设置为“删除数据库”,然后将Gnew的操作状态设置为1,表示当前Gnew这个知识图谱的配置信息还没有被处理。此时就得到了最终的Gnew和Gdelete,会交由更新图数据库子过程来处理。
如果Gcurrent和Gnew绑定的数据库没有发生变化,接下来要进入步骤6的“实体比较子过程”和步骤7的“关系比较子过程”。
步骤6、实体比较子过程,就是比较Gcurrent的实体集合Ncurrent(SN,DN)和Gnew的实体集合Nnew(SN,DN),得到需要执行删除操作的实体信息集合Ndelete(SN,DN)和更新了操作状态的Nnew(SN,DN),其中,Ndelete属于Gdelete,SN表示实体本体信息,DN表示实体的数据配置信息。
实体比较子过程如图4所示,具体包括以下步骤:
步骤601、针对Ncurrent集合中的每个实体nodecurrent(Snode,Dnode),检查nodecurrent是否在Nnew中存在:如果不存在,表示nodecurrent需要被删除,直接把其放入到Ndelete中,并且把nodecurrent的操作类型改为“删除实体”;如果nodecurrent在Nnew中已经存在了,将其表示为nodenew,那么接下来就需要比较nodecurrent和nodenew。其中,Snode表示实体的信息,Dnode表示实体的配置数据信息。
步骤602、首先比较nodecurrent和nodenew的数据配置信息,如果绑定的数据表发生了变更,等价于实体当前的数据完全被删除,然后加载新的数据表中的数据,写入到图数据库206中,此时把nodecurrent放到Ndelete集合中,并设置操作类型为“删除实体”,然后把nodenew的状态设置为1,表示还未处理,这样后面的流程会根据nodenew的信息完成实体的创建和对应数据的写入。如果数据配置信息没有发生变化,那接下来就需要比较nodecurrent的属性信息Pcurrent(SP,DP)和nodenew的属性信息Pnew(SP,DP),其中,SP是属性本体集合,主要是属性的名称,DP是数据信息,就是属性对应的数据表字段和数据类型。
步骤603、遍历Pcurrent的每个属性propcurrent(Sprop,Dprop),检查属性propcurrent是否在Pnew中存在。如果不存在,则将propcurrent放入到Pdelete集合中,将nodedelete操作类型设置为“删除属性”,其中,nodedelete表示Gdelete实体集合Ndelete的实体,Pdelete是nodedelete的属性集合。如果存在,则需要比较propcurrent和propnew的数据配置信息Dprop,如果Dprop信息不一致,则同样需要将propcurrent放入到Pdelete集合中,如果一致,表示此属性没有发生变化,将propnew的状态设置为2,表示无需后面的操作。
步骤7、关系比较子过程,这个过程和实体比较子过程比较类似,比较Gcurrent的关系集合Ecurrent(SN,DN)和Gnew的关系集合Enew(SE,DE),得到需要执行删除操作的关系信息集合Edelete(SE,DE)和更新了操作状态的Enew(SE,DE),其中,Edelete属于Gdelete,SE表示关系本体信息,DE表示关系的数据配置信息。关系比较子过程如图5所示,具体包括以下步骤:
步骤701、针对Ecurrent集合中的每个关系edgecurrent(Sedge,Dedge),检查edgecurrent是否在Enew中已经存在,如果不存在,表示edgecurrent需要被删除,直接把其放入到Edelete中,并且把edgecurrent的操作类型改为“删除关系”。如果edgecurrent在Enew中已经存在了,将其表示为edgenew,那么接下来就需要比较edgecurrent和edgenew。
步骤702、首先比较edgecurrent和edgenew的数据配置信息,如果绑定的数据表发生了变更,等价于关系当前的数据完全被删除了,然后再加载新数据表中的数据,写入到图数据库中,此时把edgecurrent放到Edelete集合中,并设置操作类型为“删除关系”,然后把edgenew的状态设置为1,表示还未处理,这样后面的流程会根据edgenew的信息完成此关系的创建和对应数据的写入。
相比实体,关系的还有两个重要的数据配置,即头实体ID对应的数据表字段和尾实体ID对应的数据表字段,一旦这两个数据表字段任何一个发生变化,都表示旧的关系完全失效,需要把edgecurrent放到Edelete集合中,并设置操作类型为“删除关系”,然后把edgenew的状态设置为1。
如果数据配置信息没有发生变化,那接下来就需要比较edgecurrent的属性信息Pcurrent(SP,DP)和edgenew的属性信息Pnew(SP,DP),其中,SP是属性本体集合,主要包含属性的名称,DP是数据信息,包含属性对应的数据表字段及数据类型。
步骤703、遍历Pcurrent的每个属性propcurrent(Sprop,Dprop),检查属性propcurrent是否在Pnew中存在。如果不存在,则将propcurrent放入到Pdelete集合中,将edgedelete操作类型设置为“删除属性”,其中,edgedelete表示Gdelete关系集合edgedelete的关系,Pdelete是edgedelete的属性集合。如果存在,则需要比较propcurrent和propnew的数据配置信息Dprop,如果Dprop信息不一致,则同样需要将propcurrent放入到Pdelete中,如果一致,表示此属性没有发生变化,将propnew的状态设置为2,表示无需后面的操作。
步骤8、经过前面步骤之后,我们可以得到两个图配置信息Gnew(SG,DG)和Gdelete(SG,DG),接下来要执行更新图数据库206子过程的相关步骤,如图6所示。这个子过程也包含两个过程:先基于Gdelete(SG,DG)的图谱信息,对当前图数据库206中的数据执行必要的删除操作,然后再基于Gnew(SG,DG)对图数据库206中的数据执行增加操作,使得最终图数据库206中的数据和收到请求的Gnew(SG,DG)保持一致。
步骤9、根据Gdelete(SG,DG)从当前图数据库206中执行数据的删除操作,具体步骤如下:
步骤901、检查Gdelete的操作类型是否是“删除数据库”,如果是,则直接执行删除当前整个图数据库206的操作。如果不是,则执行实体和关系的删除操作。
步骤902、遍历Gdelete实体集合Ndelete的每个实体nodedelete,检查nodedelete的操作类型是否是“删除实体”,如果是,则直接从图数据库中删除该实体。如果不是,则需要处理nodedelete的属性集合Pdelete。
步骤903、遍历属性集合Pdelete的每个属性,从图数据库206中,删除nodedelete对应实体的这些属性。类似于关系数据库删除表字段的操作。
步骤904、遍历Gdelete关系集合edgedelete的每个关系edgedelete,检查edgedelete的操作类型是否是“删除关系”,如果是,则直接从图数据库206中删除该关系。如果不是,则处理edgedelete的属性集合Pdelete。
步骤905、遍历属性Pdelete的每个属性,从图数据库206中,删除edgedelete对应关系的这些属性。
步骤10、根据Gnew(SG,DG)的本体和数据配置信息,在当前图数据库206上执行增加操作。具体步骤如下:
步骤1001、检查Gnew的操作类型是否为“新增数据库”,如果是,则需要先执行创建图数据库实例的过程,这个过程类似于关系数据库的创建数据库操作,只有创建了数据库,才能执行后面的增加实体和关系的操作。
步骤1002、遍历Gnew实体集合Nnew的每个实体nodenew(Snode,Dnode),检查其状态是否为1。如果为1,表示这个实体没有处理过,则需要先根据Snode描述的本体信息在图数据库206中创建实体,此过程类似于关系数据库的创建新表操作。
步骤1003、基于Dnode数据配置信息,开始从数据源数据库的对应表中读取数据,然后将每一条数据封装为一个实体实例,写入到图数据库206中,完成实体nodenew数据的写入。
步骤1004、如果实体nodenew的状态为2,表示此实体已经在图数据库206中,不需要新增,此时需要检查nodenew属性集合Pnew,如果存在状态为1的属性propnew(Sprop,Dprop),则先根据Sprop描述的属性信息,为nodenew添加新的属性,类似于关系数据库的添加字段,然后根据Dprop描述的字段信息,从数据库中读取对应字段的数据,写入到图数据库206中,从而完成nodenew新属性的添加和属性数据的导入。
步骤1005、前面完成了实体的处理,接下来处理关系。遍历Gnew关系集合Enew的每个关系edgenew(Sedge,Dedge),检查其状态是否为1。如果为1,表示这个关系没有处理,需要先根据Sedge描述的本体信息在图数据库中创建关系,此过程也是类似于关系数据库的创建新表操作。
步骤1006、基于Dedge数据配置信息,开始从数据源数据库的对应表中读取数据,然后将每一条数据封装为一个关系实例,写入到图数据库中,完成实体edgenew数据的写入。
步骤1007、如果关系edgenew的状态为2,表示此关系已经在图数据库中,不需要新增,此时需要检查edgenew属性集合Pnew,如果存在状态为1的属性propnew(Sprop,Dprop),则先根据Sprop描述的属性信息,为edgenew添加新的属性,类似于关系数据库的添加字段,然后根据Dprop描述的字段信息,从数据库中读取对应字段的数据,写入到图数据库中,从而完成edgenew新属性的添加和属性数据的导入。
根据前面描述的步骤,能够以更加高效的方式完整支持知识图谱本体的增量变化的处理。接下来介绍系统如何实现图谱数据变化的增量处理。先根据图2系统结构图,介绍图谱数据变更的增量处理方法,然后再说明结合本体增量和数据增量的处理逻辑。
数据库日志捕获模块204从支持日志的数据源模块203中实时获取数据源数据的变更日志,比如MySQL的binlog日志、MongoDB的oplog日志,然后将这些数据库日志推送到消息队列模块205,消息队列模块205可以采用的实现有RabbitMQ、Kafka、RocketMQ等。然后图谱构建模块202订阅消息队列模块205上对应数据库的消息,消息的处理逻辑如图7所示,具体为如下步骤:
步骤1、为每个知识图谱创建一个独立的线程,用于处理来自消息队列模块205的数据库日志数据。
步骤2、从消息队列拉取消息MG(DBG,TableG,OPG,DataG),一个消息至少要包含四部分的数据:DBG表示消息来自的数据库;TableG表示消息来自的数据表;OPG表示消息的类型,有增加、删除、更新三种类型,分别表示数据是新插入的、数据被删除了、数据发生了字段值的更新;DataG是发生变化的数据本身,如果OPG是更新,DataG要包含更新前的数据和更新后的数据,如果OPG是增加,只需包含增加的数据本身,如果OPG是删除,也只需要包含删除前的数据。
步骤3、从Gcurrent(SG,DG)中找到以DBG、TableG为数据源的所有实体Ncurrent(SN,DN)和关系Ecurrent(SE,DE)。
步骤4、根据Ncurrent(SN,DN)和Ecurrent(SE,DE),将DataG封装为实体实例nodes和关系实例edges。
步骤5、然后根据OPG的信息,对nodes和edges执行对应的增加、删除和更新操作。
前面分别介绍了图谱本体增量更新和数据增量独立工作时的逻辑,若要同时支持图谱本体和数据的增量更新,则需要协调二者的工作流程,否则会出现程序上的错误。在前面图谱本体增量更新的步骤中,需要对图数据库中的实体和关系进行必要的增删改,类似于关系数据库的表的增删改,如果此时增量数据的处理逻辑还在执行,会导致向不存在的实体、关系或者属性中写入数据,或者删除了不该删除的数据。
结合了图谱本体增量更新和数据增量更新的处理流程如图8所示,具体步骤如下:
步骤1、收到了来自图谱管理模块201的图谱构建请求Gnew(SG,DG),然后和当前的Gcurrent(SG,DG)进行比对,这个过程在前面的支持本体增量的图谱构建流程中有详细介绍,最终得到Gdelete和更新了状态信息的Gnew。
步骤2、停止数据增量更新处理逻辑,即暂停从消息队列模块中继续接收数据库日志消息。
步骤3、根据Gdelete和Gnew执行具体的本体增量更新过程,这个过程的具体逻辑在前面的“更新图数据库子过程”中有详细的描述。
步骤4、在完成了图谱本体增量更新的所有流程之后,再启动数据增量更新处理逻辑,开始从消息队列模块205接收消息、处理消息。
Claims (9)
1.一种支持本体和数据增量更新的知识图谱构建系统,其特征在于,包括:
图谱管理模块,用于给用户提供知识图谱的本体设计及数据配置界面;在进行知识图谱构建时,将用户设计的知识图谱的本体及数据配置信息发送给下游的图谱构建模块;
图谱构建模块,用于根据接收到的本体和数据配置信息,从数据源中读取全量数据或者从消息队列中读取数据库的增量数据库日志数据,然后将数据写入到下游的图数据库中,其中,图谱构建模块通过图谱本体增量更新和数据增量更新协同工作的方式实现知识图谱的更新:
数据增量更新流程包括以下步骤:
数据库日志捕获模块从支持日志的数据源模块中实时获取数据源数据的变更日志,然后将这些数据库日志推送到消息队列模块,图谱构建模块订阅消息队列模块上对应数据库的消息,消息的处理逻辑包括如下步骤:
步骤A、为每个知识图谱创建一个独立的线程,用于处理来自消息队列模块的数据库日志数据;
步骤B、从消息队列拉取消息MG(DBG,TableG,OPG,DataG),其中:DBG表示消息来自的数据库;TableG表示消息来自的数据表;OPG表示消息的类型;DataG是发生变化的数据本身;
步骤C、从当前版本的图谱信息Gcurrent (SG,DG)中找到以DBG、TableG为数据源的所有实体Ncurrent (SN,DN)和关系Ecurrent (SE,DE) ,其中:SN表示实体本体信息,DN表示实体的数据配置信息,SE表示关系信息,DE表示关系的数据配置信息;
步骤D、根据Ncurrent (SN,DN)和Ecurrent (SE,DE),将DataG封装为实体实例nodes和关系实例edges;
步骤E、根据OPG的信息,对实体实例nodes和关系实例edges执行对应的增加、删除和更新操作;
在上述步骤A至步骤E执行过程中,若用户在图谱管理模块中完成知识图谱本体的设计并为设计的本体配置数据后,得到了完整图谱配置信息Gnew (SG,DG),其中,SG为本体信息集合,DG为数据配置信息集合,图谱管理模块将完整图谱配置信息Gnew (SG,DG) 作为图谱构建请求的一部分发送给图谱构建模块,图谱构建模块根据收到的图谱构建请求,从本地查找同一个知识图谱的当前版本的图谱信息Gcurrent (SG,DG),图谱构建模块通过比较Gcurrent(SG,DG)和Gnew (SG,DG),最终得到两个图谱配置信息:Gdelete(SG,DG)和更新了状态信息的Gnew(SG,DG),其中,Gdelete(SG,DG)描述了当前图数据库中的哪些数据需要删除;
当图谱管理模块获得了Gdelete(SG,DG)和更新了状态信息的Gnew (SG,DG)后,数据增量更新流程暂停,暂停从消息队列模块中继续接收数据库日志消息,进入图谱本体增量更新流程,更新图数据库,包括以下步骤:
基于Gdelete(SG,DG)的图谱信息,对当前图数据库中的数据执行删除操作;
基于Gnew(SG,DG)对图数据库中的数据执行增加操作,使得最终图数据库中的数据和收到图谱构建请求的Gnew(SG,DG)保持一致;
完成了图谱本体增量更新流程后,再启动数据增量更新流程,开始从消息队列模块接收消息、处理消息;
图数据库,用于提供图模型数据的存储和查询功能;在图数据库中,原始存储于数据表中的数据被转换为了实体、实体属性、关系及关系属性;
数据源模块,作为知识图谱的数据源,数据源支持增量数据库日志,从而能够让数据库日志捕获模块实时获取数据源的变更信息,推送给下游的图谱构建模块;
数据库日志捕获模块,用于实时从数据源模块中获取数据变更的数据库日志信息,这些数据库日志描述了数据源中数据发生的增、删、改变化,若发生了删、改,数据库日志还包含删、改之前的原始数据内容;这些数据库日志按照时间的先后顺序发送到消息队列模块;
消息队列模块,用于保证数据库日志捕获模块发送的消息和图谱构建模块收到的消息有相同的顺序;实现作为消息生产者的数据库日志捕获模块和作为消息消费者的图谱构建模块的解耦。
2.如权利要求1所述的一种支持本体和数据增量更新的知识图谱构建系统,其特征在于,在所述图谱管理模块中维护着每一个知识图谱的最新版本,不需要进行多版本管理。
3.一种支持本体和数据增量更新的知识图谱构建方法,基于权利要求1所述的知识图谱构建系统实现,其特征在于,包括图谱本体增量更新流程以及数据增量更新流程,其中:
数据增量更新流程包括以下步骤:
数据库日志捕获模块从支持日志的数据源模块中实时获取数据源数据的变更日志,然后将这些数据库日志推送到消息队列模块,图谱构建模块订阅消息队列模块上对应数据库的消息,消息的处理逻辑包括如下步骤:
步骤A、为每个知识图谱创建一个独立的线程,用于处理来自消息队列模块的数据库日志数据;
步骤B、从消息队列拉取消息MG(DBG,TableG,OPG,DataG),其中:DBG表示消息来自的数据库;TableG表示消息来自的数据表;OPG表示消息的类型;DataG是发生变化的数据本身;
步骤C、从当前版本的图谱信息Gcurrent (SG,DG)中找到以DBG、TableG为数据源的所有实体Ncurrent (SN,DN)和关系Ecurrent (SE,DE) ,其中:SN表示实体本体信息,DN表示实体的数据配置信息,SE表示关系信息,DE表示关系的数据配置信息;
步骤D、根据Ncurrent (SN,DN)和Ecurrent (SE,DE),将DataG封装为实体实例nodes和关系实例edges;
步骤E、根据OPG的信息,对实体实例nodes和关系实例edges执行对应的增加、删除和更新操作;
在上述步骤A至步骤E执行过程中,若用户在图谱管理模块中完成知识图谱本体的设计并为设计的本体配置数据后,得到了完整图谱配置信息Gnew (SG,DG),其中,SG为本体信息集合,DG为数据配置信息集合,图谱管理模块将完整图谱配置信息Gnew (SG,DG) 作为图谱构建请求的一部分发送给图谱构建模块,图谱构建模块根据收到的图谱构建请求,从本地查找同一个知识图谱的当前版本的图谱信息Gcurrent (SG,DG),图谱构建模块通过比较Gcurrent(SG,DG)和Gnew (SG,DG),最终得到两个图谱配置信息:Gdelete(SG,DG)和更新了状态信息的Gnew(SG,DG),其中,Gdelete(SG,DG)描述了当前图数据库中的哪些数据需要删除;
当图谱管理模块获得了Gdelete(SG,DG)和更新了状态信息的Gnew (SG,DG)后,数据增量更新流程暂停,暂停从消息队列模块中继续接收数据库日志消息,进入图谱本体增量更新流程,更新图数据库,包括以下步骤:
基于Gdelete(SG,DG)的图谱信息,对当前图数据库中的数据执行删除操作;
基于Gnew(SG,DG)对图数据库中的数据执行增加操作,使得最终图数据库中的数据和收到图谱构建请求的Gnew(SG,DG)保持一致;
完成了图谱本体增量更新流程后,再启动数据增量更新流程,开始从消息队列模块接收消息、处理消息。
4.如权利要求3所述的一种支持本体和数据增量更新的知识图谱构建方法,其特征在于,在所述步骤B中,消息的类型包括增加、删除、更新,则有:
若消息的类型是更新, DataG要包含更新前的数据和更新后的数据;
若消息的类型是增加,DataG只需要包含增加的数据本身;
若消息的类型是删除,DataG只需要包含删除前的数据。
5. 如权利要求3所述的一种支持本体和数据增量更新的知识图谱构建方法,其特征在于,比较Gcurrent (SG,DG)和Gnew (SG,DG)得到Gdelete(SG,DG)和更新了状态信息的Gnew (SG,DG)具体包括以下步骤:
步骤1、比较Gcurrent (SG,DG)和Gnew (SG,DG)绑定的数据库是否发生了变化:
若绑定的数据库发生了变化,用新的数据库中的数据进行知识图谱的构建过程,则Gdelete(SG,DG)= Gcurrent (SG,DG),并且将Gdelete(SG,DG)的操作类型属性设置为“删除数据库”,然后将Gnew (SG,DG)的操作状态设置为1,表示Gnew (SG,DG)的配置信息还没有被处理,获得更新了状态信息的Gnew (SG,DG);
若绑定的数据库没有发生变化,则进入步骤2的实体比较子过程和步骤3的关系比较子过程;
步骤2、实体比较子过程:
比较Gcurrent (SG,DG)的实体集合Ncurrent (SN,DN)和Gnew (SG,DG)的实体集合Nnew(SN,DN),得到需要执行删除操作的实体信息集合Ndelete (SN,DN)和更新了操作状态的Nnew (SN,DN),其中,Ndelete (SN,DN)属于Gcurrent (SG,DG),SN表示实体信息,DN表示实体的数据配置信息;
步骤3、关系比较子过程:
比较Gcurrent (SG,DG)的关系集合Ecurrent(SN,DN)和Gnew (SG,DG)的关系集合Enew(SE,DE),得到需要执行删除操作的关系信息集合Edelete(SE,DE)和更新了操作状态的Enew(SE,DE),其中,Edelete(SE,DE)属于Gdelete(SG,DG),SE表示关系本体信息,DE表示关系的数据配置信息。
6.如权利要求5所述的一种支持本体和数据增量更新的知识图谱构建方法,其特征在于,所述步骤2包括以下步骤:
步骤201、针对实体集合Ncurrent (SN,DN)中的每个实体nodecurrent(Snode,Dnode),检查nodecurrent(Snode,Dnode)是否在Nnew (SN,DN)中存在,其中,Snode表示实体的信息,Dnode表示实体的配置数据信息:
如果不存在,表示nodecurrent(Snode,Dnode)需要被删除,直接把其放入到Ndelete (SN,DN)中,并且把nodecurrent(Snode,Dnode)的操作类型改为“删除实体”;
如果存在,将Nnew(SN,DN)中与nodecurrent(Snode,Dnode)对应的实体表示为nodenew(Snode,Dnode),进入步骤202比较nodecurrent(Snode,Dnode)和nodenew(Snode,Dnode);
步骤202、比较nodecurrent(Snode,Dnode)和nodenew(Snode,Dnode)的数据配置信息:
若绑定的数据表发生了变更,等价于实体当前的数据完全被删除,然后加载新的数据表中的数据,写入到图数据库中,此时把nodecurrent(Snode,Dnode)放到Ndelete (SN,DN)中,并设置操作类型为“删除实体”,然后把nodenew(Snode,Dnode)的状态设置为1,表示还未处理;
若数据配置信息没有发生变化,进入步骤203比较nodecurrent(Snode,Dnode)的属性信息Pcurrent (SP,DP)和nodenew(Snode,Dnode)的属性信息Pnew (SP,DP),其中,SP是属性本体集合,DP是属性对应的数据表字段和数据类型;
步骤203、遍历Pcurrent (SP,DP)的每个属性propcurrent(Sprop,Dprop),检查当前属性propcurrent(Sprop,Dprop)是否在Pnew (SP,DP)中存在:
若不存在,则将propcurrent(Sprop,Dprop)放入到Pdelete集合中,将nodedelete操作类型设置为“删除属性”,其中,nodedelete表示Ndelete (SN,DN)的实体,Pdelete是nodedelete的属性集合;
若存在,比较propcurrent(Sprop,Dprop)和Pnew (SP,DP)中对应的属性propnew的数据配置信息Dprop:若Dprop不一致,则将propcurrent(Sprop,Dprop)放入到Pdelete集合中;若Dprop一致,表示此属性没有发生变化,将propnew的状态设置为2,表示无需后面的操作。
7.如权利要求6所述的一种支持本体和数据增量更新的知识图谱构建方法,其特征在于,所述步骤3包括以下步骤:
步骤301、针对Ecurrent(SN,DN)中的每个关系edgecurrent(Sedge,Dedge),检查edgecurrent(Sedge,Dedge)是否在Enew(SE,DE)中已经存在:
若不存在,直接把edgecurrent(Sedge,Dedge)放入到Edelete(SE,DE)中,并且把edgecurrent(Sedge,Dedge)的操作类型改为“删除关系”;
若已存在,将Enew(SE,DE)中与edgecurrent(Sedge,Dedge)对应的关系表示为edgenew,进入步骤302比较edgecurrent(Sedge,Dedge)和edgenew;
步骤302、比较edgecurrent(Sedge,Dedge)和edgenew的数据配置信息:
若绑定的数据表发生了变更,等价于关系当前的数据完全被删除了,然后再加载新数据表中的数据,写入到图数据库中,此时把edgecurrent(Sedge,Dedge)放到Edelete(SE,DE)中,并设置操作类型为“删除关系”,然后把edgecurrent(Sedge,Dedge)的状态设置为1,表示还未处理;
若头实体ID对应的数据表字段和尾实体ID对应的数据表字段中的任何一个发生变化,都表示旧的关系完全失效,把edgecurrent(Sedge,Dedge)放到Edelete(SE,DE)中,并设置操作类型为“删除关系”, 然后把edgecurrent(Sedge,Dedge)的状态设置为1,表示还未处理;
若数据配置信息没有发生变化,进入步骤303比较edgecurrent(Sedge,Dedge)的属性信息Pcurrent(SP,DP)和edgenew的属性信息Pnew(SP,DP),其中,SP是属性集合,DP是属性的数据信息,包含属性对应的数据表字段及数据类型;
步骤303、遍历Pcurrent(SP,DP)的每个属性propcurrent(Sprop,Dprop),检查属性propcurrent(Sprop,Dprop)是否在Pnew(SP,DP)中存在:
若不存在,则将propcurrent(Sprop,Dprop)放入到Pdelete集合中,将edgedelete操作类型设置为“删除属性”,其中,edgedelete表示Edelete(SE,DE)的关系,Pdelete是edgedelete的属性集合;
若存在,则比较propcurrent(Sprop,Dprop)和propnew的数据配置信息Dprop:若Dprop不一致,则将propcurrent(Sprop,Dprop)放入到Pdelete中;若一致,将propnew的状态设置为2,表示无需后面的操作。
8.如权利要求7所述的一种支持本体和数据增量更新的知识图谱构建方法,其特征在于,基于Gdelete(SG,DG)的图谱信息,对当前图数据库中的数据执行删除操作具体包括以下步骤:
步骤401、检查Gdelete(SG,DG)的操作类型是否是“删除数据库”:
如果是,则直接执行删除当前整个图数据库的操作;
如果不是,则进入步骤402执行实体的删除操作和进入步骤404执行关系的删除操作;
步骤402、遍历Gdelete(SG,DG)的实体集合Ndelete的每个实体nodedelete,检查nodedelete的操作类型是否是“删除实体”:
如果是,则直接从图数据库中删除该实体;
如果不是,则进入步骤403,处理nodedelete的属性集合Pdelete;
步骤403、遍历属性集合Pdelete的每个属性,从图数据库中删除nodedelete对应实体的这些属性;
步骤404、遍历Gdelete(SG,DG)的关系集合edgedelete的每个关系edgedelete,检查edgedelete的操作类型是否是“删除关系”:
如果是,则直接从图数据库中删除该关系;
如果不是,则进入步骤405,处理edgedelete的属性集合Pdelete;
步骤405、遍历属性集合Pdelete的每个属性,从图数据库中删除edgedelete对应关系的这些属性。
9.如权利要求8所述的一种支持本体和数据增量更新的知识图谱构建方法,其特征在于,基于Gnew(SG,DG)对图数据库中的数据执行增加操作包括以下步骤:
步骤501、检查Gnew(SG,DG)的操作类型是否为“新增数据库”:
如果是,则先执行创建图数据库实例的过程后,进入步骤502;
如果不是,则直接进入步骤502;
步骤502、遍历Gnew(SG,DG)的实体集合Nnew (SN,DN)的每个实体nodenew (Snode,Dnode),检查其状态是否为1:
如果实体nodenew (Snode,Dnode)的状态是1,则需要先根据Snode描述的实体信息在图数据库中创建实体后,再进入步骤503;
如果实体nodenew (Snode,Dnode)的状态是2,此时需要检查nodenew (Snode,Dnode)的属性集合Pnew:
若存在状态为1的属性propnew (Sprop,Dprop),则先根据Sprop描述的属性信息为nodenew添加新的属性,然后根据Dprop描述的字段信息,从数据库中读取对应字段的数据,写入到图数据库中,从而完成nodenew新属性的添加和属性数据的导入;
步骤503、基于Dnode表示的数据配置信息,开始从数据源数据库的对应表中读取数据,然后将每一条数据封装为一个实体实例,写入到图数据库中,完成实体nodenew (Snode,Dnode)数据的写入,进入步骤504;
步骤504、遍历Gnew(SG,DG)的关系集合Enew(SE,DE)的每个关系edgenew(Sedge,Dedge),检查其状态是否为1:
如果edgenew(Sedge,Dedge) 的状态为1,先根据Sedge描述的关系信息在图数据库中创建关系后,进入步骤505;
如果edgenew(Sedge,Dedge) 的状态为2,检查edgenew(Sedge,Dedge)的属性集合Pnew:如果存在状态为1的属性propnew(Sprop,Dprop),则先根据Sprop描述的属性信息,为edgenew添加新的属性,然后根据Dprop描述的字段信息,从数据库中读取对应字段的数据,写入到图数据库中,从而完成edgenew新属性的添加和属性数据的导入;
步骤505、基于Dedge数据配置信息,开始从数据源数据库的对应表中读取数据,然后将每一条数据封装为一个关系实例,写入到图数据库中,完成关系edgenew(Sedge,Dedge)数据的写入。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310311149.0A CN116028651B (zh) | 2023-03-28 | 2023-03-28 | 一种支持本体和数据增量更新的知识图谱构建系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310311149.0A CN116028651B (zh) | 2023-03-28 | 2023-03-28 | 一种支持本体和数据增量更新的知识图谱构建系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116028651A CN116028651A (zh) | 2023-04-28 |
CN116028651B true CN116028651B (zh) | 2023-06-09 |
Family
ID=86089621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310311149.0A Active CN116028651B (zh) | 2023-03-28 | 2023-03-28 | 一种支持本体和数据增量更新的知识图谱构建系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116028651B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116932779B (zh) * | 2023-08-14 | 2024-03-12 | 企查查科技股份有限公司 | 知识图谱的数据处理方法和装置 |
CN118332135B (zh) * | 2024-06-12 | 2024-08-16 | 之江实验室 | 基于neo4j与jena的知识图谱构建方法、装置及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664615A (zh) * | 2017-05-12 | 2018-10-16 | 华中师范大学 | 一种面向学科教育资源的知识图谱构建方法 |
CN112256883A (zh) * | 2020-10-16 | 2021-01-22 | 山东省计算中心(国家超级计算济南中心) | 一种量纲知识图谱构建方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297872A (zh) * | 2019-06-28 | 2019-10-01 | 浪潮软件集团有限公司 | 一种科技领域知识图谱的构建、查询方法及系统 |
CN112784114A (zh) * | 2019-11-09 | 2021-05-11 | 北京航天长峰科技工业集团有限公司 | 一种基于Neo4j高性能图数据库的关系图谱更新方法 |
CN111309750A (zh) * | 2020-03-31 | 2020-06-19 | 中国邮政储蓄银行股份有限公司 | 图数据库的数据更新方法和装置 |
CN112364213A (zh) * | 2020-11-12 | 2021-02-12 | 全球能源互联网研究院有限公司 | 一种基于图数据库的电网检索方法及系统 |
CN113326276B (zh) * | 2021-06-23 | 2024-07-16 | 北京金山数字娱乐科技有限公司 | 一种图数据库更新方法及装置 |
CN113239063B (zh) * | 2021-06-23 | 2024-03-29 | 北京金山数字娱乐科技有限公司 | 一种图数据库更新方法及装置 |
CN113468340B (zh) * | 2021-06-28 | 2024-05-07 | 北京众标智能科技有限公司 | 一种产业知识图谱的构建系统及构建方法 |
CN113918724A (zh) * | 2021-08-31 | 2022-01-11 | 南京中禹智慧水利研究院有限公司 | 一种河湖健康知识图谱的构建方法 |
CN114328566A (zh) * | 2021-12-30 | 2022-04-12 | 北京金堤科技有限公司 | 关系图谱的更新方法、装置、介质、设备及生成方法 |
CN115543402B (zh) * | 2022-11-21 | 2023-03-24 | 北京大学 | 一种基于代码提交的软件知识图谱增量更新方法 |
-
2023
- 2023-03-28 CN CN202310311149.0A patent/CN116028651B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664615A (zh) * | 2017-05-12 | 2018-10-16 | 华中师范大学 | 一种面向学科教育资源的知识图谱构建方法 |
CN112256883A (zh) * | 2020-10-16 | 2021-01-22 | 山东省计算中心(国家超级计算济南中心) | 一种量纲知识图谱构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116028651A (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116028651B (zh) | 一种支持本体和数据增量更新的知识图谱构建系统及方法 | |
US11341155B2 (en) | Mapping instances of a dataset within a data management system | |
US11360950B2 (en) | System for analysing data relationships to support data query execution | |
US20210011891A1 (en) | System for importing data into a data repository | |
US11409764B2 (en) | System for data management in a large scale data repository | |
US11188556B2 (en) | Correlated incremental loading of multiple data sets for an interactive data prep application | |
US11327935B2 (en) | Intelligent data quality | |
US8612397B2 (en) | System and method for a computer based forms language | |
US7730032B2 (en) | Efficient queriability of version histories in a repository | |
US8103704B2 (en) | Method for database consolidation and database separation | |
US20150127599A1 (en) | Stateless database cache | |
US20110029822A1 (en) | Tracking of java objects during request processing | |
US8607217B2 (en) | Incremental upgrade of entity-relationship systems | |
CN112988217B (zh) | 用于快速全网代码溯源检测的代码库设计方法及检测方法 | |
AU2019356745B2 (en) | Correlated incremental loading of multiple data sets for an interactive data prep application | |
JP2023543996A (ja) | 分析アプリケーション環境におけるセマンティックモデルアクションセットおよびリプレイのためのシステムならびに方法 | |
AU2002300038B2 (en) | System for controlling and monitoring a process | |
CN115794858A (zh) | 查询语句处理方法、装置、设备及存储介质 | |
Mordinyi et al. | Evaluating software architectures using ontologies for storing and versioning of engineering data in heterogeneous systems engineering environments | |
Mordinyi et al. | Semantic data integration: tools and architectures | |
CN116680311A (zh) | 一种映射关系查找方法、装置、电子设备及存储介质 | |
CN115718593A (zh) | 基于低代码开发平台的数据获取方法及系统 | |
CN117215791A (zh) | 任务等级确定方法、装置、设备及介质 | |
CN103226514A (zh) | 一种快速变更案例的软件测试方法与装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230721 Address after: 200127 block a, 11th floor, no.1500, Puming Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai Patentee after: Shanghai wandehonghui Information Technology Co.,Ltd. Address before: 210019 floor 22, No. 199, Taishan Road, Jianye District, Nanjing, Jiangsu Province Patentee before: Nanjing Wande Information Technology Co.,Ltd. |