[an error occurred while processing this directive]
USERS
DEVELOPERS


see also:
PROTEGE-OWL 3.X FAQ
PROTEGE-OWL 4.X FAQ
FILE ENCODING FAQ
PROTEGE WIKI

 protégé faq

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:
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: 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: 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: 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:
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:
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:
  1. On the Classes tab, add the :NAME slot to the class.
  2. 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: 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é: 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. 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?
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:
  1. Call the constructor.
  2. Call setup() to initialize pointers to external resources.
  3. 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: 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:
^ return to top



[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]