我尝试修改本体模型的现有资源的 uri。我想创建一个新模型、新资源(包括新的所需 uri)并复制旧资源的内容。
通过迭代和添加语句不能正常工作。还有另一种解决方法吗?
我正在使用 java 和 RDF/XML 模型中的 jena。
正如您所发现的,资源是不可变的。您可以使用ResourceUtils.renameResource(resource, newName)
. 这将通过您的模型删除提及旧资源的语句并添加新资源的等价物,这与您将要重命名一样接近。
例子:
Resource renamed =
ResourceUtils.renameResource(originalResource, "http://example.com/new");
使用ResourceUtils.renameResource(oldResource, newURI)。它为您完成所有三元组的迭代。
如果您在大型数据库上执行此操作,最好将数据库转储到 Turtle 或 N-Triples,运行文本更改脚本,然后重新加载数据库。