Java 如何使用ApacheJena在RDF文档中编写新节点?
我想在我的RDF文档中添加新节点,第一次创建文档时,我编写了如下内容:Java 如何使用ApacheJena在RDF文档中编写新节点?,java,rdf,jena,Java,Rdf,Jena,我想在我的RDF文档中添加新节点,第一次创建文档时,我编写了如下内容: String eventosURI = "http://Eventos"; String path = getServletContext().getRealPath("/") + "DataBase/Events.xml"; Model base = ModelFactory.createDefaultModel(); Resource node = base.createResource(
String eventosURI = "http://Eventos";
String path = getServletContext().getRealPath("/") + "DataBase/Events.xml";
Model base = ModelFactory.createDefaultModel();
Resource node = base.createResource(eventosURI).addProperty(VCARD.NAME, something);
try{
FileOutputStream fos = new FileOutputStream(path);
base.write(fos);
} catch(Exception e){
out.println(e.getMessage());
}
但是,如果调用同一个servlet重新创建模型并覆盖其他节点,则必须向同一文档添加更多节点
我尝试使用以下命令更改FileOutputStream:
FileWriter write = new FileWriter(path, true);
base.write(write);
这是可行的,但不是我想要的方式,因为重新编写整个结构。。。有没有办法将节点添加到已创建的RDF中?ModelFactory。getDefaultModel()会创建一个内存中的空模型。如果要编辑现有模型,需要先加载它 你有几种方法可以做到这一点 一是使用。这将向现有模型获取InputStream、图形中相对URI的基本URI和序列化语言(默认为RDF/XML,它还支持TURTLE和N-TRIPLE)。该方法将向模型中添加所有语句:
Model model = ModelFactory.createDefaultModel();
if (path.exists()) {
model.read(new FileInputStream(path), null, "TURTLE"); // or whatever format you used
}
然后,您将拥有以前保存在模型中的所有语句。ModelFactory.getDefaultModel()创建内存中的空模型。如果要编辑现有模型,需要先加载它 你有几种方法可以做到这一点 一是使用。这将向现有模型获取InputStream、图形中相对URI的基本URI和序列化语言(默认为RDF/XML,它还支持TURTLE和N-TRIPLE)。该方法将向模型中添加所有语句:
Model model = ModelFactory.createDefaultModel();
if (path.exists()) {
model.read(new FileInputStream(path), null, "TURTLE"); // or whatever format you used
}
然后,您将拥有以前保存在模型中的所有语句。您的意思是要将模型从原始文件加载到内存中,向内存中的模型添加一些数据,然后将模型写回文件中?或者,如果您将数据序列化为N-Triples格式,只需将输出附加到文件中,即可将更多数据添加到文件中。您的意思是要将模型从原始文件加载到内存中,向内存中的模型添加一些数据,然后将模型写回文件中?或者,如果您以N-Triples格式序列化数据,只需将输出附加到文件,即可向文件添加更多数据。