我正在尝试使用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'是一件奇怪的事。如果我正在编写正确的代码,有人可以检查并告诉我。
答案 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());