一种基于区块链和IPFS的知识图谱存储与验证方法转让专利

申请号 : CN201911417194.4

文献号 : CN111177080B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黑新宏尹欣悦王一川谢国朱赫田钰滢马冰朱磊杜延宁姬文江宋昕

申请人 : 西安理工大学

摘要 :

本发明公开了一种基于区块链和IPFS的知识图谱存储与验证方法,具体为:首先,将知识图谱的过程文件从图数据库中导出并计算文件哈希值,将过程文件存入IPFS星际文件系统,将IPFS返回的文件索引哈希值与之前计算的哈希值相比较,若相等则存入区块链中,保证过程文件的安全性。将文件索引哈希值经过数据打包、签名、打包区块、区块广播等过程存入区块链,在区块链中查询文件索引哈希值,并与之前从IPFS取得的文件索引哈希值相比较,相同则进入文件处理模块,反之进入文件警告模块。通过区块链和IPFS的结合,可以实现对知识图谱的可靠和快速存储,保证了知识图谱过程文件的安全性和可溯源性。

权利要求 :

1.一种基于区块链和IPFS的知识图谱存储与验证方法,其特征在于,具体按照以下步骤实施:步骤1,将构建好的知识图谱从图数据库中导出,将导出文件进行哈希加密,形成文件哈希值;

步骤2,将经步骤1后得到的文件传输至星际文件系统IPFS上,获得唯一的文件索引哈希值;

步骤3,将经步骤1后获得的文件哈希值与经步骤2后获得的文件索引哈希值相比,比较两个哈希值的一致性;

步骤4,若两个哈希值相同,将经步骤2后获得的文件索引哈希值上传至区块链中,得到此时的块哈希值和交易号;

所述步骤4中,具体按照以下步骤实施:

步骤4.1、因为每次上链的文件索引哈希值较多易混淆,所以在编写智能合约的时候,在writeHash函数中,遵从区块链couchDB数据库为key‑value形式,为了保证key的唯一性,将系统时间戳设置为key,将value设置为map结构,map中的key为当日第几次存储的值,value为某次存储的文件索引哈希值;

步骤4.2、将文件索引哈希值和时间戳等数据打包,用用户的私钥进行签名;通过智能合约进行节点与区块链的交互,将数据上传至区块链的某个节点上,节点验证签名后,打包区块并向所有节点广播区块;最后返回生成块的块哈希值和交易号;生成块的哈希值和交易号为文件加密在区块链中的保证;

步骤5,当需要查询某个实体或关系的构建过程文件时,可以通过查找块哈希值或上传日期,获得所需的文件索引哈希值;

步骤6,将经步骤5后获得的文件索引哈希值和经步骤2获得的文件索引哈希值相比,比较两个哈希值的一致性,并判断文件传输过程中是否存在安全性问题;

步骤7,将经步骤5后获得的文件索引哈希值用于从IPFS获取相应的过程文件,对文件进行更改操作。

2.根据权利要求1所述的一种基于区块链和IPFS的知识图谱存储与验证方法,其特征在于,所述步骤1中,文件的格式为.csv、.json中的任意一种;因为一个知识图谱中会包含多个实体或关系,每个实体或关系是一个独立文件,所以会导出多个文件。

3.根据权利要求1所述的一种基于区块链和IPFS的知识图谱存储与验证方法,其特征在于,所述步骤2中,将经步骤1后导出的多个的知识图谱过程文件存入IPFS中;IPFS文件系统会将文件拆分成若干个256KB大小的块,分别对每个块内容进行SHA2‑256函数计算加密,将块哈希合并封装成多哈希格式,再进行Base58编码转换后形成唯一的文件索引哈希值;

最后将文件的原始数据和文件索引哈希值一起上传至IPFS节点。

4.根据权利要求1所述的一种基于区块链和IPFS的知识图谱存储与验证方法,其特征在于,所述步骤3中,具体按照以下步骤实施:步骤3.1、将经步骤1后获得的文件哈希值封装成多哈希格式并进行Base58编码转换,形成与文件索引哈希值相同格式的以“Qm”开头的哈希值;

步骤3.2、将同格式的哈希值进行比较,若哈希值相同,则表示过程文件在传入IPFS节点过程中不存在安全性问题。若哈希值不同,则表示文件传入过程中存在安全性问题,进入文件安全警告模块;

