15.4.4. Comparison to Aspect Perspectives

In the discussion so far, we’ve restricted ourselves to the use of Aspects as the object role of a Perspective. However, we can have user roles in Aspect Contexts, too. Suppose we had added to Party a user role Giver, with a perspective on Present and its Price. We could then cast Father as a specialization of Giver (and Mother too).

Actually, we cannot do that in this model, as Father and Mother are calculated in the Birthday contexts and Calculated Roles cannot have Aspects. But the reasoning would apply for Enumerated Roles.]. Now there will be a single inverted query on Price. The perspective of Giver would have to be contextualized to Birthday Mother, which means that its object would be changed to Present Mother.

In short, the perspective of Giver is adapted and added to Father’s perspectives. Only afterwards will the perspective’s query be inverted. Consequently, it will be indexed by the Present Mother Enumerated role when it is stored with Price. Symmetrically, the same happens to Mother’s perspectives and the inversion of the new perspective object will be indexed with the Present Father Enumerated role.

Price will then bear three inverted queries:

  1. one indexed with Present (the Aspect object role in Party) for Giver (the Aspect subject role in Party),

  2. one indexed with Present Mother, for the Calculated Father in Birthday Mother and

  3. one indexed with Present Father, for the Calculated Mother in Birthday Father.

When the Price property of Present Mother changes, only one of these three queries will be followed to a context. This will turn up with an instance of Birthday Mother and we will then calculate Father in it and make sure the Price delta is sent to him.