暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

知识图谱与图数据库nebula

口袋猫的神奇口袋 2022-04-02
1430

3.18号的时候,我接到一个任务,将防疫的数据抽取出病例密接次密接的关系,存入到图数据库nebula中,并将数据返回给前端,以展示病例传染情况的知识图谱。因为此前没有接触过知识图谱和数据库,便开始了边学边干的工作状态,因此记录了此文档。



01

知识图谱


知识图谱是结构化的语义知识库,用于以符号形式描述物理世界中的概念及其相互关 系.其基本组成单位是“实体-关系-实体”三元组,以及实体及其相关属性-值对,实体间通过关系相互联结,构成网状的知识结构。基于知识图谱的搜索引擎,能够以图形方式向用户反馈结构化的知识,用户不必浏览大量网页,就可以准确定位和深度获取知识。将知识图谱应用在防疫场景之中,便是展示病例、密接与次密接的传染链关系,如搜索单一病例用户的ID,可以返回该用户属性,如姓名、性别、电话等,并返回与之接触人员的密接人员及接触地点信息。


补充一些知识图谱中的概念:


实体:是指具有可区别性且独立存在的某种事物(有点像面向对象编程里的Object)。如某一种动物、某一个城市、某一种水果、某一类商品等等。世界万物具体事物组成,指实体。实体是知识图谱中的最基本元素,不同的实体间存在不同的关系,在防疫场景中的实体便是人。


属性:主要指对象可能具有的属性、特征、特性、特点以及参数,例如国籍、生日等。


属性值:主要指对象指定属性的值,例如国籍对应的“中国”、生日对应1988-09-08等。每个属性-属性值对可用来刻画实体的内在特性。


关系:用来连接两个实体,刻画它们之间的关联。形式化为一个函数,它把kk个点映射到一个布尔值。在知识图谱上,关系则是一个把kk个图节点(实体、语义类、属性值)映射到布尔值的函数。


02

数据库nebula


图数据库以点、边、属性的形式存储数据。其优点在于灵活性高,支持复杂的图形算法,可用于构建复杂的关系图谱。nebula是国产的开源分布式图数据库,官网介绍其是一款开源的、分布式的、易扩展的原生图数据库,能够承载包含数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。它可以将图中的数据高效存储为点(Vertex)和边(Edge),还可以将属性(Property)附加到点和边上。


与关系型数据库不同,图数据库nebula使用nGQL来操作数据库。语句操作如下:


创建空间,类比关系数据库的创建库

    REATE SPACE IF NOT EXISTS spacename (vid_type=FIXED_STRING(5000)); USE spacename


    创建点(vertex),类比关系数据库的创建表

      CREATE TAG vertexname (Properties_name1, Properties_name2, Properties_name3);


      同理创建边也类似

        CREATE EDGE IF NOT EXISTS edgename (Properties_name1, Properties_name2, Properties_name3);


        插入数据,需要分别向点传入顶点值及属性,向边传入点与点的关系

          INSERT VERTEX IF NOT EXISTS vertexname  VALUES vid:(Properties_name1, Properties_name2, Properties_name3)
            INSERT EDGE IF NOT EXISTS edgename VALUES "vid1"->"vid2":(Properties_name1, Properties_name2, Properties_name3);



            查询数据,查询单条边的信息

              MATCH p=(v)-[e:l1|:l2*1]->(v2) WHERE id(v) IN [vertexname] RETURN p




              03

              nebula图数据库部署


              首先确定所在服务器硬件是否满足nebula的需求,然后在官网找到对应的版本安装包


              安装 RPM 包

                $ sudo rpm -ivh --prefix=<installation_path> <package_name>


                安装 DEB 包

                  $ sudo dpkg -i <package_name>


                  启动服务器

                    sudo usr/local/nebula/scripts/nebula.service start all


                    安装Nebula Graph Studio下载安装包,运行下面命令即可安装

                      $ sudo rpm -i nebula-graph-studio-3.2.3.x86_64.rpm


                      安装好后,默认端口为7001,登录Nebula Graph Studio平台,将防疫填报系统中的数据逻辑捋清楚,从中抽取出人员属性及人员病毒的传染关系,存入到图数据库中,便可以在studio中看到病毒传播链的知识图谱效果。





                      文章转载自口袋猫的神奇口袋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                      评论