5.根据权利要求1所述的一种基于区块链和IPFS的知识图谱存储与验证方法,其特征在于,所述步骤5中,对于从区块链中获取某日的文件索引哈希值,在智能合约中也进行了相应的函数定义;如通过queryHash函数,在链码交互阶段输入某日的时间戳,区块链在couchDB中进行检索后,会返回给客户端之前存入的文件索引哈希值。

6.根据权利要求1所述的一种基于区块链和IPFS的知识图谱存储与验证方法,其特征在于,所述步骤6中,将两个文件索引哈希值进行比较,若哈希值相同,则表示过程文件在传入区块链过程中不存在安全性问题,进入文件处理模块;若哈希值不同,则表示文件传入过程中存在安全性问题,进入文件安全警告模块。

说明书 :

一种基于区块链和IPFS的知识图谱存储与验证方法

技术领域

[0001] 本发明属于文件加密存储技术领域,具体涉及一种基于区块链和IPFS的知识图谱存储与验证方法。

背景技术

[0002] 随着人工智能技术的发展和应用,知识图谱成为人工智能重要分支,知识工程在大数据环境中的成功应用。知识图谱是以图的形式表现客观世界中的概念和实体及其之间关系的知识库,是语义搜索、智能问答、决策支持等智能服务的基础技术之一。知识图谱旨在从数据中识别、发现和推断事物与概念之间的复杂关系,是事物关系的可计算模型。知识图谱的构建涉及知识建模、关系抽取、图存储、关系推理、实体融合等多方面的技术。
[0003] 随着信息通信技术的飞速发展,互联网已经渗透到人们生活的几乎所有方面,如生产、贸易、通信、学习、娱乐等,在许多领域都发生了革命性的变化。区块链是比特币的基础技术。它是由Satoshi Nakamoto在比特币中提出的:一个对等电子现金系统,作为一个分散的防篡改和无信任的对等交易系统。虽然数字货币比特币受到了不同的评价,但作为比特币的核心技术,区块链技术受到了越来越多的关注。其特点可以解释为:(1)去中心化,即不关注交易中的任何一方。去中心化的模式可以提高效率,降低成本。(2)可信任的。通过智能合约(一种数字代码协议,参与到智能合约中的节点必须执行这个协议)使参与交易的各个节点强制记录每一笔交易信息,以此保证整个账本信息的完整性。因此,区块链可以解决当前互联网的痛点即各节点的信任问题。(3)分布式结构。区块链可以看作是一种分布式数据库。(4)不可篡改性。区块链是一种按照时间顺序将数据区块以顺序相连的方式组合而成的一种链式数据结构,并以密码学方式保证了存入区块内的数据的不可篡改性。
[0004] IPFS的中文名是星际文件系统,IPFS是一种基于内容可寻址、点对点超媒体的分布式文件系统。在IPFS中上传的文件信息可以永久保存,不会像存到web网络中的文件不定期被删除。同时IPFS结合分布式哈希表和默克尔树文件存储,根据文件内容返回给客户端唯一的文件索引哈希值,用此根据文件索引哈希值可快速高效的在IPFS网络中找到并获取文件。所以采用IPFS与区块链相结合,能够实现高效并可信的文件存储方式。
[0005] 因为知识图谱的关键应用在于对知识的查询推理,所以知识图谱的建模阶段变得尤为重要,若建模过程中出现如下问题,将会导致出现错误的推理结果。如信息采集的源数据有误;实体、关系不明确导致的信息抽取有误;实体链接和知识合并过程出现错误等。而且知识图谱一般数量级较大,难以简单追溯建模阶段出错的数据位置。同时在构建知识图谱的过程中也存在安全问题。如在知识更新前,构建图谱的过程文件被非法篡改或丢失,使得文件的安全性得不到保障。本发明将构建知识图谱的过程文件存储至区块链中,保证了过程文件的安全性和可溯源性。可靠的将阶段性文件存至区块链中,在推理出现错误或文件发生安全性问题的情况下,可以按需从链中获取某个时期的过程文件,避免重新搭建图谱等重复性工作,有效的解决了上述问题。

发明内容

