rdf - 如何使用 Jena 插入/更新 RDF 文件?

标签 rdf sparql jena

我想在我的 RDF 文件中插入一个节点。我知道有 SPARQL 插入/更新语法,但如何使用 Jena 执行此操作。一个例子会有很大用处。

最佳答案

您确定需要使用 SPARQL 更新吗?在 Jena 中,节点(资源或文字)本身不在 Model 中,而只是作为模型中三元组(即 Statement)的一部分。如果您的代码中有一个 Model 对象,请使用 addStatement 的众多变体之一将给定的资源或文字添加到您的图中。

附录

在你的评论阐明你想要添加到磁盘上的文件之后,你可以按照 RobV 所说的那样做,修改内存中的 Model,然后再写出来。这确实是正确的方法。但是,有一种快速简便的解决方法可能会对您有所帮助。如果您的文件是 TurtleN-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/

相关文章:

sparql - 如何查询使用 Wikidata 和 SPARQL 的人?

java - 多线程java应用程序中的奇怪行为(没有锁的死锁?)

java - 让用户输入文件名

linq - LinqToRDF 的替代品(将 Linq 引入 RDF 数据的库)?

xml - 获取 xml :lang attribute with a sparql request

java - 如何解析此文件并捕获所有 'Data Gather' 文本?

java - 替换耶拿 SPARQL 查询中的变量

algorithm - 对以 RDF 表示的网络数据应用图形分析

java - 使用 Jena 在 DBpedia 上创建 SPARQL 查询

syntax-error - 我该如何计算sparql?