I try to modify the uri of an existing resource of a ontology model. I thought of creating a new model, new resource (including the new desired uri) and duplicating the content of the old resource.
By iterating and adding the statements doens't work properly. Is there another workaround?
I'm working with jena in java and RDF/XML models.
As you've found resources are immutable. You can bring about the same effect using ResourceUtils.renameResource(resource, newName)
. This goes through your model removing statements mentioning the old resource and adding the equivalents with the new, which is as close as you're going to get to a rename.
Example:
Resource renamed =
ResourceUtils.renameResource(originalResource, "http://example.com/new");
Use ResourceUtils.renameResource(oldResource, newURI). It does the iteration over all triples for you.
If you are doing this on a large database, it may be better to dump the database to Turtle or N-Triples, run a text changing script, and reload the database.