2017-02-02 15 views
0

Я хочу создать человека с псевдонимом jd и e-mail [email protected] в постоянной базе данных Apache Jena.Как сохранить запись в Apache Jena?

Я написал следующий код:

var dataSet:Dataset? = null 
val Dir = "data/MyDataSet" 
dataSet = TDBFactory.createDataset(Dir) 

dataSet.begin(ReadWrite.WRITE) 
val model = dataSet.defaultModel 
createPerson("[email protected]", 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> "[email protected]" }""") 
    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() 
    } 

Что не так с моим кодом?

ответ

2

Вы должны получить предупреждение в end, потому что вы не совершили сделку.

dataSet.begin(ReadWrite.WRITE) 
val model = dataSet.defaultModel 
createPerson("[email protected]", model, "jd") 
dataSet.commit() 
dataSet.end() 

 Смежные вопросы

  • Нет связанных вопросов^_^