# The meaning of inheritance in CIDOC relevant documents: * **Riva2022**: {cite}`riva2022-LRMoo` * **CIDOC_7.1.3**: Riva2022 writes: > 2.2 Manifestation as subtype of Expression: Inheritance is a construct frequently used in modelling and the is-a (inheritance) relationship is used to define one class as a more specialized version of another. An inherited class also implies a subset, since any instance of \[JB: sub- \] class B also counts as an instance of \[JB: super- \] class A. A property that is defined for a class, will also apply on any subtype of this class. It is worth underlining that inheritance is a modelling construct, it is a relationship between types of things. In IFLA LRM, inheritance is used to simplify the modelling of attributes and relationships. Most notably, all IFLA LRM entities inherit the generic LRM-E1 Res entity type, and the entity type LRM-E6 Agent is introduced as a common supertype for LRM-E7 Person and LRM-E8 Collective Agent (which is a superclass of Corporate Body etc.). ![](../../images/Riva2022_fig3.png) PROBLEM: As long as you solely use RDFS and OWL for modelling, there is no concept of inheritance at all -- and for sure not the inheritance we know from object oriented programming oder UML. Discussions: * OWL Class and Subclass Property Inheritance * Inheritance terminology not appropriate for RDFS and OWL #1228 * RDFS/ OWL Inheritance with Joseki+Pellet HOWEVER: When the CIDOC people mention "inheritance", they explain it via the terms *domain* and *range*: > **Inheritance and Transitivity** CIDOC CRM is formulated as a class system with inheritance. A property P with domain A and range B will also be a property between any possible subclasses of A and of B. (CIDOC_7.1.3, p. 21) So, what does "domain" and "range" mean? Again we have a fundamental polysemy: * In a database (and also OO) community domain and range are used as integrity rules. * In the RDFS and OWL community domain and range are entailment rules > ** About the logical expressions used in the CIDOC CRM** \[...\] In terms of semantic data modelling, classes and properties are used to express ontological knowledge by means of various kinds of constraints, such as sub-class/sub-property links, e.g., E21 Person is a sub-class of E20 Biological Object, or domain/range constraints, e.g., the domain of *P152 has parent* is class E21 Person (p. 21) > \[...\] the above domain constraint on property *P152* has parent can be formulated in first-order logic as the axiom: *P152(x,y) ⇒ E21(x)* (reading: for all individuals x and y, if x is a P152 of y, then x is an E21). In CIDOC_7.1.3 the semantics of domain seems to be exactly the formal semantic of rdfs entailment pattern *rdfs2* in . From a formal point of view this is ok. But why do the authors make use of the term "constraints" then?