文章目录

  • 一、数据格式
  • 二、构建数据库
    • 2.1、创建数据库
      • 方法一:命名行模式(gbuild)
      • 方法二:可视化工具(gworkbench)
      • 方法三:HTTP API(ghttp)
    • 2.2、数据库查询
      • 方法一:命令行模式(gquery)
        • 1.查询名为db_name的数据库,输入以下命令:
        • 2.了解gquery的详细使用,可以输入以下命令进行查看:
        • 3.进入gquery控制台命令:
      • 方法二:可视化工具(gworkbench)
      • 方法三: HTTP API(ghttp)
    • 2.3、新增数据/插入数据
      • 方法一:命令行模式(gadd)–文件
      • 方法二:命令行模式(gquery)—SPARQL语句
      • 方法三:可视化工具(gworkbench)
      • 方法四: HTTP API(ghttp)
    • 2.4、删除数据
      • 方法一: 命令行模式(gsub)–文件删除
      • 方法二:命令行模式(gquery)—SPARQL语句
      • 方法三:可视化工具(gworkbench)
      • 方法四: HTTP API(ghttp)
    • 2.5、数据库状态查询/统计数据
      • 方法一:命令行模式(gmonitor)
      • 方法二:可视化工具(gworkbench)
      • 方法三: HTTP API(ghttp)
    • 2.6、数据库列表
      • 方法一:命令行模式(gshow)
      • 方法二:可视化工具(gworkbench)
      • 方法三: HTTP API(ghttp)
    • 2.7、删除数据库
      • 方法一:命令行模式(gdrop)
      • 方法二:可视化工具(gworkbench)
      • 方法三: HTTP API(ghttp)
    • 2.8、导出数据库
      • 方法一:命令行模式(gexport)
      • 方法二:可视化工具(gworkbench)
      • 方法三: HTTP API(ghttp)
    • 2.9、gStore外部访问接口(ghttp)
      • 开启ghttp服务
    • 2.10、关闭gStore HTTP访问端口
      • 方法一: 命令行模式(shutdown)
    • 2.11、初始化系统数据库
      • 方法一:命令行模式(ginit)

一、数据格式

  1. gStore是基于RDF模型的图数据库引擎,其数据格式也是遵循RDF模型的。

  2. RDF 是用于描述现实中资源的W3C 标准,它是描述信息的一种通用方法,使信息可以被计算机应用程序读取并理解。

  3. 现实中任何实体都可以表示成RDF 模型中的资源

比如,图书的书名、作者、修改日期、内容以及版权信息。

这些资源可以用作知识图谱中对客观世界的概念、实体和事件的抽象。每个资源的一个属性及属性值,或者它与其他资源的一条关系,都被称为一条知识。属性和关系能表示成三元组

  1. ​ 一个三元组包括三个元素:主体(Subject)属性(Property)以及客体(Object),通常描述的是两个资源间的关系或一个资源的某种属性。

  2. ​当某个三元组描述了某个资源的属性时,其三个元素也被称为主体属性属性值(Property Value)。比如,三元组<亚里士多德、出生地、Chalcis>表达了亚里士多德出生于Chalcis 的事实。

  3. ​利用这些属性和关系,大量资源就能被连接起来,形成一个大RDF 知识图谱数据集。因此,一个知识图谱通常可以视作三元组的集合。这些三元组集合进而构成一个RDF 数据集。知识图谱的三元组集合可以选择关系型数据库或者图数据库进行存储。

RDF数据应以N-Triple格式提供(现在不支持XML),并且必须以SPARQL1.1语法提供查询。N-Triple格式文件示例如下:


@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
_:a  foaf:name   "Johnny Lee Outlaw" .
_:a  foaf:mbox   <mailto:jlow@example.com> .
_:b  foaf:name   "Peter Goodguy" .
_:b  foaf:mbox   <mailto:peter@example.org> .
_:c  foaf:mbox   <mailto:carol@example.org> .
  1. ​三元组通常采用W3C定义的NT文件格式存储

如下3条RDF数据,分别表示了张三这个实体的两个属性性别和年龄,值分别为男和28,最后一条表示的是张三这个实体与李四这个实体之间存在着一个好友的关系。

<张三> <性别> "男"^^<http://www.w3.org/2001/XMLSchema#String>.
<张三> <年龄> "28"^^<http://www.w3.org/2001/XMLSchema#Int>.
<张三> <好友> <李四>.
  1. < > 包裹的是一个实体的URI
  2. " " 包裹的是字面值,表示的是实体某个属性的值
  3. ^^ 表示实体某个属性的值该值类型

