Gstore官网学习三:快速入门

文章目录

一、数据格式

  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 lubm

gsql>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 argument

gsql>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!
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值