2012-12-04 4 views
1

jena arq를 사용하여 SPARQL 업데이트 쿼리로 로컬 rdf 파일을 업데이트하려고합니다. 다음은 코드입니다SPARQL 로컬 파일에 대한 쿼리 업데이트

GraphStore graphstore = GraphStoreFactory.create(); 
UpdateRequest req = UpdateFactory.create(); 
req.add(" PREFIX : myprefixuri INSERT DATA { GRAPH file:///path-to-file/file.n3 { :person :name 'xyz'. } } "); 
UpdateAction.execute(req, graphstore); 

코드를 실행 한 후 쿼리가 성공적으로 실행되었지만 로컬 파일이 업데이트되지 않았 음을 나타냅니다.

답변

2

스토어를 만들고 파일을 업로드 한 다음 스토어에서 업데이트를 실행했습니다. 따라서 상점이 성공적으로 갱신되었지만 아직 상점 내용을 파일로 다시 익스포트하지 않았습니다.

INSERT DATA { GRAPH file:///path-to-file/file.n3 

이 그것을file:///path-to-file/file.n3라는 이름의 그래프 에 삽입, file.n3라는 파일에 데이터를 삽입하지 않습니다

+0

감사하지만 당신은 또한 나 또는 SPARQL 업데이트 쿼리를 실행하는 전체 코드에 대한 포인터를 안내하시기 바랍니다 수있는 것은 파일을 다시 쓴다? – user1876683

+1

나는 Jena 전문가가 아니지만 그 대답은 Jena 문서에서 찾을 수 있다고 가정합니다. http://jena.apache.org/documentation을 참조하십시오. –

3

나는 당신의 혼란 그래프 이름으로 파일 이름을 사용에서 발생 생각 . 이 그래프는 graphstore가 생성 한 곳이면 어디든지 설정 될 수 있습니다. 설정 한대로 메모리 내 객체가됩니다. 업데이트를 지속 시키려면, 예를 들어 TDB을 사용하여 영구 그래프를 관리하는 그래프 스토어를 사용해야하거나, 업데이트 후에 그래프를 디스크에 써야합니다. 나는 당신이 후자를 원한다고 생각하고 있습니다.

RDF 쓰기는 현재 기본 Jena Graph 객체의 외관이지만 I/O를 포함한 추가 편의 기능이있는 Model에서 API 메소드를 사용합니다. 따라서 그래프 저장소에서 그래프에 대한 참조를 가져 와서 모델로 포장 한 다음 작성해야합니다. 경고 - 검증되지 않은 코드 :

답장을
Node graphName = Node.createURI("file:///path-to-file/file.n3"); 
Graph g = graphstore.getGraph(graphName); 
Model m = ModelFactory.createModelForGraph(g); 
g.write(new FileWriter("/path-to-file/file.n3"), "Turtle"); 
+0

감사합니다. 당신 말이 맞아, 나는 업데이트 된 그래프를 다시 파일에 쓰는 부분을 놓치고 있었다. – user1876683

+0

@ user1876683이 문제가 해결되면 답변을 수락하는 것을 잊지 마십시오 (투표 수 아래의 눈금 표시를 클릭하십시오) – RobV