edit uri of existing resource using jena

2019-01-12 11:13发布

问题:

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.

回答1:

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");


回答2:

Use ResourceUtils.renameResource(oldResource, newURI). It does the iteration over all triples for you.



回答3:

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.