0

我目前正在使用 Jena 和 TDB 用 Ja​​va 编写一些代码——在 Windows 7 上。

我希望能够将(大).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 查询是:

前缀 xsd: http ://www.w3.org/2001/XMLSchema#

前缀直流: http: //purl.org/dc/elements/1.1/

前缀:<.>

选择 *

{

{ ?s ?p ?o } UNION { 图 ?g { ?s ?p ?o } }

}

也是同一个,但没有 UNION 和 GRAPH 的东西。

查询不返回任何内容。

有没有人看到明显的问题或知道如何将 .trig 文件加载到 TDB 中?

4

1 回答 1

2

您刚刚读入数据集:

RDFDataMgr.read(dataset, inputFilePath);

TDB.sync(dataset)在退出之前调用内部写入事务会更好。

您的代码每次运行都会加载它。如果文件非常大,请在运行查询程序之前使用批量加载程序 tdbloader。

于 2014-06-14T12:16:11.440 回答