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 查询语句;
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博客