​ 关于N-Triple文件更详细的描述请参考N-Triple。并非SPARQL1.1中的所有语法都是在gStore中解析和回答的,例如,属性路径超出了gStore系统的能力。

二、构建数据库

2.1、创建数据库

只要下载并编译gStore系统的代码,就会自动创建一个名为system(真实目录名称system.db)的数据库。这是管理系统统计信息的数据库,包括所有用户和所有数据库。您可以使用gquery命令查询此数据库,但禁止使用编辑器对其进行修改。

创建数据库操作是gStore最重要的操作之一,也是用户安装gStore后需要做的第一个操作,gStore提供多种方式进行数据库创建操作。

方法一:命名行模式(gbuild)

gbuild命令用于从RDF格式文件创建新的数据库,使用方式:

bin/gbuild db_name rdf_triple_file_path

参数含义:

  1. db_name:以“.db”结尾的数据库名称
  2. rdf_triple_file_path:带“.nt”或者".n3"后缀的文件所在的文件路径

例如,我们从lubm.nt构建一个名为“lubm.db”的数据库,可以在数据文件夹中找到。

[root@localhost gStore]$ bin/gbuild lubm ./data/lubm/lubm.nt

注意:

不能以空的RDF数据集来创建数据库
注意不能直接cd到bin目录下,而要在gStore安装根目录执行gbuild操作

方法二:可视化工具(gworkbench)

workbench是gStore的一个可视化管理工具,通过gworkbench可以连接上gstore并通过数据库管理模块可以创建图数据库,具体内容详见【开发文档】-【workbench】-【数据库管理】功能。

方法三:HTTP API(ghttp)

gStore提供了ghttp组件作为http api服务组件,用户可以通过向ghttp发送http请求实现相关功能,ghttp中通过build请求来构建图数据库,具体内容详见【开发文档】-【常用API】

官网

2.2、数据库查询

​ 数据库查询是gStore最重要的功能之一,gStore支持W3C定义的SPARQL 1.1查询语言,用户可以通过如下三种方式使用gStore数据库查询功能。

方法一:命令行模式(gquery)

gquery用于使用包含SPARQL查询的文件查询现有数据库。(每个文件包含一个精确的SPARQL语句,SPARQL语句不仅可以进行查询操作,还可以进行增加和删除操作,详细的SPARQL语句使用请参考第八章)

1.查询名为db_name的数据库,输入以下命令:

bin/gquery db_name query_file

参数含义:

query_file:以“.sql”结尾的SPARQL语句存放的文件路径(其他后缀名也可以)

例如,我们执行./data/lubm/lubm_q0.sql中的SPARQL语句查询lubm数据库

[root@localhost gStore]$ bin/gquery lubm ./data/lubm/lubm_q0.sql


2.了解gquery的详细使用,可以输入以下命令进行查看:

bin/gquery --help

3.进入gquery控制台命令:

bin/gquery db_name

程序显示命令提示符(“gsql>”),您可以在此处输入命令

使用help看到所有命令的基本信息

输入 quit 以退出gquery控制台。

对于sparql 命令, 使用sparql query_file执行SPARQL查询语句,query_file为存放SPARQL语句的文件路径。当程序完成回答查询时,它会再次显示命令提示符。

我们也以lubm.nt为例。

(base) [root@iz8vb0u9hafhzz1mn5xcklz gStore]# bin/gquery lubmgsql>sparql ./data/lubm/lubm_q0.sql
... ...
Total time used: 4ms.
final result is :
<http://www.Department0.University0.edu/FullProfessor0>
<http://www.Department1.University0.edu/FullProfessor0>
<http://www.Department2.University0.edu/FullProfessor0>
<http://www.Department3.University0.edu/FullProfessor0>
<http://www.Department4.University0.edu/FullProfessor0>
<http://www.Department5.University0.edu/FullProfessor0>
<http://www.Department6.University0.edu/FullProfessor0>
<http://www.Department7.University0.edu/FullProfessor0>
<http://www.Department8.University0.edu/FullProfessor0>
<http://www.Department9.University0.edu/FullProfessor0>
<http://www.Department10.University0.edu/FullProfessor0>
<http://www.Department11.University0.edu/FullProfessor0>
<http://www.Department12.University0.edu/FullProfessor0>
<http://www.Department13.University0.edu/FullProfessor0>
<http://www.Department14.University0.edu/FullProfessor0>gsql>help
help - print commands message
quit - quit the console normally
sparql - load query from the second argumentgsql>quit





