2017-02-02 6 views
0

닉네임이 jd이고 이메일이 [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()