298 12 Building Bioinformatics Ontologies
There are a number of ways to help distinguish subclass relationships
from other hierarchical relationships. When a concept A is a subclass of
concept B, then the statement “Every instance of A is also an instance of
B” should be valid. To test whether two concepts are related by subclass,
try this statement in each direction to see if one of them is valid. Applying
this criterion to the chart and event concepts gives the statements “Every
chart is also an event” and “Every event is also a chart,” neither of which
is valid. So neither the chart concept nor the event concept is a subclass
of the other. Similarly, applying this criterion to events and tests gives the
statements “Every event is also a test” and “Every test is also an event.”
The first of these statements is not valid, as there are other kinds of event
than just tests, but the second statement is valid, soTestis a subclass of
Event.
Subclasses have an important feature calledinheritance.An instance of a
subclass automatically inherits every characteristic of the superclass. Ex-
ceptions are never allowed. For example, one definition of a eukaryotic
cell is a cell with at least one nucleus. However, if one specifies that ery-
throcytes (red blood cells) are a subclass of eukaryotic cells, then one has
a problem because normal mature erythrocytes do not have nuclei. Gen-
erally speaking, if one wishes to allow a particular subclass to have some
exception, then it is best not to use a subclass relationship in this case. Al-
ternatives to the subclass relationship are discussed in subsection 12.7.1.
Other sentences that help distinguish subclass relationships are “A is a
kind of B,” “A is a subset of B,” or “A is a B.” One must be careful with the
last of these, as the same statement is often used to specify that a particular
instance belongs to a class.
Here is how the concept hierarchy for the medical chart ontology would
be defined using RDF:
<rdfs:Class rdf:ID="Chart"/>
<rdfs:Class rdf:ID="Patient"/>
<rdfs:Class rdf:ID="Event"/>
<rdfs:Class rdf:ID="Admission">
<rdfs:subClassOf rdf:resource="#Event"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Test">
<rdfs:subClassOf rdf:resource="#Event"/>
</rdfs:Class>