注意:

  • 如果没有答案,将打印“[empty result]”,并且在所有结果后面都有一个空行。
  • 使用readline lib,因此您可以使用键盘中的箭头键查看命令历史记录,并使用和箭头键移动和修改整个命令。
  • 实用程序支持路径完成。(不是内置命令完成)
  • 注意不能直接cd到bin目录下,而要在gStore安装根目录执行gquery操作

方法二:可视化工具(gworkbench)

方法三: HTTP API(ghttp)

2.3、新增数据/插入数据

插入RDF数据是gStore常规操作,用户可以通过如下几种方式来执行数据插入操作。

方法一:命令行模式(gadd)–文件

gadd用于将文件中的三元组插入现有数据库。

用法:

bin/gadd db_name rdf_triple_file_path

参数含义:

rdf_triple_file_path:带".nt"或者".n3"后缀的文件路径

示例:

[bookug@localhost gStore]$ bin/gadd lubm ./data/lubm/lubm.nt
...
argc: 3 DB_store:lubm   insert file:./data/lubm/lubm.nt
get important pre ID
...
insert rdf triples done.
inserted triples num: 99550

注意:

  1. gadd主要用于RDF文件数据插入
  2. 不能直接cd到bin目录下,而要在gStore安装根目录执行gadd操作

方法二:命令行模式(gquery)—SPARQL语句

SPARQL定义中可以通过insert data指令来实现数据插入,基于此原理,用户也可以通过编写SPARQL插入语句,然后使用gStore的gquery工具来实现数据插入,其中SPARQL插入语句示例如下:

insert data {<张三> <性别> "男"^^<http://www.w3.org/2001/XMLSchema#String>.
<张三> <年龄> "28"^^<http://www.w3.org/2001/XMLSchema#Int>.
<张三> <好友> <李四>.
}

通过{}可以包含多条RDF数据,注意每条RDF数据都要以.结尾

由于可以使用数据库查询功能实现数据插入,因此也同样可以使用如下功能来进行数据插入。

方法三:可视化工具(gworkbench)

方法四: HTTP API(ghttp)

2.4、删除数据

删除RDF数据是gStore常规操作,用户可以通过如下几种方式来执行数据删除操作。

方法一: 命令行模式(gsub)–文件删除

gsub用于从现有数据库中删除文件中的三元组。

用法:

bin/gsub db_name rdf_triple_file_path

参数含义:

rdf_triple_file_path:带".nt"或者以“.n3"后缀的所要删除的数据文件路径

示例:

[root@localhost gStore]$ bin/gsub lubm ./data/lubm/lubm.nt
...
argc: 3 DB_store:lubm  remove file: ./data/lubm/lubm.nt
...
remove rdf triples done.
removed triples num: 99550

方法二:命令行模式(gquery)—SPARQL语句

SPARQL定义中可以通过delete data指令来实现数据插入,基于此原理,用户也可以通过编写SPARQL插入语句,然后使用gStore的gquery工具来实现数据插入,其中SPARQL插入语句示例如下:

delete data {<张三> <性别> "男"^^<http://www.w3.org/2001/XMLSchema#String>.
<张三> <年龄> "28"^^<http://www.w3.org/2001/XMLSchema#Int>.
<张三> <好友> <李四>.
}

通过{}可以包含多条RDF数据,注意每条RDF数据都要以.结尾

另外SPARQL中还可以通过delete where语句来实现根据子查询结构删除数据,如下所示。

delete where
{<张三> ?x ?y.
}

该语句表示删除张三实体的所有信息(包括属性和关系)

由于可以使用数据库查询功能实现数据插入,因此也同样可以使用如下功能来进行数据插入。

方法三:可视化工具(gworkbench)

方法四: HTTP API(ghttp)

2.5、数据库状态查询/统计数据

统计数据功能是获取指定数据库的统计信息,有如下几种方式。

方法一:命令行模式(gmonitor)

gmonitor用于获取指定数据库的统计信息。

用法:

bin/gmonitor db_name

参数含义:

db_name:数据库名称

示例:

[root@localhost gStore]$ bin/gmonitor lubm
database: lubm
creator: root
built_time: "2019-07-28 10:27:24"
triple num: 99550
entity num: 28413
literal num: 0
subject num: 14569
predicate num: 17

方法二:可视化工具(gworkbench)

方法三: HTTP API(ghttp)

2.6、数据库列表

方法一:命令行模式(gshow)

gshow用于获取所有可用数据库列表信息。

用法:

bin/gshow

示例:

[root@localhost gStore]$ bin/gshow
========================================
database: system
creator: root
built_time: "2019-07-28 10:26:00"
========================================
database: lubm
creator: root
built_time: "2019-07-28 10:27:24"

方法二:可视化工具(gworkbench)

方法三: HTTP API(ghttp)

