Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ApacheJena在RDF文档中编写新节点?_Java_Rdf_Jena - Fatal编程技术网

Java 如何使用ApacheJena在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(

我想在我的RDF文档中添加新节点,第一次创建文档时,我编写了如下内容:

    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格式序列化数据,只需将输出附加到文件,即可向文件添加更多数据。