Table of Contents
is the FMA and what does FMA stand for?
The FMA stands for Foundational Model of Anatomy ontology. The FMA is a reference ontology for the domain of anatomy. It is a
symbolic representation of the phenotypic structure of the human body. Over
75,000 anatomical classes ranging from macroscopic to molecular level are
organized in an Aristotelian-type class subsumption
hierarchy, using the Protege frame-based knowledge
acquisition tool. The ontology is made available by various servers that are
part of the Digital Anatomist Information System. The symbolic modeling of
the structure of the human body is in a form that is understandable to humans
and is also navigable and interpretable by machine-based systems. The Foundational Model of
Anatomy ontology is one of the information resources integrated in the
distributed framework of the Anatomy Information System developed and
maintained by the Structural Informatics Group at the University
2) What domain might
the FMA be used for?
Anatomy provides the foundation for the other biomedical sciences or
information domains. For this reason, anatomy is the first subject taught in
health related educational and training programs. Manifestations of health
and disease can be thought of as properties (i.e., attributes) of anatomical
structures ranging in size from biological macromolecules to cells, tissues,
organs, organ systems and body parts. Therefore, anatomy is fundamental to
all biomedical sciences, and the classes represented in the FMA generalize to
essentially all biomedical domains. In other words, it is not possible to
represent or describe the content domains of other, non-anatomical,
biomedical disciplines without explicitly or implicitly referring to
anatomical entities. For example, the circulation must take for granted the
existence of the heart and blood vessels, and the same is true for gastritis
and the stomach as well as for dementia and the brain. This means that
anatomy is foundational to non-anatomical biomedical disciplines because they
reuse anatomical classes.
3) How large is the
The FMA consists of 75,000 anatomical classes, 130,000 unique terms, over
205,000 frames, and 174 unique slots in use representing different types of
relations, attributes and attributed relationships. There are over 44,000
English synonyms, of a class's preferred name, as well as more than 15,000
non-English equivalents. The relationship network of the FMA contains more
than 2.5 million relationship occurences. Over
1,000,000 of these occur on classes, about 450,000 of which relate classes
directly to other classes.
4) How many person
hours has gone into creating the FMA?
The FMA has been under development since 1995. The total number of
person-years spent on the development of the FMA is roughly 30. This does not
include time spent engineering software for maintenance and the development
of automated FMA authoring tools.
5) Are only english terms found in the FMA?
The FMA contains 8,500 Latin, 4,700 French, 500 Spanish, 350 German
6) What is the granularity
scope of the FMA?
The largest class represented in the FMA is the human body and the smallest
anatomical class is biological molecule, which consists of two or more atoms
held together by a covalent bond. The FMA represents anatomical entities from
a very fine granularity such as the biological molecules to cells, tissues,
organs, organ systems, major body parts, up to the entire body. It improves
upon the currently available computable anatomical resources in both detail
and scope of represented knowledge. The FMA contains anatomical classes and
relationships necessary to model the structure of the entire human body.
7) What formats is
the FMA available in?
The FMA is currently only available as a MySQL
relational database. It is too large for most flat-file formats, as these
generally require loading the entire knowledge base at once. There are
ongoing efforts by our collaborators in exporting the FMA into OWL. The
following give information on their current work:
Noy NF and Rubin DL. Translating the Foundational Model of Anatomy into OWL. Journal of Web Semantics, December 2007. More details in the technical report at http://bmir.stanford.edu/publications/view.php/translating_the_foundational_model of anatomy_into owl
The OWL version is accessible here: http://www.bioontology.org/wiki/index.php/FMAInOwl
Golbreich C, Zhang S, Bodenreider O. (2006) The foundational model of anatomy in OWL: Experience and perspectives. Journal of Web Semantics, Web Semantics: Science, Services and Agents on the World Wide Web, Volume 4, Issue 3, Pages 181-195. A version of the OWL file can be viewed here.
Dameron O, Rubin DL, Musen M. (2005). Challenges in converting frame-based ontology into OWL: the Foundational Model of Anatomy case-study. In Proceedings, American Medical Informatics Association Fall Symposium, 181-185, Washington DC .
In an ontology alignment challenge sponsored by OAEI , under the direction of
Heiner Stuckenschmidt (University of Mannheim), the FMA was initially translated into OWL prior to its mapping with the anatomy part of GALEN. You can download the OWL-full translation of the FMA from this site.
8) Is there a way to
associate images with Anatomical classes?
This functionality is under development. The ImageManager
Repository is a database system, developed by the University
of Washington Structural Informatics
Group, for managing collections of annotated images. Using a locally
developed plugin called the "Preferred-Image
Tab" an author or user may associate an image with an anatomical class.
While this plugin has not yet been made available
to our users, we are in the process of developing a web-service that would
allow users/applications to retrieve the preferred image,
that we have associated, given an anatomical term or FMA identifier.
9) What has been
developed for querying the FMA?
There are several available ways of querying the FMA. One of these, Emily Lite, is a query interface that enables FMA users to
pose questions about the relationships between FMA classes. Another FMA
querying tool, OQAFMA
takes, as input, StruQL queries and returns XML-formatted results. The
interface allows question to submitted in
natural-language form. Both Emily and Gapp
transform user queries into StruQL queries which
are then processed by the OQAFMA query engine.
[Table Of Contents]
are Right Lung and Left Lung subclasses of Lung?
Right lung and left lung are subclasses of lung because the authors of the Foundational
Model of Anatomy ontology wanted the class lung to exist without the
consideration of laterality. Because lung is an abstraction of both right and
left lung queries run on the abstracted class lung will return results
pertaining to what both lungs have in common. In this model narrowing or
abstracting queries is possible. Creating abstractions of terms also helps
the authors organize and model information.
2) Why do the FMA
authors use single inheritance?
The authors believe that single inheritance assures the true essence of a
class on a given context.
3) Why have the
authors created the class non-physical anatomical entity?
The FMA authors created the class Non-physical anatomical entity in order to
incorporate anatomical classes that do not have physical dimension such as
anatomical relationships and organizational patterns.
4) What does a merged
hierarchy mean and why use one?
A merged hierarchy in a Protege ontology means that
a class has two or more direct-superclasses. A
class may have multiple direct-superclasses however
every class must have at least one. The FMA uses single inheritence
except in one special case where the META-CLASS hierarchy merges with the
THING hierarchy (also termed class hierachy). The
results of this merge aids the FMA authors in being very efficient when
defining classes, and facilitates fast FMA database queries. To better
explain why the authors chose to create this merge I will discuss two
In the first scenario every class that is subsumed by THING can only be a regular class. Every class subsumed by META-CLASS can
only be a metaclass (also known as a direct-type).
Every regular class must have a metaclass to define
the types of own slots it will have. The problem with this scenario is that
class information needs to be duplicated to have both metaclasses
which define regular classes and the anatomical classes which contain the
actual slot values.
figure 1. ( Red
- metaclass relationship, Blue - direct-superclass
relationship) - In the above figure, class A and class A prime contain the
same information however one class is in the STANDARD-CLASS hierarchy and the
other class is in the META-CLASS hierarchy.
In the second scenario there is no need to duplicate class information.
The rules still apply as in the first scenario to classes subsumed by THING
and META-CLASS but the structure of model has changed. In this scenario the
THING and META-CLASS hierarchies merge into a single hierarchy and all
classes subsumed by CLASS A now contain both the properties of a regular
class and a metaclass.
figure 2. ( Red
- metaclass relationship, Blue - direct-superclass
relationship) - in the above figure, class A is
equal to both class A and class A prime in figure 1.
The FMA authors chose to implement the second protege
modeling scenario because it saved them from having to create twice the
number of classes needed.
[Table Of Contents]
Protege API questions...
is a Slot and what are the different types of slots?
In Protege a slot represents either a relationship
between one frame, such as a class or an instance, and another frame, or it
contains values of a primitive type, such as strings or boolean
values, and represents an attribute of the frame. Together the slot
attributes and slot relationships of a class or instance collectively define
the frame. Every slot is given a name that identifies the relationship that
it represents. In Protege slots are attached to
frames in two distinct ways, as own slots and as template slots. Own slots
and their values describe the relationships and attributes that pertain to
the frame on which they are attached. Template slots, on the other hand,
represent the attributes/relationships (and possibly values) that will be
propagated to all of their instance frames. Only
frames that represent classes have template slots.
3. This is a snapshot of a subset of slots attached to the class Heart (from
the classes-tab) in Protege.
2)What is the difference between a metaclass and a class?
Every class must have a direct-type, which is called its metaclass.
The direct-type of a class defines what own slots a class will have. Any class within a Protege ontology
may be assigned as a direct-type for any other class even itself. Once a
class is created by default its direct-type is its superclass.
3) What is the
difference between a SimpleInstance and an
In Protege, all frames are instances of some class.
This class is, inversely, the direct type of the instance. If a frame is an
instance of a metaclass, then it is also a class.
If it is an instance of a regular class, then it is a simple instances. An instance can only have one direct type.
Through the API, it is easy to determine if an instance is a "simple
Instance" by using the instanceof operator. The
term “instance” used here should not be confused with the
instance of the real world which is an individual like John Smith, or the
liver of John Smith.
[Table Of Contents]
automated error detection test are run on the FMA?
Every week a battery of automated error detection tests are performed on the
FMA. Additionally, the FMA authors perform frequent manual content reviews.
The detected errors are fixed automatically, where possible, or manually,
when such corrections require expert domain knowledge. Some of the automated
tests were originally suggested in Law and
Order: Assessing and enforcing compliance with ontological modeling
principles paper written by Songmao
Zhang and Olivier Bodenreider.
from the National Library of Medicine. New tests are
added regularly s we learn of new ontological error types. Some tests also
check for various sorts of data corruption.
[Table Of Contents]
correct driver is not installed.
The most common installation hang-up is that the correct mysql
driver is not present in Protege’s root directory.
To fix this error simply add this driver to Protege’s
root directory, that will typically be something like the following 'C:\Program Files\Protege_3.0'. This problem may also occur
if the mysql driver is not named 'driver.jar'. If there is no 'driver.jar'
in your root directory please download it from the following: mysql driver download.
4. No driver found error.
2) The "full
installation" option was chosen when installing Protege.
Another installation problem sometimes results from a "full
install" of Protege. Although this problem
does not seem to manifest itself currently, in the past the "full
installation" option has lead to errors when opening the FMA project.
These errors are presumably the result of some plugin
conflict and can be avoided by choosing Protege's
"basic install" option. Feel free to try the full installation but
be aware that this could be a source of project load failures.
5. Protege installer.
3) The PPRJ file is
not configured correctly.
Your pprj file should contain the three fields,
URL, username, and password. Each of these fields must be re-entered to
reflect the personal settings of the pprj file
owner. The URL field must contain 'localhost' when
connecting to a database on a local machine on Windows, Linux, or Unix. The
database table name FMA will already be filled and should not be changed. The
username must have had privileges granted to it before issuing the populate
database command or opening the FMA using a pprj
file. If no other password has been set the root mysql
user name and password will already have privileges and password set.
6. Snippet of a PPRJ file.
4) MySQL is out of date.
Make sure that you are using the latest MySQL
version, either MySQL 4.1 or later. One problem the arises frequently is that old MySQL
version cannot understand the latest MySQL syntax.
The following is an example of a command in the latest MySQL
version that is added to the create table statements but causes an error when
using an old MySQL version. To fix this problem
manually remove every line 'ENGINE=MyISAM DEFAULT
CHARSET = latin1'. Another possible solution is to upgrade to a newer MySQL version.
7. MySQL is out of date.
5) MySQL is not configured correctly.
Occasionally MySQL is not set to automatically run
during the operating system startup. If MySQL is
not running before Protege or MySQL
commands are issued an error will result. An "unable to connect"
error message will follow. To fix this error make sure that MySQL is running in the background before trying to use MySQL or Protege. If you have
installed MySQL as a service you may set the
services that automatically start during startup on windows by 1) going to
the control panel, 2) clicking on 'Administrative Tools', 3) clicking on
'services' 4) clicking on 'MySQL' from the list of
services 5) Selecting the General tab, 6) Selecting Automatic under the
'Startup type' label. To install MySQL as a windows
service download the latest MySQL from their
download site. When installing MySQL our
recommendation is to choose the typical setup, then click the checkbox on the
last step that has the label 'configure the MySQL
Server now'. If you have not set up MySQL as a
service you will have to start MySQL manually.
8. MySQL is not configured correctly.
6) MySQL semicolon syntax error.
There have been problems with the MySQL command for
populating the database containing a semicolon at the end of the statement.
Depending on what editor or console you are using this may or may not be an
issue. The confusing thing about this error is that the response indicates
that the error is caused by and incorrect username or password. In fact, the
real problem is the semicolon at the end of the statement.
figure 9. MySQL semicolon
7) MySQL populate database command
When writing a MySQL dump command you should not
first log into MySQL to issue the command. This
command should not be issued within MySQL but from
the console. When writing this command we suggest that you use -p, which is
short hand for --password, without entering your password. A prompt will ask
you for your password if the command was issued correctly before the MySQL database is populated with the FMA. Sometimes this
command does not work and the password must be entered along with the entire
command 'mysql -u your_user_name
-p your_password database_name'.
10. MySQL populate database command syntax error.
[Table Of Contents]