2.7、删除数据库

删除数据库功能可以删除指定数据库,有如下三种形式

方法一:命令行模式(gdrop)

gdrop用于删除某个数据库。

用法:

bin/gdrop db_name

命令参数:

db_name:数据库名称

示例:

[root@localhost gStore]$ bin/drop lubm2
after tryCache, used 0 ms.
QueryCache cleared
Total time used: 97ms.
update num : 3
lubm2.db is dropped successfully!

为了删除数据库,您不应该只是输入rm -r db_name.db因为这不会更新名为的内置数据库system。相反,你应该输入bin/gdrop db_name。

方法二:可视化工具(gworkbench)

方法三: HTTP API(ghttp)

2.8、导出数据库

导出数据库功能可以将数据库导出成**.nt文件**。有如下三种形式:

方法一:命令行模式(gexport)

gexport用于导出某个数据库。

用法:

bin/gexport db_name [path]

命令参数:

db_name:数据库名称

path:导出到指定文件夹下(如果为空,则默认导出到gStore根目录下)
示例:

(base) [root@iz8vb0u9hafhzz1mn5xcklz gStore]# bin/gexport lubm
after Handle, used 0 ms.
QueryCache didn't cache
after tryCache, used 0 ms.
in getFinal Result the first half use 0  ms
after getFinalResult, used 0ms.
Total time used: 1ms.
finish exporting the database

方法二:可视化工具(gworkbench)

方法三: HTTP API(ghttp)

2.9、gStore外部访问接口(ghttp)

ghttp是gStore提供的外部访问接口,是一个http API服务,用户通过向ghttp发送http请求,可以实现对gStore的远程连接和远程操作

开启ghttp服务

gStore编译后,在gStore的bin目录下会有一个ghttp服务,但该服务默认不启动,需要用户手动启动ghttp服务,启动命令如下:

bin/ghttp db_name serverPort

==笔者亲自实验只写bin/ghttp 就可以了默认端口号为9000 ==

参数说明:

  • db_name:要启动ghttp的数据库名称(可选项,如果不填则默认为system数据库,该参数主要作用在于,启动ghttp时,将把该数据库相关信息load到内存中,如果后续查询其他数据库,服务器也将自动load所需数据库,因此该参数可以不填

  • serverPort:ghttp监听端口,该端口需要手动指定,且需保证该端口不会被服务器防火墙禁止)

ghttp 支持GET和POST请求类型。

ghttp 持并发只读查询,但是当包含更新的查询到来时,整个数据库将被锁定。在具有数十个内核线程的计算机上,建议并发运行查询的数量低于300,但我们可以在实验中同时运行13000个查询。要使用并发功能,最好将“打开文件”和“最大进程”的系统设置修改为65535或更大。

如果通过发送包含更新的查询ghttp, 您最好经常向控制台发送checkpoint 命令 ghttp 。 否则,更新可能无法与磁盘同步,并且如果 ghttp 服务器异常停止则会丢失(例如,键入“Ctrl + C”)

** 注意:你最好不要只需输入命令“Ctrl + C”来停止ghttp,因为这不安全。

** 为了停止ghttp服务器,您可以输入 bin/shutdown serverPort

2.10、关闭gStore HTTP访问端口

关闭gStore HTTP访问端口可以停止gStore的ghttp服务

方法一: 命令行模式(shutdown)

shutdown用于关闭某个ghttp服务

用法:

bin/shutdown port

命令参数:

  • port:ghttp启动时设置的端口(如果启动时没有设置端口,则默认为9000)
    示例:
(base) [root@root gstore-test]# bin/shutdown 9990
[1]+  Done                    nohup bin/ghttp 9990

2.11、初始化系统数据库

system数据库为gStore内置的系统数据库,该数据库无法删除,用于保存系统相关信息,尤其是已构建的数据库信息,如果system数据库损坏,可能导致ghttp无法启动,因此gStore提供了初始化系统数据库功能

方法一:命令行模式(ginit)

ginit用于初始化数据库

用法:

bin/ginit -d [db_name1] [db_name2] [...]

命令参数:

  • db_name1:数据库名称

如果没有写任何的数据库名称,则重新初始化的system数据库中将没有其他数据库信息

示例:

[root@localhost gStore]$ bin/ginit -d lubm
=============================================================
UPDATE
Insert:
{<system> <built_time>  "2021-02-21 22:50:05".<lubm>    <database_status> "already_built".<lubm>  <built_by>    <root>.<lubm>   <built_time>  "2021-02-21 22:50:05".
}
=============================================================
parse query  successfully! .
unlock the query_parse_lock .
after Parsing, used 96ms.
write priviledge of update lock acquired
QueryCache cleared
Total time used: 97ms.
update num : 4
system.db is built successfully!