[0006] 本发明的目的是提供在构建知识图谱过程中,提供一种可靠的过程文件存储与验证方法。解决了知识图谱的安全存储和验证的问题。
[0007] 本发明所采用的技术方案是,一种基于区块链和IPFS的知识图谱存储与验证方法。具体按照以下步骤实施:
[0008] 步骤1,将构建好的知识图谱从图数据库中导出。将导出文件进行哈希加密,形成文件哈希值。
[0009] 步骤2,将经步骤1后得到的文件传输至星际文件系统IPFS上,获得唯一的文件索引哈希值;
[0010] 步骤3,将经步骤1后获得的文件哈希值与经步骤2后获得的文件索引哈希值相比,比较两个哈希值的一致性并判断文件传入IPFS过程中是否存在安全性问题;
[0011] 步骤4,若两个哈希值相同,将经步骤2后获得的文件索引哈希值上传至区块链中,得到此时的块哈希值和交易号;
[0012] 步骤5,当需要查询某个实体或关系的构建过程文件时,可以通过查找块哈希值或上传日期,获得所需的文件索引哈希值;
[0013] 步骤6,将经步骤5后获得的文件索引哈希值和经步骤2获得的文件哈希值相比,比较两个哈希值的一致性,并判断文件传入区块链过程中是否存在安全性问题。
[0014] 步骤7,将经步骤5后获得的文件索引哈希值用于从IPFS获取相应的过程文件,对文件进行更改操作。
[0015] 本发明的特点还在于,
[0016] 步骤1,文件的格式为.csv、.json中的任意一种。因为一个知识图谱中会包含多个实体或关系,每个实体或关系是一个独立文件,所以会导出多个文件。
[0017] 步骤2,将经步骤1后导出的多个的知识图谱过程文件存入IPFS中。IPFS文件系统会将文件拆分成若干个256KB大小的块,分别对每个块内容进行SHA2‑256函数计算加密,将块哈希合并封装成多哈希格式,再进行Base58编码转换后形成唯一的文件索引哈希值。最后将文件的原始数据和文件索引哈希值一起上传至IPFS节点。
[0018] 步骤3具体按照以下步骤实施:
[0019] 步骤3.1、将经步骤1后获得的文件哈希值封装成多哈希格式并进行Base58编码转换,形成与文件索引哈希值相同格式的以“Qm”开头的哈希值。
[0020] 步骤3.2、将同格式的哈希值进行比较,若哈希值相同,则表示过程文件在传入IPFS节点过程中不存在安全性问题。若哈希值不同,则表示文件传入过程中存在安全性问题,进入文件安全警告模块。
[0021] 步骤4具体按照以下步骤实施:
[0022] 步骤4.1、因为每次上链的文件索引哈希值较多易混淆,所以在编写智能合约的时候,在writeHash函数中,遵从区块链couchDB数据库为key‑value形式,为了保证key的唯一性,将系统时间戳设置为key,将value设置为map结构,map中的key为当日第几次存储的值,value为某次存储的文件索引哈希值。
[0023] 步骤4.2、将文件索引哈希值和时间戳等数据打包,用用户的私钥进行签名。通过智能合约进行节点与区块链的交互,将数据上传至区块链的某个节点上,节点验证签名后,打包区块并向所有节点广播区块。最后返回生成块的块哈希值和交易号。生成块的哈希值和交易号为文件加密在区块链中的保证。
[0024] 步骤5,对于从区块链中获取某日的文件索引哈希值,在智能合约中也进行了相应的函数定义。如通过queryHash函数,在链码交互阶段输入某日的时间戳,区块链在couchDB中进行检索后,会返回给客户端之前存入的文件索引哈希值。
[0025] 步骤6,将经两个文件索引哈希值进行比较,若哈希值相同,则表示过程文件在传入区块链过程中不存在安全性问题,进入文件处理模块。若哈希值不同,则表示文件传入过程中存在安全性问题,进入文件安全警告模块。
[0026] 本发明的有益效果是,
[0027] 一种基于区块链和IPFS的知识图谱存储与验证方法,将构建知识图谱的过程文件存入区块链中,实现过程文件的安全存储、快速读取并且可溯源的要求。使得知识图谱的存储具有可靠性、实用性,文件内容可溯源性等优点。

附图说明

[0028] 图1是本发明一种基于区块链和IPFS的知识图谱存储与验证方法流程图;
[0029] 图2是本发明一种基于区块链和IPFS的知识图谱存储与验证方法的系统架构图。

具体实施方式

