property inheritance

(part of the InLOC Information Model > InLOC properties)

Inheritance of properties

Heritable properties are noted in the tables for direct properties and compound properties. Whether a relationship passes on those heritable properties is shown in the relationships table: "passes on" means that heritable properties of the subject are by default inherited by the object; "is passed" means that heritable properties of the object are inherited by the subject. A property is only inherited if not explicitly defined – that is, a property defined locally takes precedence over a property that would have otherwise been inherited.

The intention is that property inheritance should make as much intuitive sense as possible. But ICT systems require a way of calculating what is to be inherited, and thus there is a need to specify precise rules. The general principles of property inheritance in InLOC are given below, each followed by one possible algorithmic specification of that aspect of inheritance. These algorithmic formulations are given here as informative, as they would need to be well tested in practice before becoming normative.

Inheritance should only happen within a given LOCstructure. The concept of "within" is defined thus:

  1. S is a LOCstructure (providing the context for being "within")
  2. Q is "immediately within" P in the context of S if
  3. R is within P in the context of S if
    • either R is immediately within P in the context of S
    • or R is immediately within Q in the context of S and Q is within P in the context of S.

One of the design points of InLOC is to allow different structures and definitions to be revised separately, while maintaining the identity of what has not changed. LOCstructures and LOCdefinitions may be modified separately at any granularity, which is why the modified property is not inherited.

As an additional guard against inappropriate inheritance when using borrowed LOCdefinitions, properties are not inherited across any relationship between LOCdefinitions that have different primaryStructures, nor from a LOCstructure to a LOCdefinition with a primaryStructure not equal to that LOCstructure. This is reflected in the rules below.

Inheritance of primaryStructure

When a LOCdefinition is "borrowed" from an external structure, it is important to note its primaryStructure as from that original external structure. Properties are not inherited by a LOCdefinition that has a different primaryStructure to what it is immediately within.

If D is a LOCdefinition with no explicitly defined primaryStructure, S is a LOCstructure, and

  • either
    • D is immediately within S in the context of S
  • or

then the primaryStructure of D is inferred to be S.

Inheritance of heritable properties with literal values

Heritable literal values are simply inherited in a straightforward way, by LOCdefinitions that are immediately within, and have the same primaryStructure as, what they inherit from.

If:

then it may be inferred that C has the property P with value V.

Inheritance of "by" properties

Compound properties of type by are inherited in a similar way, though the differences mean that expressing it precisely is rather more complex.

If:

then a LOCassociation with subject C, type by, scheme.id Y and object O may be inferred as comprised by A.