RDF数据库-Linux下Virtuoso安装与使用及Java编程

本文详细介绍了如何在Linux服务器上安装Virtuoso数据库,包括下载、解压、配置环境变量、启动服务,以及通过命令行工具isql导入RDF数据。同时,还讲解了使用Java进行Virtuoso数据库的连接和SPARQL查询,包括加载jdbc驱动、建立连接和执行查询语句的过程。
摘要由CSDN通过智能技术生成

一、Virtuoso安装与数据导入

1. 下载Virtuoso:  Virtuoso开源版下载地址

2. 解压到/usr/local目录

tar -zxvf virtuoso-opensource.x86_64-generic_glibc25-linux-gnu.tar.gz

3. 将virtuoso-openlink下的database文件夹中的virtuoso.ini.sample重命名为virtuoso.ini

cd virtuoso-opensource/database
cp virtuoso.ini.sample virtuoso.ini

4. 配置环境变量

vi ~/.bashrc
export VIRTUOSO_HOME=/usr/local/virtuoso-opensource
export PATH=.:${VIRTUOSO_HOME}/bin:$PATH
source ~/.bashrc

5. 在database目录下启动Virtuoso,默认8890端口

virtuoso-t -fd

6. 启动后可在浏览器打开:IP:8890

7. 用户名密码默认dba

8. Virtuoso浏览器端数据导入太慢,甚至卡死。考虑使用命令行isql导入数据。

9. 修改virtuoso.ini中的DirsAllowed参数,更改为自己的数据集目录。(也可以不修改该参数,但要把数据集拷贝到其默认目录下)

10. 重启virtuoso(ctrl+c关闭,再执行virtuoso-t -fd)

11. 新建vsql文件load.vsql,去拷贝 Virtuoso官方文档中 Bulk Loader Procedure and Sub-procedures creation SQL script 下的脚本代码

12. 启动isql

isql 1111 dba dba

13. 在isql下运行load.vsql文件,记得有分号

SQL> load load.vsql;

14. 导入数据,三个参数分别为数据集路径,要导入的RDF文件,要使用的Graph IRI名称

SQL> ld_dir_all('/usr/local/dataset', '*.ttl', 'https://BSBM.cn');

15. 查看要导入的文件列表

SQL> SELECT * FROM DB.DBA.LOAD_LIST;

16. 开始导入数据

SQL> rdf_loader_run();

17. 导入完毕后,可使用sparql + 查询语句进行查询(中间不能有换行,需转为一行)

SQL> sparql 查询语句;

二、Virtuoso Java编程

1. 下载virtjdbc4.jar

virtjdbc4.jar 提取码:1024

2. 若需要转为maven,执行

mvn install:install-file -q -Dfile=/tmp/virtjdbc4.jar -DgroupId=com.openlink.virtuoso -DartifactId=virtjdbc4 -Dversion=4.0 -Dpackaging=jar -DgeneratePom=true

其中-Dfile是jar的路径,根据自己路径去调整。

对应的依赖为

<dependency>
  <groupId>com.openlink.virtuoso</groupId>
   <artifactId>virtjdbc4</artifactId>
   <version>4.0</version>
</dependency>

3. 连接Virtuoso数据库

    Connection conn;
    public void connect(String ipAddr) {
        try {
            //加载想要连接的数据库的驱动到JVM(Java虚拟机)
            Class.forName("virtuoso.jdbc4.Driver");
            conn = DriverManager.getConnection("jdbc:virtuoso://" + ipAddr,"dba","dba");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

4. 执行Sparql查询

    public void execute(String sparql) throws IOException, SQLException {
        connect();
        Statement stmt = conn.createStatement();
        List<String> result = new ArrayList();
        try {
            boolean more = stmt.execute(sparql);
            ResultSetMetaData data = stmt.getResultSet().getMetaData();
            while (more) {
                ResultSet rs = stmt.getResultSet();
                while (rs.next()) {
                    StringBuffer s = new StringBuffer();
                    for (int i = 1; i <= data.getColumnCount(); i++) 
                        s.append(rs.getString(i) + "\t");
                    String sUTF8 = new String(s.toString().getBytes("ISO8859-1"), "UTF-8");
                    System.out.println(sUTF8.trim());
                 }
                 more = stmt.getMoreResults();
            }
            stmt.close();
         } 
         catch (Exception ee) {
             ee.printStackTrace();
         }
    }

参考文章:(14条消息) Linux 服务器上安装 Virtuoso 数据库 并导入数据(超详细)_Mr_TangGuo的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值