String directory = "directoryPath";
Dataset dataset = TDBFactory.createDataset(directory);
Dataset datasetnew = TDBFactory.createDataset(directory);
数据集是对TDB目录的引用还是类似于TDB目录中的文件夹? datasetnew会再次创建对Directory的引用,还是会创建单独的datset文件夹? 基本上,我有一个用例,即每个用户创建一个数据集,用户可以保存所有模型,不会干扰其他用户的模型。
如果不是这样的话,有人可以建议我一个方法!
答案 0 :(得分:3)
指定同一目录时,不会创建新目录。实际上,dataset
和datsetnew
都指向同一个物理RDF存储。即如果您尝试在两者上创建交易,您将获得Currently in an active transaction org.apache.jena.dboe.transaction.txn.TransactionException
。所以不,你不能在一个TDB目录中创建多个数据集。
另一个观察结果是你似乎在使用TDB1而不是TDB2。 TDB2是更高版本,因此它是最好的。然后您的代码将如下所示:
Path path = Paths.get(".").toAbsolutePath().normalize();
String dbDir = path.toFile().getAbsolutePath() + "/db/";
Location location = Location.create(dbDir);
Dataset dataset = TDB2Factory.connectDataset(location);
String strQuery = "INSERT DATA {<http://dbpedia.org/resource/Grace_Hopper> <http://xmlns.com/foaf/0.1/surname> \"Hopper\" .}";
dataset.begin(ReadWrite.WRITE);
UpdateRequest updateRequest = UpdateFactory.create(strQuery);
UpdateProcessor updateProcessor = UpdateExecutionFactory.create(updateRequest, dataset);
updateProcessor.execute();
dataset.commit();
dataset.close();