• 知识图谱之图数据库Neo4j


    知识图谱中的知识是通过RDF结构来进行表示的,其基本单元是事实。每个事实是一个三元组(S, P, O),在实际系统中,按照存储方式的不同,知识图谱的存储可以分为基于表结构的存储和基于图结构的存储。

    基于表结构的存储可以用关系型数据库,常见的关系型数据库存储系统有MySQL、Oracle、DB2、Microsoft SQL Server等;基于图结构的存储,常见的存储系统有Neo4j、OritentDB、InfoGrid、HyperGraphDB、infiniteGraph等。下面讲述Neo4j数据库的一些理论和操作。

    图数据库的理论基础是图论,通过节点、边和属性对数据进行表示和存储。具体来说,图数据库基于有向图,其中,节点、边、属性是图数据库的核心概念。

    (1)节点

    节点用于表示实体、事件等对象,可以类比于关系数据库中的记录或者数据表中的行数据。例如人物、地点、电影都可以作为图中的节点。

    (2)边

    边是指图中连接节点的有向线条,用于表示不同节点之间的关系。例如人物之间的同事关系都可以作为图中的边。

    (3)属性

    属性用于描述节点或者边的特性。例如人物(节点)的姓名、性别、爱好等都是属性。

    图数据库的标准查询语言是SPARQL。SPARQL是由W3C为RDF数据开发的一种查询语言和数据获取协议,是被图数据库广泛支持的查询语言,用于对数据的获取与管理,主要包括数据的插入、删除和查询操作,没有更新操作。

    下面来介绍SPARQL语言的使用方法。

    1. 数据插入

    数据插入指新的三元组插入到已有的RDF图中,通过INSERT DATA语句完成该功能。

    语法:INSERT DATA 三元组数据

    例子:

    INSERT DATA {

    ns: 费米  ns: 老师  ns:玻恩.

    ns: 玻恩  ns: 类型  ns: 数学家.

    ns: 玻恩  ns: 类型  ns: 物理学家.

    }

    2. 数据删除

    数据删除是从RDF图中删除一些三元组。通过DELETE DATA语句完成该功能。

    语法:DELETE DATA三元组数据

    例子:

    DELETE DATA {

    ns: 奥本海默  ns: 类型  ns: 物理学家.

    }

    可以用WHERE来作限制。

    例子:

    DELETE DATA {

    ns: 奥本海默  ?p  ?o.

    ?s  ?p  ns: 奥本海默. 

    }

    3. 数据更新

    数据更新是指更新RDF图中指定三元组的值。和SQL不同,SPARQL没有定义UPDATE操作,也就是说SPARQL语言没有更新已有数据的方法。但是可以通过组合INSERT DATA语句和DELETE DATA语句来实现该功能。

    例子:

    DELETE DATA {

    ns: 费米  ns: 出生日期  "1902/09/29".

    }

    INSERT DATA {

    ns: 费米  ns: 出生日期  "1901/09/29"

    }

    4. 数据查询

    包括四种方式:SELECT、ASK、DESCRIBE、CONSTRUCT。以下一一介绍着四种方式的用法和区别。

    (1)SELECT

    SELECT功能与SQL中的SELECT语句类似,从知识图谱中获取满足条件的查询语句。

    语法:SELECT 变量1 变量2 ... WHERE 图模式[修饰符]

    例子:查询类型既是"数学家"又是"物理学家"。

    SELECT ?s

    WHERE {

    ?s  ns: 类型  ns: 数学家.

    ?s  ns: 类型  ns: 物理学家.

    }

    (2)ASK

    ASK用于测试知识图谱中是否存在满足给定条件的数据,如果存在,返回"yse",否则返回"no",该查询不会返回具体的匹配数据。

    语法:ASK 图模式

    例子:是否存在是"费米"老师的节点

    ASK {

    ns: 费米  ns: 老师  ?o.

    }

    (3)DESCRIBE

    DESCRIBE用于查询和指定资源相关的RDF数据,这些数据形成了对给定资源的详细描述。

    语法:DESCRIBE 资源或变量 [WHERE 图模式]

    例子:获取老师是"玻恩"的节点的所有信息

    DESCRIBE ?s WHERE {

    ?s  ns: 老师  ns: 玻恩.

    }

    (4)CONSTRUCT

    CONSTRUCT是根据查询图的结果返回RDF。

    语法:CONSTRUCT 图模板 WHERE 图模式

    例子:

    CONSTRUCT {

    ?s  ns: 搭档  ns: 奥本海默.

    ns: 奥本海默  ns: 搭档  ?s.

    }

    WHERE {

    ?s  ns: 老师  ns: 玻恩.

    }

  • 相关阅读:
    [SCOI2013]火柴棍数字(背包)
    [NOI2015]品酒大会
    后缀数组小结
    [POI2009]Slw
    [POI2009]Wie
    [POI2008]账本BBB
    ant语法和规范
    使用Hudson进行持续集成
    gnu make
    可信执行环境(TEE)介绍
  • 原文地址:https://www.cnblogs.com/cymx66688/p/11033064.html
Copyright © 2020-2023  润新知