如何解密 RDF4J 数据库的 Triplestore 文件?

问题描述

我目前正在尝试从 universAAL 平台读取 RDF4J 三元组文件,并将它们放入 InfluxDB 以合并来自不同智能生活系统的数据。 但是,我注意到本机存储库的各个索引文件已加密/不可读(见下图)。 社区是否有任何关于如何从 RDF4J 文件(命名空间、triples.prop、triples-cosp、triples-posc、triples-spoc、values.hash、values.dat、values.id)中获取人类可读内容的经验并将它们合并到另一个数据库中? RDF4J 的文档在这里对我没有帮助,所以我无法创建一个像样的导出。

Encrypted File from Triplestore

解决方法

文件未加密,它们只是一种二进制格式,针对高效存储和检索进行了优化,由 RDF4J 的 Native Store 数据库实现使用。它们不适合直接操作。

将它们转换为可读 RDF 的最简单方法是在它们之上启动 Native Store,然后使用 RDF4J API 查询/导出其数据。假设您有一组完整的数据文件,它应该像这样简单:

Repository rep = new SailRepository(new NativeStore(new File("/path/to/datafiles/");

try(RepositoryConnection conn = rep.getConnection()) {
    conn.export(Rio.createWriter(RDFFormat.TURTLE,System.out));
}
finally {
    rep.shutDown();
}

显然,如果要将数据写入文件而不是控制台,请将 System.out 替换为 FileOutputstream。如果您想要不同的语法格式,请将 RDFFormat.TURTLE 更改为其他内容。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...