This FAQ addresses general questions about the
Protégé project and questions specific to the
Protégé-Frames editor. Please refer to the "see also" section
at the left of this page for a list of other FAQ pages.
General
01.01 - What is Protégé?
01.02 - Is there a tutorial for Protégé?
01.03 - How is Protégé different from other knowledge-based editing tools?
01.04 - How do I know when there's a new release of Protégé? How do I find the latest version number on your Web site?
01.05 - How do I submit a bug report for Protégé?
01.06 - Is Protégé available in other languages?
01.07 - I'd like to give you money to help fund Protégé. What do I do?
01.08 - Are Problem-Solving Methods (PSMs) included in Protégé releases?
01.09 - Can I print the Protégé User's Guide?
01.10 - I downloaded Protégé and now I want to look at the source code. Where is it?
01.11 - How big can Protégé ontologies or knowledge bases be?
Mailing Lists
01a.01 - Where can I get general information about the Protégé mailing lists?
01a.02 - How do I subscribe to the Protégé mailing lists?
01a.03 - How do I unsubscribe from the Protégé mailing lists?
01a.04 - How do I edit my subscription options for the Protégé mailing lists?
01a.05 - Can I post to the mailing lists from multiple email addresses?
01a.06 - Why are my messages to protege-discussion and/or protege-owl being rejected?
Installation & Platform Specific
02.01 - The installer quit before the installation process completed. Or, I installed Protégé
but it won't launch.
02.02 - What platforms does Protégé run on?
02.03 - How do I run Protégé from the command line?
02.04 - Can I use Protégé with the Microsoft Java Virtual Machine?
02.05 - Can I access a Protégé knowledge base from the Web?
02.06 - Can I run Protégé as an applet?
02.07 - I installed a new tab widget plug-in but I don't see it in my project.
02.08 - Can Protégé run as an Eclipse plug-in?
User Interface
03.01 - How do I change instance names from the ugly system-generated ones to the ones I want?
03.02 - What is the Queries tab for? Is there any documentation available?
03.03 - Is there a way to change and preserve the order of columns in an instance table?
03.04 - How do I access the graph widget? How do I use it?
03.05 - How do I export my knowledge base in HMTL format?
Modeling & Knowledge Representation
04.01 - What are "frames" and "slots"? Where did this stuff come from?
04.02 - Is there documentation specifically for the Protégé frame system ("knowledge model")?
04.03 - What's the difference between a "template slot" and an "own slot"?
04.04 - What's the difference between a "template value" and a "default value" for a slot?
04.05 - What's a metaclass? How do I create a class that's an instance of my metaclass?
04.06 - I'm trying to create a slot for a class with the same name as a slot in another class, but I get a "Duplicate frame name" dialog.
04.07 - How do I add my own facets to a slot?
04.08 - Can I specify logical constraints in Protégé? Are these constraints enforced?
04.09 - How do I use Problem Solving Methods (PSMs) with Protégé ontologies?
04.10 - Does Protégé have support for synonyms?
04.11 - Does Protégé have OWL support?
04.12 - Does Protégé have DAML+OIL support?
Database & Storage Formats
05.01 - What databases does Protégé support?
05.02 - Does Protégé support multiple users working simultaneously?
05.03 - How do I store a Protégé project into a database (Microsoft Access, Oracle, MySQL, etc.)?
05.04 - I put my JDBC driver in the "plugins" directory but I still can't connect to the database.
05.05 - What formats does Protégé use to store data?
05.06 - Can I use CLIPS with Protégé?
05.07 - What happens when I import an RDF file with objects that aren't supported by Protégé (i.e. rdfs:seeAlso, rdfs:isDefinedBy, etc.)?
05.08 - Can I store my knowledge base in XML?
05.09 - Can I save just a part of my ontology?
05.10 - Can I reuse Ontolingua ontologies in Protégé?
05.11 - Why am I getting exceptions from MS SQL Server about cloned connections when I try to save my project in database format?
05.12 - I want to access my data from another application but I can't figure out your database schema. How can I get my data?
Plug-ins
06.01 - Where can I download plug-ins for Protégé?
06.02 - Can I contribute my plug-in to the Plug-ins library?
06.03 - Will you develop a plug-in for me? What if I pay?
06.04 - Protégé doesn't see my plug-in? Why not?
06.05 - How do I update my plug-in for new releases of Protégé?
06.06 - I installed a new JAR file for my plug-in but Protégé is still using an old version. How do I fix this?
06.07 - What's the purpose of the "initialize" method? Why can't I just set things up in the widget constructor?
06.08 - I was developing plug-ins, upgraded to a new version of Protégé, and now Protégé won't start at all. The message in the console window says the system can't find the unrecognized "SystemUtilities" class. What does this mean?
06.09 - Does the "plugins" directory have to be a subdirectory of the Protégé installation directory?
06.10 - Is it possible to add a new basic type such as "date" to Protégé?
06.11 - Does the XML Tab plug-in support XML Schemas?
Protégé API
07.01 - Do you have any source code documentation?
07.02 - Are there any design documents for Protégé?
07.03 - Can you access Protégé using a C++ API?
07.04 - Is there an easy way to get a list of all the instances within a project?
07.05 - How can I use the Protégé API to do queries?
07.06 - How do I create and save a new project programmatically?
07.07 - Is it possible to customize Forms programmatically?
Licensing
08.01 - How do I license Protégé?
08.02 - How much does Protégé cost?
08.03 - Can I use Protégé as part of a commercial product?
08.04 - I want to modify Protégé source code and use the result in my product. Is this possible?
08.05 - I want to develop a plug-in for my company's private use (i.e. I don't want to release it or its source code to the public). Is there a problem with this?
08.06 - Can I develop a plug-in and sell it?
08.07 - Can I sell my projects and ontologies that I developed using Protégé?
08.08 - I can't live with the terms of the open source license. What can I do?
Technical Support
09.01 - What sort of technical support is available?
09.02 - Can we purchase some sort of "priority" technical support?
09.03 - Can we hire you or anyone else to do Protégé related development?
09.04 - Can we collaborate to develop something?
09.05 - I really need a bug fixed (or feature developed) but no one's shown any signs of working on it. What can I do?
General
01.01 - What is Protégé?
Protégé is an extensible, platform-independent environment for creating and editing
ontologies and knowledge bases. In the
overview section of our Web site, you'll find
screenshots of various sections of the User Interface, a more detailed description of the functionality offered, and example
projects that run inside of a Web browser.
01.02 - Is there a tutorial for Protégé?
See the
documentation section of the Protégé Web site for
available documentation. Among other things, you'll find the Protégé User's Guide, a "getting started"
tutorial, and information on ontology development.
01.03 - How is Protégé different from other knowledge-based editing tools?
There are several features that distinguish Protégé from other knowledge base editing tools. To the best of our
knowledge, no other tool except Protégé has all of the following features:
- Intuitive and easy-to-use graphical user interface.
- Scalability: Protégé's database back-end loads frames only on demand and uses caching to free up memory
when needed. There is virtually no deterioration in performance as you go from several hundred frames to several thousand
frames. Our user community has so far created knowledge bases consisting of 150,000 frames.
- Extensible plug-in architecture: You can easily extend Protégé with plug-ins tailored for your domain and
task. Some ideas for plug-ins are:
- Small user-interface components that are particularly well suited to displaying and acquiring values in your domain.
Such components could be used on Protégé forms.
- Custom back-end plug-ins that use your own storage mechanisms.
- New applications intricately linked with a knowledge base as a Protégé tab.
01.04 - How do I know when there's a new release of Protégé? How do
I find the latest version number on your Web site?
Current Protégé releases are listed both on the lower right corner of our
home page and in the
downloads section of our Web site.
New releases are announced on the protege-users mailing list, and beta releases are announced on the protege-beta mailing
list.
01.05 - How do I submit a bug report for Protégé?
Bugs that are specific to the Protégé-OWL editor should be reported on the
protege-owl mailing list. All other bugs should be reported on the
protege-discussion mailing list. You can view the current
bug list and feature request list in
Bugzilla.
01.06 - Is Protégé available in other languages?
Protégé supports knowledge base entry in any language or character set but the tool itself is only offered
in English.
01.07 - I'd like to give you money to help fund Protégé. What do I do?
This isn't really a FAQ but we'd like it to be!
Send us a message and we'll put you in touch with the right people.
You may also refer to the
training and support section of our Web site for information on purchasing consulting
and/or becoming a Protégé affiliate.
01.08 - Are Problem-Solving Methods (PSMs) included in Protégé
releases?
Yes, PSMs are part of "full" installation of Protégé. The
"PSM Librarian" tab widget plug-in for Protégé offers ways of describing PSMs and working with such
descriptions. See the
PSM Librarian home page for documentation, sample PSM
libraries, and demo experiments.
01.09 - Can I print the Protégé User's Guide?
Yes. There are PDF versions of both the User's Guide and the Getting Started tutorial in the
documentation section of our Web site.
01.10 - I downloaded Protégé and now I want to look at the source code. Where is it?
Please see the section entitled
Accessing Protege source code on our developer
documentation Web page.
01.11 - How big can Protégé ontologies or knowledge bases be?
Please refer to the
Scalability and Tuning page
on our Wiki.
^ return to top
Mailing Lists
01a.01 - Where can I get general information about the Protégé mailing lists?
The
mailing list page in the Community section of our Web site gives textual
descriptions of the four Protégé mailing lists, has links to list information pages where you can subscribe to the
lists, and provides links to searchable archives.
01a.02 - How do I subscribe to the Protégé mailing lists?
You may use the following, simple procedure to subscribe to any of the four Protégé mailing lists:
- Go the the list information page for the list that you would like to join (links to list information pages:
protege-users,
protege-owl,
protege-discussion,
protege-beta,
p4-feedback).
- Scroll down to the section entitled "Subscribing to <listname>".
- Enter your email address (required).
- Enter your real name (optional).
-
Click the Subscribe button.
 |
