OWL supports the sharing and reuse of ontologies by making it possible for one ontology to import another
ontology. When an ontology imports another ontology, all of the class, property and individual definitions
that are in the imported ontology are available for use in the importing ontology. This guide describes how
the owl:imports mechanism works and how Protégé-OWL resolves the location of an ontology given
The owl:imports mechanism
Ontologies are identified and referenced using URIs. For example, the URI of the CO-ODE pizza ontology
, and the URI of the Dublin
Core ontology is
. An ontology URI may be thought of as being a
name for a specific ontology.
When an ontology imports another ontology, the URI of the ontology being imported is added to the list of
"import statements" in the importing ontology. For example, the figure below shows that the
(the Dublin Core ontology).
will contain the statement,
Where should ontologies be imported from?
OWL imports statements take the form of
where XXX is a URI. Such URIs frequently resemble Web addresses (http://...). For example, the URI of the
Dublin Core ontology is
, which is a URL (all valid URLs are
also URIs). It is therefore easy to see that one strategy for importing ontologies is to simply attempt to
resolve the URIs used in imports statements and download the document that the URL points to in the hope that
this document contains an ontology. However, it is important to realize that even if an ontology URI appears
to be a URL, it is not necessarily resolvable. In other words, it may or may not be the case that if an ontology
URI is typed into a Web browser, a document containing the ontology will be displayed.
Despite the fact that there is no formal convention for determining the location of an ontology given its URI,
it is generally recommended that ontologies are made available on the Web at a location that corresponds to
their URI. So for example, the Dublin Core ontology can be found at
, or the pizza ontology can be found at
In the case where an ontology URI isn't a URL and therefore doesn't point to a Web location, it is necessary
for there to be a mechanism, which given an ontology URI, can point to an alternative location (perhaps a local
location) where the ontology can be obtained from. In addition, when editing an ontology that imports other
ontologies, a general pattern of work is to maintain local copies of these ontologies, so that imports are
redirected to locations in the local file system at edit time, and then to "publish" these local
copies to their respective locations on the Web by uploading them to some Web server. Finally, if network
connectivity is problematic, local copies of imported ontologies must be used since these imported ontologies
can't simply be downloaded from the Web.
In order to deal with these requirements, Protégé-OWL uses a mechanism based on the notion of
"ontology repositories" to determine where an ontology should be loaded from. An ontology repsitory
can be regarded as "place" where ontologies can be obtained from. Given an ontology URI, a repository
can be checked to see whether or not it contains the ontology that is identified by the URI. If the repository
does contain the required ontology, then it acts as a gateway for loading and possibly saving the ontology.
Protégé-OWL maintains a list of such repositories and searches them when attempting to import
The Ontology Repository Manager
The management, creation and deletion of ontology repositories is done via the ontology repository manager,
which is accessible from the "Ontology repositories..." item on the OWL menu. The Figure below shows
an example of the ontology repository manager dialog.
Protégé-OWL supports the notion of global and project repositories. Global repositories are by
default available to every new project and are typically useful for managing commonly used ontologies, such as
upper ontologies, that will be imported into most projects. Project repositories are associated with a specific
Protégé-OWL project, and must be created/specified for that project. It is important to note that
project repositories take precendece over global repositories. In other words, if an ontology is contained in both
a project repository and a global repository it will be loaded via the project repository. The order in which
repositories are searched is discussed later.
The screen shot below shows an example repository. For each available repository, the type/description of the
repository is listed along with the ontologies that the repository contains. For each ontology in the repository,
the URI is shown, with a description of the location (in slightly smaller grey text) below. For example, the
repository shown below is a local folder repository that provides access to several ontologies. In particular,
can be loaded via this repository from the
. In other words, if an ontology is opened in
Protégé-OWL that imports the ontology
, then this
ontology will be loaded from
The order of ontology repositories can be changed by clicking the buttons on the right hand side of the
repository. A repository may be removed by clicking the remove button ('-'). Note that removing a repository
does not delete the files/ontologies in the repository, since a repository merely acts as a view/retrival
Types of Ontology Repositories
At the time of this writing, Protégé-OWL supports the creation of four different types of
- Local folder repositories - A local folder repository points to a
folder on the local file system. This folder is searched for files containing OWL ontologies (.owl files).
The URIs of any OWL ontologies that reside in files in the folder are extracted, and the ontologies identified
by these URIs become available to Protégé-OWL for importing.
- Relative folder repositories - Relative folder repositories are special
types of folder repositories that are specified using a path that is relative to the project OWL file. For
example, a path of
./imports/ specifies a folder called "imports", which is located in
the same folder as the project OWL file. Relative folder repositories aren't system dependent, which means
that they can be transferred with reasonable ease between different machines.
- Local file repositories - Local file repositories contain just one
ontology, which resides in a specific file. This type of repository is useful for specifying a particular
version of an ontology should be used over a different version.
- HTTP repositories - HTTP repositories are similar to local file
repositories but instead of pointing to a file in the local file system, they point to a remote file that
is accessible via an HTTP server.
Repositories are created through the ontology repository manager. In order to create a repository:
- Display the repository manager dialog by selecting "Ontology repositories..." from the OWL Menu.
- Select either the project repository or global repository tab. For ontologies such as upper ontologies
that will typically be used over and over again, a global repository should probably be used. Project
repositories should be used for ontologies that are imported on a per project basis and are specific to a
particular project. It should be noted that relative folder repositories can only be created as project
repositories, since the folder is specified relative to the project OWL File.
- Click the "Add repository" button ('+') in the top right hand corner of the selected
repository tab. This will invoke the "Add Repository Wizard" shown below.
- Choose the type of repository that is required and follow the steps displayed by the wizard that are
necessary to create the repository.
The list of repositories is saved when the project is saved.
As can be seen from the screenshots above, it is possible to specify multiple ontology repositories. When there
are multiple repositories, the ordering of ontology repositories is significant. Protégé-OWL searches
project repositories before it searches global repositories, and then repositories are searched in the order
that they are listed in the repository manager (i.e. top to bottom).
If a required ontology can be accessed via more than one repository, Protégé-OWL will simply load
the ontology from the first repository containing the ontology. If Protégé-OWL does not find the
ontology in a repository, it will then attempt to resolve the ontology URI and obtain a corresponding URL that
hopefully points to a document on the Web that contains the ontology. Finally, if the ontology still cannot be
found, Protégé-OWL will display a dialog that prompts for an ontology repository that contains the
ontology to be specified.
In summary, when attempting to obtain a copy of an imported ontology, Protégé-OWL proceeds as
- Search any project repositories from top to bottom. If the ontology is found, load the ontology from
the repository that the ontology is contained in.
- Search any global repositories from top to botton. If the ontology is found, load the ontology from the
repository that the ontology is contained in.
- Attempt to resolve the ontology URI and import the ontology from the location pointed to by the
- If loading the ontology from the resolved URI fails, a dialog is poped up asking the user to
specify a repository where the imported ontology may be loaded from. (Note that a dialog is not shown
automatically when using the Protégé-OWL API).
- Download the examples ZIP file and unzip it to a location of your choice.
There should be an
examples folder which contains
pizza.owl and a folder called
PizzaV2, which contains another file
- Launch Protégé and press the "Create new project" button on the
- In the new project wizard, select the "Create from existing sources" check box and
- Specify the
Example.owl file that is contained in the
examples folder and
- Protégé-OWL will load the ontology that is contained in the
Example.owl file. After loading notice that the ontology contains classes from
the pizza ontology.
- Switch to the "Metadata Tab". The imports panel on the metadata tab should look similar
to the picture below. Notice that the ontology imports the pizza ontology, which has an ontology
- In order to determine where Protégé-OWL has imported the pizza
ontology from, open the ontology repository manager dialog by selecting the "Ontology repositories..."
item from the OWL menu, and ensure that the project repositories tab is selected. The repository manager
should appear similar to the picture shown below. Notice how the ontology URI
http://www.co-ode.org/ontologies/pizza/2005/05/16/pizza.owl is highlighted in blue.
This indicates that this particular ontology has been imported. The slightly smaller grey URL directly below
this highlighted URI shows the location description of where the ontology was imported from - in this case
the ontology was imported from the URL
which corresponds to the ontology URI of the pizza ontology.
In certain situations, for example, if an internet connection is not available, it may be preferable to to
import a local "cached" copy of an ontology. To do this, a type of local repository must be specified.
Local repositories can either be Local Folder repositories, Local File repositories, or Relative Folder
repositories. In this example a Local File repository will be used to redirect the system to a local copy of
the pizza ontology. For the purposes of this example, any connection to the internet should be disabled so that
the pizza ontology cannot be imported from the Web.
- Restart Protégé and recreate the example project from the
- Since the ontology described in the example.owl file imports the pizza ontology, and no
repositories have been specified, Protégé-OWL will attempt to resolve the ontology URI and
download a copy of the ontology from the Web. However, this strategy will fail since an internet connection
is not available. Protégé-OWL will display the error dialog shown below.
- Select "Add Repository" in order to specify a local repository where the system can find
the pizza ontology. The "Add Repository" wizard will be displayed.
- On the first page of the wizard, select "Local file" as the type of repository to be created
and press "Next".
- The wizard will display a page that enables a local file path to be entered as shown below. Use the
browse button to point to the
pizza.owl file in the
examples folder. After
specifying the local
examples/pizza.owl file click the "Finish" button.
- Protégé-OWL will continue loading and will import the local copy of the pizza ontology
in place of the Web version. Open the repository manager by selecting "Ontology repositories..."
from the OWL menu. The Project repositories tab should look like the picture below. Notice that the type
of repository is a local file repository that contains the ontology
http://www.co-ode.org/ontologies/pizza/2005/05/16/pizza.owl and that this ontology is actually
loaded from a local file identified by the location description beneath the ontology URI.
- Close the repository manager dialog. The system will ask if it can reload the project automatically -
click OK. After any change in the order of repositories the system needs to reload the current project.
This is to ensure that the correct ontology is imported.
Protégé-OWL stores repository information in plain text files, with one line per repository.
The global repository is saved in a file called
which resides in the
Protégé-OWL plugin folder. Project repositories are saved in a file that has the same location
and name as the project OWL file but with an extension of
. For example, if the OWL file
was saved as
then the project repository file would be saved
Project repository files can be move from one Protégé installation to another simply by placing the
project .repository file in the same folder as the project .owl file in the new installation. It is recommended
that if project repository files will be shared then relative folder repositories should be used in preference
to other types of repository. A recommended strategy is to place an appropriately named folder
(imports for example) in the same folder as the project .owl file, put all local import files in this folder and
then specify a relative folder repository that points to this folder.