Pattern: Multiple-Inheritance Approach and Representing Class Hierarchies - APPROVED

While the ISO IDMP standards present an information model that, like taxonomies, uses a single rather than multiple inheritance, the ontology is polyhierarchical. This allows for concepts, such as a polymer substance, to be both a single substance and a polydisperse substance, and to inherit characteristics of both, as appropriate. A chemical substance is a monodisperse substance, which is a single substance.

A set of taxonomic class hierarchies provides the backbone of the IDMP Ontology where all concepts are represented along a formal sub-class / superclass, or "is-a" hierarchies.  For example, the class "chemical substance" is classified under "monodisperse substance", which is under "single substance" which is under "substance" etc., as shown in Figure 1.

Figure 1. Substance class hierarchy in the ISO 11238 Regulated Information on Substances ontology

For the subclass hierarchy to be correct it must always be true that an instance of <subclass> is also an instance of <superclass>. In other words, if Amlodipine is an instance of "chemical substance" then it must also be a "monodisperse substance", and a "single substance", and a "substance", and so forth.

Chemical Substance Definition
	<owl:Class rdf:about="&idmp-sub;ChemicalSubstance">
		<rdfs:subClassOf rdf:resource="&idmp-sub;MonodisperseSubstance"/>
		<rdfs:subClassOf>
			<owl:Restriction>
				<owl:onProperty rdf:resource="&idmp-sub;hasSubstanceType"/>
				<owl:hasValue rdf:resource="&idmp-sub;SubstanceTypeClassifier-Chemical"/>
			</owl:Restriction>
		</rdfs:subClassOf>
		<rdfs:subClassOf>
			<owl:Restriction>
				<owl:onProperty rdf:resource="&cmns-col;hasConstituent"/>
				<owl:onClass rdf:resource="&idmp-sub;Moiety"/>
				<owl:minQualifiedCardinality rdf:datatype="&xsd;nonNegativeInteger">0</owl:minQualifiedCardinality>
			</owl:Restriction>
		</rdfs:subClassOf>
		<rdfs:subClassOf>
			<owl:Restriction>
				<owl:onProperty rdf:resource="&idmp-sub;isStoichiometric"/>
				<owl:onDataRange rdf:resource="&xsd;boolean"/>
				<owl:qualifiedCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:qualifiedCardinality>
			</owl:Restriction>
		</rdfs:subClassOf>
		<rdfs:subClassOf>
			<owl:Restriction>
				<owl:onProperty rdf:resource="&idmp-sub;hasDefiningStructure"/>
				<owl:someValuesFrom rdf:resource="&idmp-sub;MolecularStructure"/>
			</owl:Restriction>
		</rdfs:subClassOf>
		<rdfs:label>chemical substance</rdfs:label>
		<owl:disjointWith rdf:resource="&idmp-sub;NucleicAcidSubstance"/>
		<owl:disjointWith rdf:resource="&idmp-sub;PolymerSubstance"/>
		<owl:disjointWith rdf:resource="&idmp-sub;ProteinSubstance"/>
		<owl:disjointWith rdf:resource="&idmp-sub;StructurallyDiverseSubstance"/>
		<skos:definition>single substance that can be described as a stoichiometric or non-stoichiometric single molecular entity and is not a protein, nucleic acid or polymer substance</skos:definition>
		<skos:note>Chemical substances are generally considered 'small' molecules which have associated salts, solvates or ions and may be described using a single definitive or representative structure.</skos:note>
		<cmns-av:directSource>ISO 11238:2018 Health informatics - Identification of medicinal products (IDMP) - Data elements and structures for the unique identification and exchange of regulated information on substances, clauses 3.11 and 7.3</cmns-av:directSource>
		<cmns-av:synonym>simple chemical</cmns-av:synonym>
		<cmns-av:synonym>simple chemical substance</cmns-av:synonym>
	</owl:Class>

Use of Multiple Inheritance in IDMP-O

Multiple-inheritance is a feature of some ontology languages, including the Web Ontology Language (OWL), that allows a class to have two or more super-classes that may be siblings or otherwise not in a parent/child (subclass/super-class) are not in a relationship themselves. For example, in Figure 2, below, one can see that an , "active ingredient" is-a "ingredient" and is-a "substance role" but there is no direct subclass relationship between "ingredient" and "substance role".

Figure 2. Role class hierarchy in the ISO 11238 Regulated Information on Substances ontology

Sibling classes in IDMP-O may be, but are not necessarily, disjoint

Related to the multiple-inheritance pattern is the question of disjointness of sibling classes. Unlike the Unified Modeling Language (UML), in OWL siblings are not disjoint by default, and disjointness needs to be explicitly stated. Consider, for example, the subclasses of "material role", shown in Figure 3.

 

Figure 3. Material role class hierarchy in the ISO 11238 Regulated Information on Substances ontology

Some of them, such as "starting material role" and "resultant material role" are disjoint, but "source material role" and "starting material role" may not be disjoint, and "processing material role" and "source material role" may not be disjoint. 

In the ontology, such disjointness relationships can be asserted as follows:

Starting and Resultant Material Role Definitions
	<owl:Class rdf:about="&idmp-sub;ResultantMaterialRole">
		<rdfs:subClassOf rdf:resource="&idmp-sub;MaterialRole"/>
		<rdfs:label>resultant material role</rdfs:label>
		<skos:definition>role of material that is the result of a manufacturing process</skos:definition>
		<skos:note>Resultant material may be the starting material of the next process step or the final material or actual specified substance.</skos:note>
		<cmns-av:adaptedFrom>ISO 11238:2018 Health informatics - Identification of medicinal products (IDMP) - Data elements and structures for the unique identification and exchange of regulated information on substances, clause 3.70 and clause 8.5.5, Figure 30</cmns-av:adaptedFrom>
		<cmns-av:adaptedFrom>ISO/TS 19844:2018(E) Health informatics - Identification of medicinal products (IDMP) - Implementation guidelines for ISO 11238 for data elements and structures for the unique identification and exchange of regulated information on substances, clause G.3.13</cmns-av:adaptedFrom>
	</owl:Class>

	<owl:Class rdf:about="&idmp-sub;StartingMaterialRole">
		<rdfs:subClassOf rdf:resource="&idmp-sub;MaterialRole"/>
		<owl:disjointWith rdf:resource="&idmp-sub;ResultantMaterialRole"/>
		<rdfs:label>starting material role</rdfs:label>
		<skos:definition>role of material from which the manufacturing process of the substance starts</skos:definition>
		<cmns-av:adaptedFrom>ISO 11238:2018 Health informatics - Identification of medicinal products (IDMP) - Data elements and structures for the unique identification and exchange of regulated information on substances, clause 8.5.5, Figure 30</cmns-av:adaptedFrom>
		<cmns-av:adaptedFrom>ISO/TS 19844:2018(E) Health informatics - Identification of medicinal products (IDMP) - Implementation guidelines for ISO 11238 for data elements and structures for the unique identification and exchange of regulated information on substances, clause G.3.16</cmns-av:adaptedFrom>
		<cmns-av:explanatoryNote>This material is a building block which will be (partially) incorporated in the structure of the resultant product.</cmns-av:explanatoryNote>
	</owl:Class>