The first two columns are the same as in PB-1071, so I've included all of the relations from the list there. Not all are used in extensions as of the v37 GAF, and of the ones in use not all are used with PomBase gene IDs.

name	display text	reciprocal annotation display text	comment	
activated_by	activated by	N/A	only used with ChEBI IDs; could use 'activates'
coincident_with	at	N/A	(wouldn't apply to SO terms, and hard to craft sensible text for PomBase IDs)
directly_negatively_regulates	directly inhibits	directly inhibited by
directly_positively_regulates	directly activates	directly activated by
during	during	N/A	only used with GO IDs
exists_during	during	N/A	only used with GO IDs
happens_during	during	N/A	only used with GO IDs
has_regulation_target	regulates	regulated by
in_presence_of	in presence of	N/A	only used with CHEBI IDs, for modification annotations
inhibited_by	inhibited by		N/A	only used with ChEBI IDs; could use 'inhibits'
not_during	except during	N/A	only used with GO IDs; deprecated by GO
not_exists_during	except during	N/A	only used with GO IDs; deprecated by GO
not_happens_during	except during	N/A	only used with GO IDs; deprecated by GO
not_occurs_at	not at	N/A	not used with PomBase IDs; mix of GO, SO, CL; deprecated by GO
not_occurs_in	not in	N/A	not used with PomBase IDs; mix of GO, SO, CL; deprecated by GO
occurs_at	at	N/A	not used with PomBase IDs; mix of GO, SO, CL
occurs_in	in	N/A	not used with PomBase IDs; mix of GO, SO, CL
part_of	part of	N/A	only used with GO or CL IDs
required_for	required for	N/A	only used with GO IDs
stabilizes	stabilizes	N/A	not used at present

For some relations, the best display string depends on term and its ancestry. These relations are affected:
has_input, has_direct_input, has_indirect_input
and the desired display for any of the three would be:
if descendent of	display
GO:0003824 catalytic activity	has substrate	substrate of
GO:0006810 transport	transports	transported by
GO:0005215 transporter activity	transports	transported by
GO:0005488 binding	binds	binds
GO:0051179 localization	localizes	localized by

For phenotypes, the only extensions that will need reciprocal annotations use the assayed_using relation. The simplest way to display them would be to gloss over overexpression/knockdown of wild type (counting on users to be smart enough to figure out what's going on), and jsut use one display text snippet:

name	display text	reciprocal annotation display text
assayed_using	affecting	affected by mutation in

But there are a couple of other options.
- We could use a longer, clunkier display text, e.g. 'affected by mutation or expression change in'
- The display conversion code could do something sophisticated like "if the allele is wild type (and therefore expression must be overexpression or knockdown), use 'affected by expression change in'; otherwise use 'affected by mutation in'"

Not sure we're still using (none in pombase-build-2016-12-08-v1.gaf.gz, and never used for FYPO):
has_part	has part	N/A	only used with SO IDs

----------
This is a more minimal list, covering just relations that (a) are in use and (b) would yield sensible reciprocals. For more, see annotation_extension_reciprocal_notes.txt.

name	display text	reciprocal annotation display text
has_regulation_target	regulates	regulated by
localization_dependent_on	localized by	localizes
requires_direct_regulator	requires direct regulation by	directly regulates
requires_regulator	requires	regulates
assayed_using	affecting	affected by mutation in

For has_input, has_direct_input, has_indirect_input, it's more a case of "if we're displaying X for the annotation, the reciprocal should display Y", so:

relation displayed as	reciprocal displayed as
has substrate	substrate of by
transports	transported by
binds	binds
localizes	localized by


----------
Last update: 2106-12-09