SCDish inconsistency
What's wrong with the current model?
It's unclear how the information, of where a dish is served, is preserved.
The SCDish is a SCThingInPlace therefore it can be assigned any Room, Building or PointOfInterest.
But the information could also be stored in offers-attribute of type Array<SCThingThatCanBeOfferedOffer<SCAcademicPriceGroup>> in SCDish by setting the provider of the SCThingThatCanBeOfferedOffer to a Room, Building or PointOfInterest (or a Person or an Organization).
How should the model be instead?
Using the offers[].provider instead of the inherited attribute inPlace.
Why should the model be that way?
I don't know if there is a benefit of a dish being a SCThingInPlace. I would use the offers[].provider-attribute to set the location, not only because of lessening the complexity of the model but also because of the advantage that a single dish can be used over and over again regardless of its set location (through the inherited inPlace-attribute). The same dish could be offered a week later through a diffrent offer at a diffrent location set by the provider.