You asked what it is about option 1 that we considered bad design. A part of the reason we are considering using JSON API is because it offers us an abstract design to house all our data in. By forcing us to take what is essentially one resource, the concept, and turn it into 3 manufactured resources (primary_concepts, secondary_concepts, and tertiary_concepts) it feels like we are being less abstract, doing a work-around because we don’t just want relationships among resources but weighted relationships.
What if instead of primary, secondary, tertiary we instead decide to just weight the relationships with an value between 1-100. I’m not going to create 100 different resources (e.g. weight_1_concept, weight_2_concept, weight_50_concept, weight_100_concept).
What if we decide each relationship has more than one piece of metadata associated with the relationship, something like an emphasis (primary, secondary, tertiary) and a point of origin (automated, manual). We don’t want to need to create a Cartesian product (e.g., automated_primary_concepts, manual_primary_concepts, automated_secondary_concepts, etc).
Is adding a meta object really our only option here? We can’t be the only people wanting to qualify relationships are we?