如何在Apache Jena中保存记录?

我想创建一个昵称为jd的人,并在持久的Apache Jena数据库中通过电子邮件john.doe@provider.com创建。

我写了下面的代码:

 var dataSet:Dataset? = null val Dir = "data/MyDataSet" dataSet = TDBFactory.createDataset(Dir) dataSet.begin(ReadWrite.WRITE) val model = dataSet.defaultModel createPerson("john.doe@provider.com", model, "jd") dataSet.end() dataSet.close() private fun createPerson(email: String, model: Model, nick: String) { val uuid = UUID.randomUUID() val uri = "http://mycompany.com/data/p-${uuid}" val person = model.createResource(uri) person.addProperty(VCARD.EMAIL, email) person.addProperty(VCARD.N, model.createResource() .addProperty(VCARD.NICKNAME, nick)) } 

当我运行它,我没有得到任何错误。

但是,当我尝试从文件中读取数据(请参阅下面的代码),查询没有找到任何东西。

  ds.begin(ReadWrite.READ) val query = QueryFactory.create("""SELECT ?x WHERE { ?x <http://www.w3.org/2001/vcard-rdf/3.0#EMAIL> "john.doe@provider.com" }""") val qexec: QueryExecution try { qexec = QueryExecutionFactory.create(query, ds.defaultModel) val rs = qexec.execSelect() while (rs.hasNext()) { val solution = rs.nextSolution() System.out.println("") } } catch (throwable:Throwable) { logger.error("", throwable) } finally { ds.end() } 

我的代码有什么问题?

你最后应该得到一个警告,因为你没有提交交易。

 dataSet.begin(ReadWrite.WRITE) val model = dataSet.defaultModel createPerson("john.doe@provider.com", model, "jd") dataSet.commit() dataSet.end() 
Interesting Posts