[0030] 下面结合附图和具体实施方式对本发明进行详细说明。
[0031] 本发明一种基于区块链和IPFS的知识图谱存储与验证方法,流程图如图1所示,系统架构图如图2所示。具体按照以下步骤实施:
[0032] 步骤1,文件的格式为.csv、.json中的任意一种。因为一个知识图谱中会包含多个实体或关系,每个实体或关系是一个独立文件,所以会导出多个文件。
[0033] 步骤2,将经步骤1后导出的多个的知识图谱过程文件存入IPFS中。IPFS文件系统会将文件拆分成若干个256KB大小的块,分别对每个块内容进行SHA2‑256函数计算加密,将块哈希合并封装成多哈希格式,再进行Base58编码转换后形成唯一的文件索引哈希值。最后将文件的原始数据和文件索引哈希值一起上传至IPFS节点。如图2所示。
[0034] 步骤3具体按照以下步骤实施:
[0035] 步骤3.1、将经步骤1后获得的文件哈希值封装成多哈希格式并进行Base58编码转换,形成与文件索引哈希值相同格式的以“Qm”开头的哈希值。
[0036] 步骤3.2、将同格式的哈希值进行比较,若哈希值相同,则表示过程文件在传入IPFS节点过程中不存在安全性问题。若哈希值不同,则表示文件传入过程中存在安全性问题,进入文件安全警告模块。
[0037] 步骤4具体按照以下步骤实施:
[0038] 步骤4.1、因为每次上链的文件索引哈希值较多易混淆,所以在编写智能合约的时候,在writeHash函数中,遵从区块链couchDB数据库为key‑value形式,为了保证key的唯一性,将系统时间戳设置为key,将value设置为map结构,map中的key为当日第几次存储的值,value为某次存储的文件索引哈希值。
[0039] 步骤4.2、将文件索引哈希值和时间戳等数据打包,用用户的私钥进行签名。通过智能合约进行节点与区块链的交互,将数据上传至区块链的某个节点上。如图2所示。节点验证签名后,打包区块并向所有节点广播区块。最后返回生成块的块哈希值和交易号。生成块的哈希值和交易号为文件加密在区块链中的保证。
[0040] 步骤5,对于从区块链中获取某日的文件索引哈希值,在智能合约中也进行了相应的函数定义。如通过queryHash函数,在链码交互阶段输入某日的时间戳,区块链在couchDB中进行检索后,会返回给客户端之前存入的文件索引哈希值。
[0041] 步骤6,将两个文件索引哈希值进行比较,若哈希值相同,则表示过程文件在传入区块链过程中不存在安全性问题,进入文件处理模块。若哈希值不同,则表示文件传入过程中存在安全性问题,进入文件安全警告模块。
[0042] 实施例:
[0043] 遵循本专利的研究方法,以将电影演员信息的知识图谱存入区块链为实例,具体描述其应用过程如下:在图数据库中导入电影、演员以及两者之间关系的数据,制作成电影信息的知识图谱。在图数据库中导出知识图谱,以csv文件格式保存。将导出的csv文件存入IPFS节点,获取IPFS返回的唯一文件索引哈希值:QmeEUSH2K4jeDHQCkDeGH7D2uUxz6HCNE4WTpcLg4iU26Y。同时将所得的csv文件通过哈希加密后封装成多哈希值并通过Base58编码转化,形成文件哈希值并保留在本地数据库中。将文件哈希值与文件索引哈希值相比较,若两者相等,则将文件索引哈希值存入区块链中。以联盟区块链Hyperledger Fabric为例,编写符合本案例环境的智能合约。在搭建好区块链环境后,在节点上安装并实例化智能合约,通过invoke接口的writeHash函数,将文件索引哈希值存入区块链中,返回“HASH PUBLISHED”,即表示上传成功。在命令终端输入查询某日期存入的哈希值,如'{"Args":["invoke","query","时间戳"]}'。用invoke接口的queryHash函数,返回“HASH SHOWED”,并在终端内显示为“<时间戳>:QmeEUSH2K4jeDHQCkDeGH7D2uUxz6HCNE4WTpcLg4iU26Y”。将终端显示的文件索引哈希值与之前IPFS返回的文件索引哈希值相比较,若正确,则可进入下一步文件处理工作,若错误,即表示在存入区块链的过程中,存在恶意破坏,进入文件警告模块。