将turtle文件加载到OpenRDF存储库

时间:2014-05-12 14:08:50

标签: rdf sesame

我正在尝试使用OpenRDF / Sesame框架将一个海龟文件(.ttl)加载到存储库,我写的代码是这样的 -

public class RepositoryAPI {

public static void main(String[] args) {

    File dataDir = new File("C:\\Temp\\sesameRepo\\KB_Exemplar");
    try {
        Repository repo = createRepository(dataDir);
        addRDFToRepository(repo);
    } catch (RepositoryException e) {
        e.printStackTrace();
    }
}

private static Repository createRepository(File dataDir) throws RepositoryException {
    Repository repos = new SailRepository(new MemoryStore(dataDir));
    repos.initialize();
    return repos;
}

private static void addRDFToRepository(Repository repo) {
    File file = new File("C:\\LDMVelocityWork\\KB_Quality_Exemplar_BE_Ownership.ttl");
    String baseURI = "http://data.jpmchase.net/cib/cia/KBQualityExemplar";
    try{
        RepositoryConnection con = repo.getConnection();
        try{
            con.add(file, baseURI, RDFFormat.RDFXML);
        } catch (IOException e) {
            e.printStackTrace();
        }
        finally {
              con.close();
           }
    }
    catch (OpenRDFException e) {
        }
}

}

名为KB_Exemplar的目录正在生成,但在创建的文件中没有任何正确的值。该文件的内容名为' memorystore.data'是一件奇怪的事。如果我正在编写正确的代码,有人可以检查并告诉我。

1 个答案:

答案 0 :(得分:3)

您的代码有很多看起来很奇怪。

首先,您声明您正在尝试加载Turtle文件,但您有以下代码:

File file = new File("C:\\LDMVelocityWork\\KB_Quality_Exemplar_BE_Ownership.ttl");
String baseURI = "http://data.jpmchase.net/cib/cia/KBQualityExemplar";
try{
    RepositoryConnection con = repo.getConnection();
    try{
        con.add(file, baseURI, RDFFormat.RDFXML);
    } catch (IOException e) {
        e.printStackTrace();
    }
    finally {
          con.close();
       }
}
catch (OpenRDFException e) {
    }

告诉Sesame从您给定的Turtle文件中读取,但在此行上将其视为RDF / XML:

con.add(file, baseURI, RDFFormat.RDFXML);

这几乎肯定会引发错误,但是你在外部catch块中没有做任何事情(你抓住OpenRDFException),所以你隐藏了这个错误,几乎可以肯定没有数据实际上被添加到你的存储库

您的代码最有可能正在执行以下add()调用:

con.add(file, baseURI, RDFFormat.TURTLE);

另外,您需要在外部catch块中添加一些实际的错误处理逻辑,这样您就不会隐藏错误。

其次,您说明以下内容:

  

名为KB_Exemplar的目录正在生成但在其中   创建的文件没有任何正确的值。的内容   那个名为'memorystore.data'的文件很奇怪

Sesame存储库格式不是人类可读的,它是RDF数据的二进制表示和该数据的索引。

如果您希望以人类可读的格式恢复数据,那么您可以编写代码来执行此操作。例如,要将数据作为Turtle返回,您可以执行以下操作:

conn.export(new TurtleWriter());