Gstore官网学习三:快速入门相关推荐

  1. Gstore官网学习六:安装和部署workbench(自带填坑)

    文章目录 第一步:安装tomcat 第二步:获取workbench安装包 第三步:安装配置软件,执行下面的命令 第四步: 移动到你的tomcat的webapps下面 第五步:使用gStore Work ...

  2. Gstore官网学习二:安装(笔者自带填坑)

    文章目录 一.系统要求 二.安装环境准备 2.1 安装gcc 和 g++ 安装 2.1.1官网指导 2.1.2 笔者方法 第一步:安装centos-release-scl 第二步:安装devtools ...

  3. Gstore官网学习一:知识图谱与gStore介绍

    文章目录 一.概述 二.技术 2.1 举个例子 2.2 SPARQL 举个列子 三.知识图谱数据管理的一个核心问题是如何有效地存储RDF数据集和快速回答SPARQL查询 一.概述 "知识图谱 ...

  4. Gstore官网学习四:常用API

    文章目录 一.API介绍 二.启动API服务 三.API 结构 一.API介绍 gStore通过http服务向用户提供API服务,其组件为ghttp. 我们现在为ghttp提供c++.java.pyt ...

  5. Gstore官网学习五:支持SPARQL查询语法

    文章目录 一.图模式(Graph Patterns) 1.1 最简单的图模式 1.2 基本图模式 (Basic Graph Pattern) 1.3 组图模式 (Group Graph Pattern ...

  6. 深度学习工程应用快速入门

    课程介绍 伴随人工智能时代的到来,深度学习技术也发挥着越来越重要作用,越来越多的技术人才开始投身入这一行业中,并希望发展成为一名深度学习算法工程师.然而,在实际的工程设计中,深度学习研发者总会面临着各 ...

  7. HTML5+app开发学习之快速入门篇

    HTML5+app开发学习之快速入门篇 5+app开发概念理解相关 开发环境与支持 快速入门实战 5+app开发概念理解相关 见博文:学习跨平台移动应用开发必须理解的一些概念 开发环境与支持 开发环境 ...

  8. Spring AOP官网学习

    Spring AOP官网学习 5.1 AOP概念 让我们从定义一些核心的AOP概念和术语开始.这些术语并不是spring特有的.不幸的是,AOP术语不是特别直观. 1.Aspect(方面):跨多个类的 ...

  9. Spring官网学习(一)概述

    文章目录 1.Spring官网简介 2.Spring总览 2.1.什么是Spring 2.2.Spring的发展历程 3.Spring的设计理念 3.1.Spring的优点 4.IOC和AOP浅析 4 ...

最新文章

  1. css3之transition、transform、animation比较
  2. 让更多人能够使用Hadoop
  3. cdrom是多媒体微型计算机,全国计算机二级题库第三章
  4. 在spring-boot中使用@ConfigurationProperties
  5. 定义带参数的C宏,方便输出调试信息
  6. Rust : codewars的Sum of Pairs
  7. eclipse反编译class文件
  8. AB Test AA Test
  9. C++ Redis mset 二进制数据接口封装方案
  10. python画两条曲线_python 实现将多条曲线画在一幅图上的方法
  11. [BUUCTF]PWN——pwnable_orw
  12. Opencv实现hwc到chw(归一化、减均值、除方差)重磅封装版
  13. MacBook电池使用策略
  14. 第3章--Linux内核及内核编程
  15. spring-boot 与 dubbo
  16. 9.半兰伯特光照模型
  17. 微信不会把关注取消事件推送给服务器,微信公众平台开发关注及取消关注事件的方法...
  18. TypeScript 类的使用、泛型与其他补充类型
  19. (五)DSP28335基础教程——外部中断控制(按键触发)
  20. 3A级企业信用认证作用

热门文章

  1. Postman 实用接口测试执行顺序
  2. XILINX XC7A200T-1FBG676C FPGA - 现场可编程门阵列
  3. 解析 | 模-数(A/D)转换器
  4. Linux centos环境 安装谷歌浏览器
  5. 睡地板的女高管,也被马斯克裁了!推特丧心病狂的第八轮裁员来了
  6. 日本某地(我猜应该是在米花町)发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
  7. 微信小程序登录功能wx.login
  8. Adobe Flash Player已不再受支持怎么解决?
  9. 3-3 uniapp、HTML5+、Native.js 功能代码汇总
  10. 硅谷再撒钱:公司暴力涨薪,HR“大打出手”,这场人才战富了谁?