SPARQL更新本地文件查询

时间:2012-12-04 18:40:39

标签: sparql jena arq

我正在尝试使用jena arq使用SPARQL Update查询更新本地rdf文件。以下是代码

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 个答案:

答案 0 :(得分:3)

我认为您的混淆源于使用文件名作为图名:

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

这不会将数据插入名为file.n3文件中,而是将其插入名为 file:///path-to-file/file.n3的图形中。该图表将在graphstore创建它的任何位置,正如您设置的那样,它将是一个内存中的对象。为了保持更新,您需要使用管理持久性图形的图形库,例如使用TDB,或者需要在更新后将图形写入磁盘。我猜你想要后者。

编写RDF当前在Model上使用API​​方法,Graph是基础Jena 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" ); 对象的外观,但具有其他便利功能,包括I / O.因此,您需要从图形存储中获取对图形的引用,将其作为模型包装,然后将其写出来。警告 - 未经测试的代码:

{{1}}

答案 1 :(得分:2)

您已创建商店并将文件上传到商店,然后通过商店执行更新。因此,您的商店已成功更新,但您尚未将商店内容导出回文件。