Hello Alexandre,
On Thu, 2011-05-26 at 11:51 -0400, Alexandre Passant wrote:
> Hi,
>
> Based on your two answers, I guess I have to run the following
>
> UPDATE DB.DBA.RDF_QUAD
> set g = iri_to_id(
> regexp_replace(id_to_iri(g), '/foo/', '/bar/')
> )
> where
> g = iri_to_id(
> regexp_match('/foo/', id_to_iri(g))
> );
>
> Right ?
You're right, except wrong "g = iri_to_id(" in WHERE, probably due to
copy+paste error.
That single update would be sufficient in the simplest case.
However it will be quite slow, because it will calculate WHERE condition
for every row and new G value for every matching row. It would be faster
if you could get list of graphs in some relatively fast way and then
update graph after graph.
> "For Virtuoso Graph Groups two tables need to be updated...[1]"
These updates are needed if renamed graphs can be members of graph
groups or if you want to rename graph groups as well as graphs.
In addition, you had to add new free-text rules for new graph names +
remove rules for old graph names, if there were per-graph rules at all.
And even if the whole storage is free-text indexed, not on per-graph
basis,
you should update free-text index, because the inverse index data of
each literal are enriched with list of graphs that contain this literal
in some quads, and renaming a graph make these data (partially)
obsolete.
Best Regards,
Ivan Mikhailov
OpenLink Software
http://virtuoso.openlinksw.com
[1] http://ods.openlinksw.com/wiki/main/Main/VirtTipsAndTricksGuideRenameGraph