我目前正在使用Jena和TDB在Java 7上编写一些Java代码 .
我希望能够将(大).trig文件加载到TDB数据集中,以便查询速度更快一些 . 我目前拥有的代码是:
Dataset dataset = TDBFactory.createDataset(directoryPath);
Model tdb = dataset.getDefaultModel();
RDFDataMgr.read(tdb, inputFilePath);
try {
String theQuery = readFile(testQueryPath, Charset.defaultCharset());
Query query = QueryFactory.create(theQuery);
QueryExecution qe = QueryExecutionFactory.create(query, dataset);
com.hp.hpl.jena.query.ResultSet results = qe.execSelect();
// Output query results
ResultSetFormatter.out(System.out, results, query);
qe.close();
} catch (IOException e) {
e.printStackTrace();
}
我也尝试过:
FileManager.get().readModel( tdb, inputFilePath);
代替:
RDFDataMgr.read(tdb, inputFilePath);
我收到以下警告:
2014-06-13 13:02:26 WARN riot:77 - 只预期三元组或默认图形数据:忽略命名图形数据
我运行的SPARQL查询是:
PREFIX xsd:http://www.w3.org/2001/XMLSchema#PREFIX dc:http://purl.org/dc/elements/1.1/ PREFIX:< . > SELECT * {{?s?p?o UNION {GRAPH?g {?s?p?o}}}
也是同一个但没有UNION和GRAPH的东西 .
查询什么都不返回 .
有没有人看到明显的问题或知道如何将.trig文件加载到TDB?
1 回答
您只需阅读数据集:
内部写入事务会更好,否则在退出之前调用
TDB.sync(dataset)
.您的代码每次运行都会加载它 . 如果文件非常大,请在运行查询程序之前使用批量加载器tdbloader .