Tôi mới sử dụng cả Jena-TDB và SPARQL, vì vậy nó có thể là một câu hỏi ngớ ngẩn. Tôi đang sử dụng tdb-0.9.0, trên Windows XP.Jena TDB để lưu trữ và truy vấn bằng API
Tôi đang tạo mô hình TDB cho tệp trail_1.rdf
của mình. Sự hiểu biết của tôi ở đây (sửa tôi nếu tôi sai) là đoạn mã sau sẽ đọc tập tin rdf đã cho trong mô hình TDB và cũng lưu trữ/tải (không chắc chắn từ nào tốt hơn) mô hình trong thư mục đã cho D:\Project\Store_DB\data1\tdb
:
// open TDB dataset
String directory = "D:\\Project\\Store_DB\\data1\\tdb";
Dataset dataset = TDBFactory.createDataset(directory);
Model tdb = dataset.getDefaultModel();
// read the input file
String source = "D:\\Project\\Store_DB\\tmp\\trail_1.rdf";
FileManager.get().readModel(tdb, source);
tdb.close();
dataset.close();
Sự hiểu biết này có đúng không?
Theo hiểu biết của tôi kể từ bây giờ các mô hình được lưu trữ tại thư mục D:\Project\Store_DB\data1\tdb
, tôi sẽ có thể chạy truy vấn trên nó tại một số điểm sau đó của thời gian.
Vì vậy, để truy vấn Cửa hàng TDB tại D:\Project\Store_DB\data1\tdb
tôi đã cố gắng sau, nhưng nó in không có gì:
String directory = "D:\\Project\\Store_DB\\data1\\tdb" ;
Dataset dataset = TDBFactory.createDataset(directory) ;
Iterator<String> graphNames = dataset.listNames();
while (graphNames.hasNext()) {
String graphName = graphNames.next();
System.out.println(graphName);
}
Tôi cũng đã cố gắng này, mà cũng không in bất cứ điều gì:
String directory = "D:\\Project\\Store_DB\\data1\\tdb" ;
Dataset dataset = TDBFactory.createDataset(directory) ;
String sparqlQueryString = "SELECT (count(*) AS ?count) { ?s ?p ?o }" ;
Query query = QueryFactory.create(sparqlQueryString) ;
QueryExecution qexec = QueryExecutionFactory.create(query, dataset) ;
ResultSet results = qexec.execSelect() ;
ResultSetFormatter.out(results) ;
Tôi đang làm gì sai? Có điều gì sai trái với sự hiểu biết của tôi mà tôi đã đề cập ở trên không?