2014-06-13 72 views
0

我目前正在使用Jena和TDB在Windows 7上編寫一些代碼 - 在Windows 7上使用Jena和TDB。將.trig文件加載到TDB中?

我希望能夠將(大).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暴亂:77 - 只有預期的三元組或默認圖形數據:named圖形數據忽略

的SPARQL查詢,我跑是:

PREFIX的xsd:http://www.w3.org/2001/XMLSchema#

PREFIX DC:http://purl.org/dc/elements/1.1/

PREFIX:<>

SELECT *

{

{?的2 P 3 O} UNION {GRAPH?克{?的2 P 3 O}}

}

和也相同之一,但沒有UNION和GRAPH的東西。

查詢不返回任何內容。

有沒有人看到明顯的問題或知道如何將.trig文件加載到TDB中?

回答

2

你剛剛讀入的數據集:

RDFDataMgr.read(dataset, inputFilePath); 

裏面寫事務會更好,否則你退出之前調用TDB.sync(dataset)

您的代碼每次運行都加載它。如果文件非常大,請在運行查詢程序之前使用批量加載程序tdbloader。

+0

工作正常!謝謝!我會研究tdbloader,因爲該文件大約爲300MB。 – user2570374