我想在我的 RDF 文件中插入一个节点。我知道有 SPARQL 插入/更新语法,但如何使用 Jena 执行此操作。一个例子会有很大用处。
最佳答案
您确定需要使用 SPARQL 更新吗?在 Jena 中,节点(资源或文字)本身不在 Model
中,而只是作为模型中三元组(即 Statement
)的一部分。如果您的代码中有一个 Model
对象,请使用 addStatement
的众多变体之一将给定的资源或文字添加到您的图中。
附录
在你的评论阐明你想要添加到磁盘上的文件之后,你可以按照 RobV 所说的那样做,修改内存中的 Model
,然后再写出来。这确实是正确的方法。但是,有一种快速简便的解决方法可能会对您有所帮助。如果您的文件是 Turtle
或 N-Triples
格式,您可以只追加到文件的末尾(显然,您不能在 XML 中这样做)。所以一些事情是这样的:
File f = new File( "where.your.file.is" );
FileOutputStream out = new FileOutputStream( f, true );
out.write( ":john :loves :jane.\n" );
out.close();
会起作用。这并不是真的推荐,因为你冒着 (a) 没有正确的命名空间前缀的风险,(b) 引入语法错误(因为你没有使用 Jena 编写器),以及 (c) 创建重复的三元组,但是在紧要关头,它有时是一个有用的技巧。显然,您只能使用此技术添加信息,而不能更新或删除现有的三元组。
当从正在进行的日志记录或监控应用程序中收集大量数据时,直接附加到 N-triples
文件的末尾是一种有效且有用的技术。
关于rdf - 如何使用 Jena 插入/更新 RDF 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7631158/