gStore提供了HTTP API和socket API ,分别对应ghttp和gserver。其中socket API目前暂停维护。而且HTTP API和socket API 相比,更稳定且能保持连接,也更规范。今天就来讲讲ghttp的使用方法。
1. ghttp简介
ghttp通过http服务向用户提供API服务ghttp组件提供c++、java、python、php和nodejs API。请参考源码文件的api/http/cpp
、
api/http/java
、
api/http/python
、
api/http/php
和
api/http/nodejs
中的示例代码。我们用java API进行接口介绍,其中一共有13个接口。
2. 开启ghttp服务
我们需要指定一个端口,并打开这个端口,。从浏览器访问特定的URL, gStore 就能执行相应的操作。
输入如下命令打开ghttp:
bin/ghttp db_name serverPort
或者 bin/ghttp serverPort db_name
参数含义:db_name
:
以“
.db
”
结尾的数据库名称,serverPort
:
http服务监听端口,该端口需要手动指定,且需保证该端口不会被服务器防火墙禁止。
Tips
-
参数
serverPort
或
db_name
可以省略。如果省略了
serverPort
,其值会被默认设置为
9000
。如果省略了
db_n
ame
,服务会以没有
load
数据库的形式启动。
在开启ghttp服务后,可以通过浏览器访问:http://serverip:port/
。其中serverip
为gstore服务器所在的ip地址,port
为ghttp启动的端口。
3. 关闭ghttp服务
gStore HTTP访问端口可以停止gStore的ghttp服务。关闭命令如下:
bin/shutdown serverPort
Tips
-
不要试图通过 Ctrl+C 来停止 ghttp ,这会导致数据库的变更丢失。
4. 常用接口
Java API主要对外接口在gStore/api/http/java/src/jgsc/GstoreConnector.java
下,主要函数如下:
l
构造初始化函数:GstoreConnector
函数声明:public class GstoreConnector(String serverIP, int serverPort, String username, String password);
功能:初始化
参数含义:[服务器IP],[服务器上ghttp端口],[用户名],[密码]
使用示例:GstoreConnector gc = new GstoreConnector("127.0.0.1", 9000, "root", "123456");
l
构建数据库:build
函数声明:public String build(String db_name, String rdf_file_path, String request_type);
功能:通过RDF文件新建一个数据库
参数含义:[数据库名称],[.nt文件路径],[请求类型"GET"和"post",如果请求类型为“GET”,则可以省略]
使用示例:gc.build("lubm", "data/lubm/lubm.nt");
l
加载数据库:load
函数声明:public String load(String db_name, String request_type);
功能:加载你建立的数据库
参数含义:[数据库名称],[请求类型"GET"和"post",如果请求类型为“GET”,则可以省略]
使用示例:gc.load("lubm");
l
停止加载数据库:unload
函数声明:public String unload(String db_name, String request_type);
功能:停止加载数据库
参数含义:[数据库名称],[请求类型"GET"和"post",如果请求类型为“GET”,则可以省略]
使用示例:gc.unload("lubm");
l
用户管理:user
函数声明:public String user(String type, String username2, String addition, String request_type);
功能:添加、删除用户或修改用户的权限,必须由根用户执行操作
参数含义:["add_user
"添加用户,"delete_user
"删除用户,"add_query
"添加查询权限,"delete_query
"删除查询权限,"add_load"
添加加载权限,"delete_load
"删除加载权限,"add_unload
"添加不加载权限,"delete_unload
"删除不加载权限,"add_update
"添加更新权限,"delete_update
"删除更新权限,"add_backup
"添加备份权限,"delete_bakup
"删除备份权限,"add_restore
"添加还原权限,"delete_restore
"删除还原权限,"add_export
"添加导出权限,"delete_export
"删除导出权限],
[用户名],[密码],[请求类型"GET"和"post",如果请求类型为“GET”,则可以省略]
使用示例:
gc.user("add_user", "user1", "111111"); //添加用户名为“user1”,密码为“111111”的用户。
gc.user("add_query", "user1", "lubm");//添加数据库“lubm”里用户名为“user1”查询权限。
l
显示用户:showUser
函数声明:public String showUser(String request_type);
功能:显示所有用户
参数含义:[请求类型"GET"和"post",如果请求类型为“GET”,则可以省略]
使用示例:gc.showUser();
l
数据库查询:query
函数声明:public String query(String db_name, String format, String sparql, String request_type);
功能:查询数据库
参数含义:[数据库名称],[查询结果类型json,html或text],[sparql语句],[请求类型"GET"和"post",如果请求类型为“GET”,则可以省略]
使用示例:String res = gc.query("lubm", "json", sparql);
l
删除数据库:drop
函数声明:public String drop(String db_name, boolean is_backup, String request_type);
功能:直接删除数据库或删除数据库同时留下备份
参数含义:[数据库名称],[false不备份,true备份],[请求类型"GET"和"post",如果请求类型为“GET”,则可以省略]
使用示例:gc.drop("lubm", false); //不备份删除数据库“lubm”
l
监控数据库:monitor
函数声明:public String monitor(String db_name, String request_type);
功能:显示特定数据库的信息
参数含义:[数据库名称],[请求类型"GET"和"post",如果请求类型为“GET”,则可以省略]
使用示例:gc.monitor("lubm");//含义是监控“lubm”数据库,并显示特定信息。
l
保存数据库:checkpoint
函数声明:public String checkpoint(String db_name, String request_type);
功能:如果更改了数据库,保存数据库
参数含义:[数据库名称],[请求类型"GET"和"post",如果请求类型为“GET”,则可以省略]
使用示例:gc.checkpoint("lubm");
l
展示数据库:show
函数声明:public String show(String request_type);
功能:显示所有已创建的数据库
参数含义:[请求类型"GET"和"post",如果请求类型为“GET”,则可以省略]
使用示例:gc.show();
l
查询数据库并保存文件:fquery
函数声明:public void fquery(String db_name, String format, String sparql, String filename, String request_type);
功能:查询数据库并保留结果到文件
参数含义:[数据库名称],[查询结果类型json,html或text],[sparql语句],[文件名称],[请求类型"GET"和"post",如果请求类型为“GET”,则可以省略]
使用示例:gc.fquery("lubm", "json", sparql, "ans.txt");
l
导出数据库:exportDB
函数声明:public String exportDB(String db_name, String dir_path, String request_type);
功能:导出数据库到文件夹下
参数含义:[数据库名称],[数据库导出的文件夹路径],[请求类型"GET"和"post",如果请求类型为“GET”,则可以省略]
使用示例:gc.exportDB("lubm", "/root/gStore/");
以上是gStore常用java API,感兴趣的朋友,可以启动API服务,并尝试连接它,其他编程语言的API调用大同小异,具体可查看对应gStore/api/http/
下的对应文件。
针对gStore有任何问题也可通过加运营小哥哥微信,邀请加入gStore图谱社区咨询。
诚邀大家参加
·gStore-weekly技术文章征集活动·
相关技术文章,包含但不限于以下内容:系统技术解析、案例分享、实践总结、开发心得、客户案例、使用技巧、学习笔记等。文章要求原创。
入选周刊即送精美礼品~