1.一种基于区块链的知识图谱构建方法,其特征在于,包含以下步骤:(1)构建知识图谱的模式层和数据层,模式层中节点对应本体概念,边对应概念间的关系,数据层中节点对应实体或属性值,边对应实体间关系或实体的属性;
(2)构建模式层区块链和数据层区块链,模式层或数据层的每个节点作为区块链中的一个区块,边作为区块链中的一条链;
(3)将数据层区块链存入图数据库中,把区块和链转化为“实体‑关系‑实体”或“实体‑属性‑属性值”的三元组存储,即区块对应实体或属性值,链对应实体间关系或实体的属性,完成知识图谱的构建;
(4)通过对新数据的分析更新知识图谱,先更新模式层和数据层,再更新模式层区块链和数据层区块链,最后根据数据层区块链更新图数据库;
所述的更新模式层和数据层的方法如下:
使用知识图谱的用户均通过对新数据的分析抽象更新模式层,再通过对更新后的模式层数据实例化更新数据层,从而实现模式层和数据层的迭代更新;
所述的更新模式层区块链和数据层区块链的内容和方法如下:
更新区块链指修改区块链的区块和链、增加区块和链,以及删除区块和链;当用户修改区块时,修改区块数据,更新时间戳和签名,并通知下一个区块更新存储的Hash值;当用户增加一个新的区块时,通知后面所有区块索引值加1,下一个区块更新存储的Hash值为该区块所有内容的Hash值,该新的区块内容为:前一个区块索引值加1作为区块索引,新区块产生的时间作为时间戳,该区块的签名,区块数据以及前一个区块所有内容的Hash值;当用户删除一个区块时,后面所有区块的区块索引值减1,通知下一个区块存储的Hash值更新为前一个区块所有内容的Hash值;
所述的区块的签名对使用知识图谱的所有用户公开,用户对该区块的签名进行验证,验证不成功将发出警告;
所述的区块的签名通过以下方法生成:
2 3 3
确定区块链的相关参数,即椭圆曲线的方程为y =x +ax+b,a,b为方程的系数且4a +2
27b ≠0;椭圆曲线基点为G,椭圆曲线阶数为n;创建或更新该区块的用户确定自己的私钥ki,计算出公钥Ki=kiG,并将公钥Ki发送给其他用户;用户选取一个随机数ri∈[1,n‑1],计‑1算riG=(xi,yi),t=ximodn,当t=0,则重新选取ri,用mi表示该区块的数据,计算ri modn,‑1si=ri [h(mi)+kit]modn,h(.)为Hash函数运算,得到(t,si,mi)即为该区块的签名。
2.根据权利要求1所述的一种基于区块链的知识图谱构建方法,其特征在于,步骤(2)中所述的区块链的区块内容如下:每个区块中包含了区块索引、时间戳、签名、数据,以及前一个区块所有内容的Hash值;
每个区块的数据由区块的节点数据和边数据两部分组成,即对模式层区块链来说,数据包含区块的本体概念以及该区块的边对应的本体关系两部分,对数据层区块链来说,数据包含该区块的实体信息或属性值,以及该区块的边对应的实体关系或属性两部分。
3.根据权利要求1所述的一种基于区块链的知识图谱构建方法,其特征在于,签名验证的内容和方法如下:‑1
使用所述的区块链参数,对得到的区块签名(t,si,mi),计算w=si modn,u1=h(mi)wmodn,u2=twmodn,u1G+u2Ki=(x0,y0),v=x0modn,h(.)为Hash函数运算,当v=t则签名有效,验证成功,否则签名无效,验证不成功。