I think it’s because it was developed with bio4j in mind, so bio4j has different parts/modules/subgraphs (like GO, Uniprot, etc.) and we want to have each such graph independent, while being able to connect them — so an edge can go from a (source-)type in one graph to a (target-)type in another graph.