如何解密 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 更改为其他内容。