/*
  # UniProt NCBI taxonomy annotations

  There are two interesnting pieces of information here:

  1. the organism from which this protein comes
  2. the host, for viruses and the like
*/
package com.bio4j.model;

import com.bio4j.angulillos.*;
import com.bio4j.angulillos.Arity.*;

public final class UniProtNCBITaxonomyGraph<V,E> extends TypedGraph<UniProtNCBITaxonomyGraph<V,E>,V,E> {

  public UniProtNCBITaxonomyGraph(UniProtGraph<V,E> uniProtGraph, NCBITaxonomyGraph<V,E> ncbiTaxonomyGraph) {

    super(uniProtGraph.raw());
    this.uniProtGraph = uniProtGraph;
    this.ncbiTaxonomyGraph = ncbiTaxonomyGraph;
  }

  public final UniProtGraph<V,E> uniProtGraph;
  public final NCBITaxonomyGraph<V,E> ncbiTaxonomyGraph;

  @Override public final UniProtNCBITaxonomyGraph<V,E> self() { return this; }

  // TODO add edges here: organism which is toOne, and host about which I'm not sure
}

@@ -340,13 +340,12 @@
 nds 
-Typed
+Link
 Grap
@@ -808,89 +808,745 @@
 %0A%0A  
-// TODO add edges here: organism which is toOne, and host about which I'm not sure
+public final class Organism extends LinkEdge%3C%0A    UniProtGraph%3CV,E%3E, UniProtGraph%3CV,E%3E.Protein,%0A    Organism,%0A    NCBITaxonomyGraph%3CV,E%3E, NCBITaxonomyGraph%3CV,E%3E.Taxon%0A  %3E%0A  %7B%0A    private Organism(E edge) %7B super(edge, organism); %7D%0A    @Override public final Organism self() %7B return this; %7D%0A  %7D%0A%0A  public final OrganismType organism = new OrganismType();%0A  public final class OrganismType extends LinkEdgeType%3C%0A    UniProtGraph%3CV,E%3E, UniProtGraph%3CV,E%3E.Protein,%0A    Organism,%0A    NCBITaxonomyGraph%3CV,E%3E, NCBITaxonomyGraph%3CV,E%3E.Taxon%0A  %3E%0A  implements FromAny, ToOne %7B%0A%0A    private OrganismType() %7B super(uniProtGraph.protein, ncbiTaxonomyGraph.taxon); %7D%0A    @Override public final Organism fromRaw(E edge) %7B return new Organism(edge); %7D%0A  %7D
 %0A%7D%0A

add a Organism edge linking proteins and taxa