Important: After you click the Subscribe button, you will receive an email
asking you to confirm that you really want to subscribe to the list. (This is a security measure
to prevent people from subscribing you without your permission). Follow the instructions in the
email to confirm that you would like to subscribe to the list.
Note: All of the Protégé mailing lists are managed with the
Mailman mailing list administration software.
The Mailman List Member Manual also provides instructions for
subscribing to Mailman-based lists.
|
01a.03 - How do I unsubscribe from the Protégé mailing lists?
You may use the following, simple procedure to unsubscribe from any of the four Protégé mailing lists:
- Go the the list information page for the list that you would like to leave (links to list information pages:
protege-users,
protege-owl,
protege-discussion,
protege-beta,
p4-feedback).
- Scroll down to the section entitled "Unsubscribe or edit options for <listname>".
- Enter your email address.
- Click the "Unsubscribe or edit options" button.
-
You will be brought to a new page with an Unsubscribe button, which you can press to unsubscribe.
 |
Important: After you click the Unsubscribe button, you will receive an email
asking you to confirm that you really want to unsubscribe from the list. (This is a security measure
to prevent people from unsubscribing you without your permission). Follow the instructions in the
email to confirm that you would like to unsubscribe from the list.
Note: All of the Protégé mailing lists are managed with the
Mailman mailing list administration software.
The Mailman List Member Manual also provides instructions for
leaving Mailman-based lists.
Another Note: If you are going on vacation, taking a leave of absence, or just too busy
to read mail from the list, you also have the option of temporarily disabling mail delivery. Please see the
next FAQ item (editing subscription options) for more information.
|
01a.04 - How do I edit my subscription options for the Protégé mailing lists?
One of the nice things about the
Mailman mailing list administration software that we use for the Protégé mailing lists
is the Web interface that allows users to manage their own subscription options. You can use the Web interface to
change the email address that you are subscribed to the lists with, configure digest options, temporarily disable mail
delivery, and much more. To edit your subscription options:
- Go the the list information page for the list that you would like to edit your options for (links to list information pages:
protege-users,
protege-owl,
protege-discussion,
protege-beta,
p4-feedback).
- Scroll down to the section entitled "Unsubscribe or edit options for <listname>".
- Enter your email address.
- Click the "Unsubscribe or edit options" button.
- On the next page, enter your password and click the "Log in" button. (If
you don't remember your password, click the "Remind" button at the bottom of the page to have your
password emailed to you).
Once you have successfully logged into your Member Options page, you will be able to view and configure all of your
subscription options.
01a.05 - Can I post to the mailing lists from multiple email addresses?
Yes, this is possible. Only people who are suscribed to our mailing lists are allowed to post to them. What this means is
that you must subscribe each of the addresses that you wish to post from separately. If you decide to do this, we
recommend that you turn off mail delivery for all but one of your email addresses in order to avoid receiving
duplicate messages from the lists. See the previous FAQ item (01a.04) for more information about how to edit your
subscription options. Turning off mail delivery is also
described in detail
in the Mailman List Members Manual.
01a.06 - Why are my messages to protege-discussion and/or protege-owl being rejected?
In order to post messages to either protege-discussion or protege-owl, you must first subscribe to the lists. The most
common reason that messages are rejected is that they are sent from email addresses that are not subscribed to the list.
If you are subscribed to the list and are still having trouble posting your messages, please send email to the list owners
(protege-discussion-owner at lists.stanford.edu, protege-owl-owner at lists.stanford.edu).
^ return to top
Installation & Platform Specific
02.01 - The installer quit before the installation process completed. Or, I installed
Protégé but it won't launch.
There are several possible reasons for this behavior:
- You ran out of disk-space during the installation process.
- You chose not to download a VM and Protégé can't find the
VM on your machine, or the VM on your machine is incompatible with either Protégé or the installer. We
suggest that you try the "Include a VM in download"" version of the installation to avoid these problems. Another
option is to try running Protégé from the command line. Look at the "run_protege.bat" file (located
in the root directory of your installation) for an example of how to launch Protégé and specify the location
of your VM. (This file is specific to the Windows operating system. See "run_protege.sh" or "run_protege.applescript" for the Unix
and Mac OS X operating systems).
- Protégé requires JDK version 1.4 or later to install and run.
02.02 - What platforms does Protégé run on?
Protégé runs on pretty much any platform that supports JDK version 1.4. This includes
all modern versions of MS Windows (NT/2000/XP), the common versions of Unix including Linux, Solaris, AIX, and HP-UX, and on
the Mac OS X.
02.03 - How do I run Protégé from the command line?
You can do this two ways using the Java application launcher:
- Navigate to the Protégé installation directory and type:
java -jar protege.jar
- If you launch Protégé from somewhere other than the installation directory, you must specify the Java property "protege.dir". For example, if you
installed Protégé in "C:\Program Files\Protege_3.1", you would type the following on the command line:
java -Dprotege.dir="C:\Program Files\Protege_3.1" -jar "C:\Program Files\Protege_3.1\protege.jar"
02.04 - Can I use Protégé with the Microsoft Java Virtual Machine?
No. Protégé requires a JDK 1.4 compatible virtual machine (Protégé 3.1 requires JDK 1.4 ,
Protégé 3.2 beta requires JDK 1.5). The last we are aware of, the MSJVM only supports JDK 1.1. Microsoft also plans to
terminate support
for the MSJVM on September 30, 2004.
02.05 - Can I access a Protégé knowledge base from the Web?
Protégé doesn't provide direct support for this, but it can easily be done. The
Protégé Web Browser
is an example of how to do this via Servlets.
02.06 - Can I run Protégé as an applet?
Yes, Protégé can be run as an applet. We provide examples of this in the
overview section of our Web site.
02.07 - I installed a new tab widget plug-in but I don't see it in my project.
Go to the Project | Configure... menu. On the "Tab Widgets" panel, check the box next to the
name of the tab widget plug-in you'd like to see in your project.
02.08 - Can Protégé run as an Eclipse plug-in?
Yes, the Mayo Clinic has done this. They have
instructions on their Web site about how
to embed Protégé within Eclipse.
^ return to top
User Interface
03.01 - How do I change instance names from the ugly system-generated ones to the ones I want?
For any class, you can select one of it's slots to be the "display slot".
Protégé will display the value of this slot any time it displays instances of the class. To set the
display slot for a particular class, navigate to the Forms tab and select the desired slot from the "Display
Slot" drop down list.
A few of our more advanced users have expressed the desire to change the instance's underlying system name in the knowledge
base. If this is what you really want to do, follow these steps:
- On the Classes tab, add the :NAME slot to the class.
- On the Forms tab, select the :NAME slot and choose InstanceNameWidget from the Selected Widget Type combo box.
Now, whenever you view instances of your class in Protégé, you can view and change the underlying system name
by modifying the value of the :NAME slot.
03.02 - What is the Queries tab for? Is there any documentation available?
The Queries tab is a plug-in included in the general release that can be used to build queries for a knowledge base. Unfortunately, it's
undocumented. The idea is that it works similarly to search screens in various e-mail applications. You look for all instances of a class where a particular slot has
(doesn't have, is equal to, etc.) a particular value. You can combine these statements to either "match all" or "match any" (essentially AND and OR). You can also
save a query and use it as an argument to your next query. The newspaper example comes with a few such queries.
03.03 - Is there a way to set the order of columns in an instance table?
The only solution available at the moment is to go to the configuration panel for the widget,
delete all the slots from the display, and add them back in the order desired.
03.04 - How do I access the graph widget? How do I use it?
The graph widget is included in both the "basic" and "full" installations of
Protégé. There's a
comprehensive tutorial available in the
documentation section of our Web site on how to configure and use this particular slot widget.
03.05 - How do I export my knowledge base in HMTL format?
Select the File | Export to Format | HTML menu item to launch the
"HTML Export Configuration Options" dialog box. Select the desired configuration options and click OK.
^ return to top
Modeling & Knowledge Representation
04.01 - What are "frames" and "slots"? Where did this stuff come from?
A good Web reference for frame-representation systems such as Protégé is
http://cognet.mit.edu/library/erefs/mitecs/nebel.html
04.02 - Is there documentation specifically for the Protégé frame
system ("knowledge model")?
Protégé is based on the
OKBC system. There is a
paper in the documentation
section of our Web site that discusses Protégé specific information in more detail.
04.03 - What's the difference between a "template slot" and an "own slot"?
Template slots for a class become own slots when instances of that class are created. For example:
Class "A" has a template slot "S"
Instance of class "A" has an own slot "S"
04.04 - What's the difference
between a "template value" and a "default value"
for a slot?
Templates values for slots are set
at the class level and can't be changed in subclasses and instances
of that class. (You can reset templates values at the class level).
Default values for slots are set at the class level for convenience
and can be changed in subclasses and instances of that class.
04.05 - What's a metaclass?
How do I create a class that's an instance of my metaclass?
A metaclass is a template, or a class
whose instances are themselves classes. To create an instance
of your metaclass, go to the Class Hierarchy pane on the Classes
tab and right click on the desired class. Select the right mouse
menu item "Create Subclass Using Metaclass...". The
"Select Concrete Cls" dialog appears from which you
can choose the name of the metaclass that you'd like to create
an instance of.
04.06 - I'm trying to
create a slot for a class with the same name as a slot in another
class, but I get a "Duplicate frame name" dialog.
In Protégé, slots
are "first-class objects", which means you create global
slot frames and attach them to different classes. This behavior
isn't immediately obvious since you can create a global slot from
the "Classes" tab. When you click the "Create Slot"
button to add a new slot to a class, a slot frame is created and
attached to the class. Since frame names must be unique in a knowledge
base, when you try to create another frame (slot) with the same
name, you get the duplicate frame name error. If you want to attach the same
slot to more than one class, you can use the "Add Slot" button
instead of the "Create Slot" button. You'll get a list of all
existing slots to choose from and if necessary, you can override
some of the facets by editing the slot at the class level.
04.07 - How do I add
my own facets to a slot?
You can add your own facets through
creation of a "slot metaclass" or "metaslot",
which is a class whose instances are all slots. Create a subclass
of :STANDARD-SLOT and add slots corresponding to your facets.
These slots will become facets when you create new slots using
this newly defined metaslot.
04.08 - Can I specify
logical constraints in Protégé? Are these constraints
enforced?
Some constraints can be specified directly
as facets. For example, a constraint such as "this slot can
have no more than 4 values" can be expressed with the :MAXIMUM-CARDINALITY
facet. Protégé attempts to enforce these constraints
during knowledge acquisition. If a change to the knowledge base
occurs that causes one of these constraints to be violated, the
system will display the invalid value with a red box around it.
You can also specify constraints in First-Order Logic using the
Protégé Axiom Language (PAL), which is very similar
to
Knowledge
Interchange Format (KIF). There's a structured editor available
in Protégé that helps you write valid PAL constraints, although the editor won't enforce PAL constraints during knowledge acquistion.
To verify your constraints, navigate to the PAL Constraints tab and it will notify you if and where
PAL constraints were violated. The PAL Constraints tab is
documented in more detail on our Web site.
04.09 - How do I use Problem Solving Methods (PSMs) with Protégé ontologies?
As a continuation of long-term research at Stanford Medical Informatics, we're developing a way of easily
integrating PSMs with Protégé. We have a tab widget plug-in called the
"
PSM Librarian", which allows a domain knowledge base to
interface with one or more libraries of reusable PSMs. You can find additional information in the following papers:
- A paper about PSM
libraries in Protégé.
- Papers about experiments and methodology in reusing different PSMs for different domains by way of
explicit mapping relations (1,
2,
3).
This type of work is also part of the ongoing European project
IBROW.
Another option is to access our Knowledge-Base API directly from a custom PSM so long as it's written in Java or has some method of
communicating with a Java library.
04.10 - Does Protégé have support for synonyms?
Protégé does not have built in support for synonyms. One way to represent synonyms is
through the use of metaclasses. Create a metaclass with a slot called "synonym" and then create instances of this metaclass.
You can find more information about using metaclasses in our
User's Guide.
There are also two pages on the Protégé Wiki that may be of interest to those researching support for synonyms:
04.11 - Does Protégé have OWL support?
Yes, we now provide support for editing Semantic Web ontologies in OWL via the
Protégé-OWL editor. Please see the
Protégé-OWL FAQ for more information.
04.12 - Does Protégé have DAML+OIL support?
A team at
SRI International released an alpha version of a
DAML+OIL back-end
for Protégé-Frames.
^ return to top
Database & Storage Formats
05.01 - What databases does Protégé support?
Protégé supports any database that has a JDBC 1.0 driver. In practice, this means most relational databases.
We have direct experience working with Oracle, MySQL, Microsoft SQL Server, and Microsoft Access.
05.02 - Does Protégé support multiple users working simultaneously?
Yes! Please refer to our
multi-user tutorial.
05.03 - How do I store a Protégé project into a database (Microsoft
Access, Oracle, MySQL, etc.)?
We provide
information in our User's Guide about saving
projects to a database. There's also an
explanation of our database structure in the
documentation section of our Web site.
05.04 - I put my JDBC driver in the "plugins" directory but I still can't
connect to the database.
In order to get the database connection to work, copy your JAR file with the
JDBC driver into the Protégé installation directory and rename it to "driver.jar".
05.05 - What formats does Protégé use to store data?
There are currently a number of standard formats supported in Protégé:
- Standard text files - Text files which are
CLIPS. Since CLIPS doesn't support everything offered in
Protégé, text files will have additional content (as CLIPS comments) that is not "native CLIPS".
The format is fairly readable and you can see what it looks like by opening "newspaper.pont" and
"newspaper.pins" in the "examples/newspaper" directory (a subdirectory of the Protégé
installation directory).
- OWL
- RDF Schema
- JDBC database - You can save Protégé projects in any JDBC-compatible
database. Protégé uses it's own schema. More details about the schema design are
available in the documentation section of our Web site.
- XML - As of Protégé 3.1, we are including an
"experimental" XML back-end. This back-end will eventually become the default back-end for
Protégé. You can read more
about the Schema used by the XML back-end on our Wiki.
05.06 - Can I use CLIPS with Protégé?
If you use a limited set of features
in Protégé, the standard text files that Protégé
creates will also be valid CLIPS files. A much more detailed answer to this question is
available in the documentation section of our Web site.
05.07 - What happens
when I import an RDF file with objects that aren't supported by
Protégé (i.e. rdfs:seeAlso, rdfs:isDefinedBy,
etc.)?
The unsupported objects are ignored.
05.08 - Can I store my knowledge base in XML?
There are two plug-ins in our
Contributions Library
that allow you to store a knowledge base in XML. They both are found in the View by Type -> Storage Backends section.
- The "XML Ontology" storage backend generates an XML Schema file
in which classes are defined as schema types and an XML document instance (conforms to the schema) that contains instances.
- The "XML Schema" storage
backend generates an XML Schema that conforms to the Protégé knowledge model and an XML document instance (conforms to the schema)
that contains classes and instances.
05.09 - Can I save just
a part of my ontology?
Not directly. The easiest way to do
this is to make a copy of your project and strip out the frames
you aren't interested in. You can also use the
PROMPT tab widget plug-in available
on our website to "carve out" a part of your project.
05.10 - Can I reuse Ontolingua ontologies in Protégé?
Yes. You can use the
OKBC Tab plug-in to import and export Ontolingua ontolgies
in Protégé.
05.11 - Why am I getting exceptions from MS SQL Server about cloned connections when I try to save my project in database format?
You need to append the string ";SelectMethod=cursor" (without the quotes) to the end of the
JDBC URL. Thanks go to Neil Earnst for providing this information and a
more detailed description on the CHISEL
Web site.
05.12 - I want to access my data from another application but I can't figure out your database schema. How can I get my data?
The schema was not designed to be usable by external applications. It is more or less optimized for
Protégé's internal purposes. Eventually, we expect to provide an "Export to Database" capability that will
produce a usable schema. The only real way to access the data in the database directly is with the Protege API. Another possibility
is to save the project in XML and dump the XML into your database. A more detailed explanation of the rationale for the
database schema design is
available in the documentation section of our Web site.
^ return to top
Plug-ins
06.01 - Where can I download plug-ins for Protégé?
See the
Plug-ins & Applications Library on the
Protégé Wiki.
06.02 - Can I contribute my plug-in to the Plug-ins library?
We strongly encourage contributions to our Plug-ins & Applications, and Ontologies libraries on the
Protégé Wiki. We offer
step-by-step instructions
for making a contribution to the library on our Web site.
06.03 - Will you develop
a plug-in for me? What if I pay?
There's a small chance we'll develop a plug-in for you if it's general purpose and domain-independent. Make sure to check our
Plug-ins & Applications Library first
to see if anyone
else developed something with the desired functionality. They
may be willing to give you the source code. If your plug-in is specific to your company and/or project, it's
less likely that we'll develop it for you (you can always try and money doesn't hurt...). We're an academic research group and
not a contract software development organization. Protégé
was specifically designed to be extended by user-developed plug-ins
without a substantial amount of effort. There's a reasonable
amount of
documentation
and example code on how to do this. Many users, even some with
minimal programming skills, have successfully developed plug-ins
relatively quickly.
06.04 - Protégé doesn't see my plug-in? Why not?
- Most common problem - The plug-in's JAR file was improperly constructed. JavaSoft's
"jar" command can be confusing so it's relatively
easy to produce a bad JAR file. Since JAR files are packaged
using the ZIP file format, you can examine them with any utility
that allows you to view ZIP files. On the Windows platform,
for example, you can use the WinZip utiltity. Look at the
relative pathname entries for your plug-in's classes. If your
class FancyWidget is in a package called "edu.stanford.foo",
the pathname in the JAR file for FancyWidget.class should
be exactly "edu/stanford/foo". Common mistakes are
one too many pathname entries ("source/edu/stanford/foo"),
or one too few pathname entries ("stanford/foo").
Protégé won't see your plug-in unless the
pathname entries are exactly correct. Javasoft provides
documentation on using the
"jar" command on their Web site. Anytime you run the "jar" command, it's
a good idea to check the results with WinZip or some other
utility to make sure the pathnames are correct.
- Second most common problem
- Your JAR file doesn't have a manifest file. We provide more information about
manifests elsewhere on our Web site. The JavaSoft "jar"
command can insert a new manifest file into an existing JAR file.
- Third most common problem
- You neglected to implement the static
isSuitable()
method on your slot widget plug-in. See the slot
widget plug-in documentation for more information. Remember
that this method must be declared as both public and static.
- Fourth most common problem
- You're missing essential whitespace in your manifest file.
There must be a blank line at the top after the version information,
entries must be separated by blank lines, and the last line
must be blank. The standard Java manifest parsing software
used by Protégé discards entries without
blank lines both before and after the entry.
06.05 - How do I update my
plug-in for new releases of Protégé?
The safest thing to do is to start
by recompiling your plug-in against the new Protégé
JAR file. If you're using Jbuilder, be sure to delete all ".dependency"
files since they cache information about the particular JAR files
you're using.
06.06 - I installed
a new JAR file for my plug-in but Protégé is
still using an old version. How do I fix this?
This is usually caused by duplicate
".class" files in the new JAR file and the "plugins"
directory. By design, ".class" files in the "plugins"
directory (and it's subdirectories) take precedence over ".class"
files in JAR files. Remove the old ".class" files and
any old JAR files from the "plugins" directory.
06.07 - What's the purpose
of the "initialize()
" method? Why can't
I just use the widget's constructor for initialization?
In order to function properly, many
widgets need access to external resources such as the current
knowledge base and the widget property list. There's no way to
get an initialized pointer to these external resources until a
widget's constructor is called. In addition, the JavaBeans specification
requires that constructors take no arguments. As such, the widget
construction process is as follows:
- Call the constructor.
- Call
setup()
to initialize pointers to external resources.
- Call
initialize()
.
Subsequent to the design of the Protégé API,
JavaSoft designed the BeanContext mechanism for handling this
sort of problem. It's a little complicated but it's the standard
way of dealing with the "external resource" problem in JavaBeans.
The Protégé API has not been changed to take
advantage of this standard.
06.08 - I was developing
plug-ins, upgraded to a new version of Protégé,
and now Protégé won't open at all. The message
in the console window says the system can't find the unrecognized
"SystemUtilities" class. What does this mean?
This particular error message comes
from the Java Virtual Machine (JVM) in spite of the fact that
the "SystemUtilities" class is in the Protégé
JAR file. The real problem is a versioning issue between the new
Protégé JAR file and something in your "plugins"
directory. Unfotunately, there's no straightforward way to determine
which plug-in in your "plugins" directory needs to be
recompiled against the latest Protégé JAR file.
As a first step, delete the contents of the "plugins"
directory (and it's subdirectories) and try reopening Protégé
to verify that this is indeed the problem. If you successfully
opened Protégé, begin adding items back into
the plugins directory one by one and reopening Protégé
until you find the culprit. Once you've located the problem, recompile
the code if it's yours or get a new version from the author.
06.09 - Does the "plugins"
directory have to be a subdirectory of the Protégé
installation directory?
Not exactly. Protégé
looks for the "plugins" subdirectory of the installation
directory and adds all the JAR files contained within it to the
classpath. The intention here is to make it easy to just drop
a JAR file into the "plugins" directory and have it
work. If absolutely necessary, you can override this behavior by setting
the Java property "protege.dir" to a directory containing
a subdirectory called "plugins". We realize that this
level of indirection is unfortunate since a user
must have
a directory called exactly "plugins" and the "protege.dir"
property
must be set to the parent directory of that directory.
06.10 - Is it possible
to add a new basic type such as "date" to Protégé?
You can't add basic types at the level
of "integer" to Protégé. However,
during instance creation, the
Date
Slot Widget plug-in will automatically fill in the current
date and time for all selected slots of type String.
06.11 - Does the XML Tab plug-in support XML Schemas?
You can only import/export XML document instances using the XML Tab plug-in. It
doesn't support XML Schemas or DTDs. For XML Schema support, see the
XML Schema Backend storage model plug-in.
^ return to top
Protégé API
07.01 - Do you have any source code documentation?
We have some, but admittedly need more. Our two best suggestions are to look at Protégé's
Javadoc API Documentation and the existing body of source code that's made available in ZIP format
on our
download page. (You can also download bleeding edge versions of the source code
from our
Subversion repository).
07.02 - Are there any design documents for Protégé?
See the documentation section of our Web site for some (minimal) design documentation. Of interest is the section
entitled "Design Rationale" on our
user documentation page that describes the design
decisions most often asked about. Developers may also be interested in the documentation of the Protégé Programming
Development Kit on our
developer documentation page.
07.03 - Can you access Protégé using a C++ API?
The Protégé API is only available in Java. You can access Java APIs from C and
C++ using the Java Native Interface (JNI). The
JavaSoft website and most intermediate/advanced
Java programming books provide usage examples.
07.04 - Is there an easy way to get a list of all the instances within a project?
Yes, the
KnowledgeBase.getFrames()
method returns a collection of all the instances within a project. The following
two methods may also be of interest:
Cls.getDirectInstances()
- returns all instances of a specific class within a project.
Cls.getInstances()
- returns all instances of a specific class and it's subclasses within a project.
07.05 - How can I use the Protégé API to do queries?
The query mechanism at the API level is still quite primitive. The only method that's useful here is
KnowledgeBase.getMatchingFrames()
, which allows execution of simple "matching" queries.
07.06 - How do I create and save a new project programmatically?
Please refer to the following piece of
sample code in the documentation
section of our Web site.
07.07 - Is it possible to customize Forms programmatically?
This can be done but it isn't easy as there's no standard API for doing so. You need to understand
the internals of Protégé. A message in the discussion list archive entitled
"
FYI - Modifying class forms
via the API" may be of some help.
^ return to top
Licensing
08.01 - How do I license Protégé?
You don't need to sign anything to download, use, or redistribute Protégé. This includes academic,
government, and commercial users.
08.02 - How much does Protégé cost?
Protégé is free. The source code is also freely available
under the open source
Mozilla Public License (MPL).
08.03 - Can I use Protégé as part of a commercial product?
Both the Protégé application and the Protégé
API, unmodified, may be used as part of a commercial product. This scenario is covered by the license as long
as you give us the appropriate amount of credit. Typically, notes in the "About Box" and documentation
of your application will suffice. An example would be:
"This product incorporates (or builds upon) [part of] the open source Protégé system.
Protégé is available at
http://protege.stanford.edu."
You can't claim that your product was developed in part or in whole at Stanford or by Stanford people. You also
can't use the name "Stanford" in marketing or advertising for your product without doing a licensing deal with the
University.
08.04 - I want to modify Protégé source code and use the result
in my product. Is this possible?
Yes, but there are some restrictions. First you should be clear about exactly what you're trying to accomplish. If you're
just developing a plug-in, you don't have to modify Protégé source code. Plug-ins are strictly your own
business and are not covered by any licensing restriction.
If indeed you decide to modify Protégé source code and include the result in your product, you should
carefully read the
Mozilla Public License (MPL). You must indicate
modifications to source files in the file headers and make them open source through the MPL.
Another option is to modify Protégé source files to call your own classes and methods, which do not have
to be open source. For example, you could modify a Protégé source file to call a method in your library.
The source file must be MPL open source but your library can remain completely proprietary if you so desire.
08.05 - I want to develop a plug-in for my company's private use (i.e. I don't
want to release it or its source code to the public). Is there a problem with this?
No. Any plug-in you develop belongs solely to you and you can do with it what you choose. In the
event you decide to make your plug-in available, you will also need to decide if you want to make the source code available. Be
aware that if you make the source code available, the
Mozilla Public License (MPL)
that covers Protégé will not cover your code. You are free to choose MPL or any other more or less restrictive
open source license for your code.
08.06 - Can I develop a plug-in and sell it?
Yes. See the question above about "plug-ins for private use" for more information. You could, for
example, develop a plug-in, sell it, and include Protégé on the distribution disk so long as you comply with
the other terms of the license.
08.07 - Can I sell my projects and ontologies that I developed using Protégé?
Yes. You can sell your projects and ontologies with no problem and no obligations to us.
08.08 - I can't live with the terms of the open source license. What can I do?
You may be able to negotiate the use of Protégé on terms other than the standard
license terms. You'll need to contact Stanford's
Office of Technology Licensing (OTL)
to explore this possibility. Before doing so you should clearly have in mind which terms of the license you find unacceptable and
communicate this information to the OTL. Most commercial users find the open source
Mozilla Public License (MPL) acceptable.
^ return to top
Technical Support
09.01 - What sort of technical support is available?
Technical support for the Protégé-OWL editor is available through the
protege-owl mailing list. Support for all other issues is available
through the
protege-discussion mailing list. These lists are
frequented by experienced Protégé users and monitored by the development staff. You will almost always get
your questions answered by posting messages to these lists. Please note that we don't offer telephone support (don't
call members of the staff with technical questions).
09.02 - Can we purchase some sort of "priority" technical support?
Sort of. See the
training and support page on our Web site.
09.03 - Can we hire you or anyone else to do Protégé related development?
Stanford doesn't provide contract software development. However, it's not terribly difficult to take advantage of
Protégé's extensible plug-in architecture.
Many people (tens, if not hundreds) have successfully developed
plug-ins to extend Protégé's functionality.
Any reasonable Java programmer should be able to accomplish this.
In fact, you may be able to locate someone with Protégé
specific skills willing to develop software to meet your needs.
The best place to advertise for such a person would be either the
protege-discussion or
protege-owl mailing lists.
09.04 - Can we collaborate to develop something?
It depends on what the "something" is. If it's of mutual interest and you have the funding to allow
us to devote the necessary resources, it's possible.
09.05 - I really need a bug fixed (or feature developed) but no one's shown any signs
of working on it. What can I do?
Protégé, like most
software, has its share of bugs. We try to fix critical problems
that cause widespread hardship as quickly as possible. Other bugs
are prioritized along with new features. We don't have separate
"maintenance" and "development" teams. If we're not working on
something that is absolutely critical for your application, there
are several things you can do:
- Make sure we know that a particular
problem is a priority for you and the effect of not having
the problem fixed. The best place to do this is the protege-discussion
mailing list (or the protege-owl mailing
list if the problem is specific to the Protégé-OWL editor). It's quite possible that others will chip in
and complain about the same issue.
- Fix the problem yourself. The Protégé source code is freely available. Several users have tracked
down and fixed bugs and contributed the bug fixes back to
the original code base.
- Investigate the training and support section of our Web site to learn more about
purchasing consulting and/or becoming a Protégé affiliate.
^ return to top