【问题标题】:Loading a turtle file to the OpenRDF Repository将海龟文件加载到 OpenRDF 存储库
【发布时间】:2014-06-29 22:47:18
【问题描述】:

我正在尝试使用 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”的内容很奇怪。有人可以检查一下,如果我写的代码正确,请告诉我。

【问题讨论】:

    标签: rdf sesame


    【解决方案1】:

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

    首先,您声明您正在尝试加载 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());
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    相关资源
    最近更新 更多