我对Jena-TDB和SPARQL都是新手,所以这可能是一个愚蠢的问题。我在Windows XP上使用tdb-0.9.0。Jena TDB使用API存储和查询
我正在为我的trail_1.rdf
文件创建TDB模型。我的理解(如果我错了,纠正我)是以下代码将读取TDB模型中的给定rdf文件,并且还存储/加载(不知道什么是更好的单词)给定目录中的模型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();
这种理解是否正确?
按我的理解,因为现在的模型存储在D:\Project\Store_DB\data1\tdb
目录,我应该能够在某个时间点在其上运行的查询。
所以查询TDB商店在D:\Project\Store_DB\data1\tdb
我试过以下,但不打印输出:
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);
}
我也试过了,也没有打印任何东西:
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) ;
我在做什么不正确?我的理解有什么不妥之处?