Suppose we want to develop a system that helps manage the costs and organization of a newspaper. The "examples/newspaper" subfolder of the Protege installation directory contains a completed Protege-Frames project,
newspaper, which provides one possible ontology for this domain. Some of the questions we want to answer are:
- Who is responsible for each section of the newspaper?
- What is the content of each article in a section, and who is its author?
- Who does each author report to?
- What is the layout and cost of each section?
Once we have an idea of what we want to cover, we can list some of the important terms we need. These can include basic concepts, properties they might have, or relationships between them. To begin with we can just collect the terms without regard to the role they might play in the ontology.
In the newspaper example we have
sections. Each section contains
content such as
articles and
advertisements and has a
editor who is
responsible for the section. Each article has an
author, and that author may or may not be an
employee. For each employee, we want to know his or her
name and
salary, and who he or she
reports to.
As we continue to generate terms, we are implicitly defining the scope of our ontology, by what we finally decide to include and what to exclude. For example, upon initial examination of the term
employee, we might want to add
janitor or
delivery truck driver. However, on reflection, we might realize that we want our ontology to focus on the costs directly associated with the content generation and presentation of the newspaper. Therefore, we would decide not to include
janitor as a term of interest.
When we have a fairly complete list, we can start to categorize the different terms according to their function in the ontology. Concepts that are objects, such as
article or
author, are likely to be best represented by
classes. Properties of the classes, such as
content or
salary, can be represented by
slots, and restrictions on properties or relationships between classes and or slots, are represented by
slot facets.
We will now dive in and show how to use the Protege-Frames interface to create and structure these components of the ontology.