I think it does. You are representing the dependencies in the offering hierarchy at product level, which is right in my point of view.
I doubt regarding the @type filed of the productRelationship object. I think that this field is used to represent the type (the class if you want) of the JSON object. In this case should be the class you use for productRelationship objects, not for products.
Additionally, you have also the option to use relationships at product order item level, specially if you need the product order management to do some kind of orchestration.
Hope it helps.