The relation architecture is the most complicated part of Goby, and thus predictably the part that causes the most tricky problems. Here are two such problems, visual and functional respectively, that I’ll have to devote serious attention to:

  • visual: It’s possible for two nodes to be related to each other in more than one way. This creates an issue in space view: at the moment it just draws a straight line between any two items that are related, meaning there’s no way of distinguishing between two separate relations connecting the same two nodes. My best idea for how to account for this right now is to have the relation lines be curved in the case that there’s more than one, as in this website which I believe also uses D3-force.

  • functional: It’s possible to create a property to reference other objects in the same class/table. It’s also possible to create a property that references objects from multiple classes/tables. Relations in Goby are stored as junction tables in SQLite, and the two relation features I detailed just now are a little unorthodox and complicated to account for in this system. I still think junction tables are by far the best way of doing it, but all the same the logic gets very complicated and I haven't gotten clear about it in my head yet.