Removing relationships when an ontology is updated in chado
I want to proceed with caution on this point, especially as there has been general discomfort with removing ontology relationships from Chado if they don't appear in a subsequent version of an ontology OBO file.
In the Tripal cv loader, all existing terms and relationships are left in place even if they have disappeared from the ontology that is being updated. There appears to be little harm in keeping the terms - a term removed from a subsequent version of the
ontology may have been attached to a data object and so should perhaps not be deleted in the chado schema. (My understanding is that terms should
not disappear in any case, but be marked 'obsolete'.) My concern is with the relationships.
While trying (and failing) to update the GO cv tables from the current OBO file using the Tripal cv loader, I traced the error to a circular reference in the cvterm_relationship table. As a result, recursive calls to the stored procedure _fill_cvtermpath4node
quickly blew out the stack. The circular reference was not in the OBO file, but in the cvterm_relationship table, possibly resulting from leftover relationships from an earlier load of GO combined with relationships in the updated GO file. It was fixable by
removing cvterm_relationship records for relationships that don't appear in a subsequent version of the ontology.
Relationships do disappear from ontologies. An example from GO:
Parent term - GO:0000042 protein targeting to Golgi
old relationships (present in 12/21/2013 copy of the OBO file):
GO:0000301 | retrograde transport, vesicle recycling within Golgi
GO:0006605 | protein targeting
GO:0016482 | cytoplasmic transport <--- this one disappeared
GO:0072600 | establishment of protein localization to Golgi
new relationships (in the current OBO file)
is_a: GO:0000301 ! retrograde transport, vesicle recycling within Golgi
is_a: GO:0006605 ! protein targeting
is_a: GO:0072600 ! establishment of protein localization to Golgi
Can anyone think of a reason it would be risky to remove relationships appear in older versions of an ontology but not a newer one? It seems to me that they should be removed.