Multiple Labels for Nodes and Links

Right, I understand that labels as nodes will be more involved to implement, but I’m not convinced that I’ll be able to build the functionality I require in a reasonable way without them.

To give more context, a user should be able to create a “Data Annotation” (often called a “label”) on the diagram. This Annotation is bound to data that changes based on the state of the business model. An annotation can be either placed directly on the diagram in a single position - this is obviously a simple node and trivial to implement.

However, some Annotations should be “linked” with another Node or Link and move relatively to the position of the master node or link. These Annotations can be very complex as well (think data-tables, sparklines, etc).

I guess my question is: “Given these sorts of requirements, does it make sense to implement every ‘data annotation’ as a node; if so, how do I go about binding a relative location?” I would prefer to keep my API simple and not have 3 separate implementations of how annotations work when pinned to the diagram vs to a node vs to a link.