The additions file is an (suitably named) xml file residing in the root of each source directory, i.e. /sources/interpro/interpro_additions.xml

It contains extensions (and possible new additions) to the core models, and is used to flesh out the skeletal model as it were, by at the very least, adding new fields to existing objects.

Often extensions to a core model object are just reflecting fields specific to their particular data source, and only feature in that data source.

<?xml version="1.0"?> <classes>

...

<class name="org.flymine.model.genomic.ProteinFeature?" extends="org.flymine.model.genomic.BioEntity?" is-interface="true">

<attribute name="interproId" type="java.lang.String"/> ... <collection name="proteins" referenced-type="org.flymine.model.genomic.Protein" reverse-reference="proteinFeatures"/> ...

</class>

...

</classes>

In this case the ProteinFeature? item is being defined as a sub-type of one of the top level core classes, BioEntity?, and is being assigned an Interpro Id as an attribute.

The ProteinFeature? also has a collection of proteins, thus indicating that it can appear on many proteins, the Protein class should have a matching reference that points back to the ProteinFeature?, thus allowing bi-directional navigation. It is quite important that the names match at each end of the relationship so that the navigation will work as intended.

The remaining type of relation is a Reference, which represents one side of a 1:1 relationship (or the 1 side of a 1:Many), i.e.

<?xml version="1.0"?> <classes>

...

<class name="org.flymine.model.genomic.Transcript" extends="org.flymine.model.genomic.BioEntity?" is-interface="true">

<attribute name="exonCount" type="java.lang.Integer"/> <reference name="protein" referenced-type="org.flymine.model.genomic.Protein"/> <reference name="translation" referenced-type="org.flymine.model.genomic.Translation" reverse-reference="transcript"/>

</class>

...

</classes>

Here a Transcript has two references, one to a Protein, and another to a Translation, but only the reference to the Translation is set up for bi-direction navigation (reverse-reference).