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

司寇望
2023-12-01

一、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博客

 类似资料: