The contents of this page describe changes relative to the 3.1.1 release of Protégé.
Important Installation Notes
- Do not install this build over an older version. You need to do a clean install for this release to work properly.
- Protégé 3.2 requires JDK 1.5
- In order for this release to be runnable on the Mac, you need to a) install Mac OS 10.4, and b)
download and install the
1.5 version of Java from Apple's Web site.
- You can launch Protégé on the Mac in one of two ways: 1) use the
run_protege.applescript
script in the Protégé installation directory, or 2)
start the application /Applications/Utilities/Java/J2SE 5.0/Java Preferences, go to the "General Tab",
locate "Java Application Runtime Settings", and drag the J2SE 5.0 line so that it is first in the list - once
this change is made you can use the standard Mac Protégé application launcher.
Enhancements (Core Protégé & Protégé-Frames)
Enhancements (Protégé-OWL)
Bug Fixes (Core Protégé & Protégé-Frames)
Bug Fixes (Protégé-OWL)
What's new in Protégé's bundled plug-ins?
Enhancements (Core Protégé & Protégé-Frames)
- Users can now add their own configuration tabs in the "Configure" dialog
(accessed via Project -> Configure...).
Documentation
on how to do is available on our Wiki.
- Users can now edit property files (
protege.properties
and Protege.lax
) from two places in
the user interface:
- Choose Project | Configure... to launch the Configure dialog and click on the "Property Files"
tab.
- Choose Project | Configure... to launch the Configure dialog, check the box next to
"ProtegePropertiesTab" on the Tab Widgets tab, and click OK. The ProtegePropertiesTab tab widget
plug-in will be visible in the main window. This tab allows editing of any property file with the
property=value
format, not just property files that are specific to Protege.
Any changes made to the protege.properties
file will take effect immediately. Changes in other property files,
including Protege.lax
, will only take effect after restarting Protégé.
- Inclusion of database projects is partially working now. It works if the database projects in the
inclusion tree are arranged in a linear order, e.g. A includes B, B includes C, C includes D, etc. Having
database projects that are included as siblings of one another does not currently work, e.g. A includes B
and C. As part of this effort:
- A mechanism has been introduced to ensure that frames from included projects cannot inadvertently clash.
- A mechanism has been introduced that merges frames from included projects when they actually represent the same frame. This is the part of the effort that needs to be updated to handle sibling included database projects.
- It is now possible to use multiple loggers for different packages and classes. This will make debugging easier in the future and may make it possible to do better bug reporting.
- Added a constructor for
LabeledComponent
that allows developers to swap the buttons with the labels in the headers of components.
- The database transaction system has been reworked for the multi-user system.
- Searches in the class hierarchy that have zero matches now cause a dialog to pop up.
- All generated knowledge base events now have a timestamp and the user name of the client that generated the
event. There are two new methods in
AbstractEvent
to retrieve this information.
Please consult the JavaDoc for details.
- Included an updated version of the Unicode Chooser dialog. The dialog is no longer modal and a single-click
inserts a character into the target text box. Previously, characters had to be inserted one at a time. Thanks go
to Simon White for this contribution.
- Added a new method for setting the current project without displaying it:
setCurrentProject(Project project, boolean remote, boolean suppressDisplay)
.
Please consult the JavaDoc for details.
Suppressed events generated at project load time.
- Added better error handling and reporting to make the display of error information more user-friendly. In
cases where CLIPS or OWL files have parsing errors, more information is displayed so that problems will be easier
to pinpoint.
- Added a utility method in
ModelUtilities
for determining whether a frame (Cls, Slot, Facet, or Instance) is
visible in the GUI.
- Export plug-ins may now implement an
isSuitable(Project)
method to specify which kinds of projects they can
be applied to, e.g., OWL, CLIPS, etc. If a project type is unsuitable, the corresponding export menu item is
disabled.
- Added
TransactionEvent
to the knowledge base API.
Enhancements (Protégé-OWL)
- New expression syntax
(Manchester syntax) using
keywords instead of symbols (default option).
- Operators of allValuesFrom (A) and someValuesFrom (E) restrictions are now in infix notation.
- Support for user-defined XML Schema datatypes.
- A new import repository mechanism
replaces the ont-policy approach to import management.
- Widgets on the Individuals tab show red borders around cardinality and datatype constraint violations.
- Support for SPARQL.
- For programmers: better integration with Jena.
- A new OWL-specific metrics panel is available. To access the OWL Model Metrics dialog, choose Metrics... from the
Project menu.
- An additional panel was added to the OWL Model Metrics dialog to indicate the DL expressivity of the ontology being
edited.
- The annotation area has been refactored into a multi-line table spanning the whole width.
- An upward tree of superclasses can be opened below the classes tree.
- The prefix xsd: is no longer needed and displayed for XML Schema datatypes.
- A new, experimental RDF/XML writer for OWL files can be activated in the OWL Preferences dialog. The source code
viewer can now also display imported files (using the new native RDF/XML writer).
- The OWLClasses tab has been simplified by moving the properties tree from the logic view. This provides
more room for the conditions widget. The properties tree can now be found on the properties view.
- Buttons on the widgets on the OWLClasses tab have been moved to the left hand side of the widgets so that
less mousing around is required when editing.
- Several toolbar buttons were converted to menu items (accessible from the OWL menu) in order to make
the toolbar less cluttered.
- The property hierarchy on the Properties tab has been split into separate hierarchies for object,
datatype, and annotation properties.
- Added the ability to create anonymous individuals from the Individuals tab.
- Upgraded to version 2.4 of Jena.
- Optimized the getLanguage() call in
RDFSLiteral.
- Reimplemented the loading of OWL files from "Open..." and "Create from Existing Sources"
such that a different initialization method is used. In the case where an OWL file is opened, the repository file
is also considered (if one exists) based on the OWL file path.
- There is now a message displayed to the user if SPARQL query parsing fails. The SPARQL results table
is cleaned after each query execution.
- Offline activation of the SWRLTab is now supported.
- Added a new finder to the main OWL tabs.
- Added DL Syntax class display - DL symbol prefix notation in the conditions widget and elsewhere.
Bug Fixes (Core Protégé & Protégé-Frames)
- Fixed a bug which prevented a Protégé client from being able to access file mode ontologies
on the Protégé server.
- Fixed a bug that prevented the
afterCreate()
method from being called for project plug-ins.
- Fixed an infinite loop problem in the
getPathToRoot()
method that occurred when cyclic subclasses are used.
- Fixed a bug related to opening unsupported or invalid files in the Open file dialog. Protégé
now presents a warning message (instead of hanging) and users can either exit Protégé or select
another project or file to be opened.
- Fixed a bug in the graph widget that caused "dangling" reified relations to be leftover in the
knowledge base after deleting nodes from the graph.
- Developed a workaround for a MySQL 5.0 bug
(http://bugs.mysql.com/bug.php?id=16121). Previous
versions of Protégé would fail in unpredictable ways when using the MySQL 5.0 database.
- Beautified and fixed some broken links in the "About Protege" dialog.
- Fixed the "Getting Started" button on the Welcome Dialog to open a valid URL in the
Protégé Web site.
- Fixed a scrolling bug that caused the scrollbar not to appear in the class tree panel under certain
circumstances.
- Fixed a project inclusion bug that was causing a
NullPointerException
. The absolute and
relative paths to included projects are now saved correctly in the including project file.
- Fixed a bug related to nested transactions.
- Fixed a bug that caused an
IllegalArgumentException
when reordering tabs in the GUI.
- Fixed a bug that was occurring when no tabs were activated in the GUI.
- Fixed a bug that was causing several items in the class context menu to misbehave.
Bug Fixes (Protégé-OWL)
- Reimplemented browser slot patterns for OWL, which fixed several bugs:
- It is now possible to build browser slot patterns with multiple slots/properties.
- RDFSLiteral properties obey the default language.
- Fixed bug related to setting the default language in an imported ontology, which caused browser
slots to behave inconsistently.
- Changed the behavior of the browser slot pattern - if a default language is set and an RDFSLiteral
does not have a value for that language, but has a value with no language set, then this value is used in
the display.
WARNING! Restriction editing is not supported in multiple browser slot
mode. It is only supported in the ":NAME" or "rdfs:label" modes.
- Fixed the Java source code generator for OWL ontologies that imported the SWRL ontology, which caused the
generated code not to compile. The SWRL basic classes are now filtered out from the generated Java classes.
- Fixed a bug that occurred when the Protégé ontology was imported from one of the available
repositories. The Protégé ontology was imported with a "p1" prefix rather than
a "protege" prefix, which caused other GUI components to behave incorrectly.
- Fixed some race conditions in the OWL search operation.
- Fixed a problem where Protégé-OWL was incorrectly determining the type of an rdf property. This
caused the application to generate a Java object of the wrong type to represent the property and resulted in class
cast exceptions (Bugzilla 185, 188).
- Fixed a bug which made it difficult to edit restrictions in OWL ontologies when Protégé-OWL is
configured to display classes and properties by their rdf:label rather than their rdf:id.
- Fixed a bug which prevented the streaming load of an OWL ontology directly into a database from working.
This can now be done by creating a new OWL database project from existing sources, specifying the source, and
finally specifying the database parameters.
- Fixed a class name display bug. If OWL class names were too long, the class name could not be read properly
in the GUI. This bug also occurred when resizing the Protégé window.
- Fixed a bug that caused the values in the annotations and triple table to shift at delete in the
Metadata Tab.
- Added fix for the Protégé-OWL API method
createJenaModelFromURI(URI uri)
to also load the
project repositories.
- Fixed a
NullPointerException
for the case in which the WHERE
clause of a SPARQL query was empty.
- Various bug fixes in the Protégé-OWL Parser, i.e. error handling and reporting are more
robust.
- Fixed a bug related to changing the active ontology in the Metadata tab that caused a
NullPointerException
.
- Fixed a bug that caused infinite recursion when converting a Protégé-Frames project to a
Protégé-OWL project. This problem occurred when a class was an instance of itself.
- OWL sameAs/different/allDifferents is now supported properly in the SWRLTab.
- SWRLFactory activation problem fixed.
- SWRL built-in comparison operators now work for floats.
- Fixed a bug in the SWRL import mechanism that caused the SWRLTab not to initialize properly.
- The "File -> Export to Format -> RDF Schema" and "File -> Export to
Format -> HTML" menu items are now disabled for OWL ontologies. The RDF Schema and HTML
export plug-ins were written for Protégé-Frames ontologies and were causing confusion when
users tried to apply them to OWL ontologies.
- Fixed Protégé-OWL's Ant
build.xml
file to include the build.properties
file.
- Fixed some null pointer exceptions that occurred when loading an OWL model with the database back-end.
In particular, there were problems with the Metadata tab which have been resolved.
- Fixed a problem where the client was not correctly initialized when loading a server OWL project using a
database back-end.
- Fixed a problem where DIG rendering on inverse functional properties was incorrect.
- Fixed a problem where anonymous axioms were being left behind when deleting classes.
- Fixed a problem where XSP ranges were not shown when protege.owl was imported indirectly.
- Fixed a bug where XSP datatypes with any other prefix were not recognized.
- Fixed a problem where the XSP namespace was not being written out.
- Fixed a problem with the ExternalResources browser causing an exception when a URL cannot be resolved.
- Fixed a bug where a multiple selection delete was only deleting the first class.
- Fixed a problem where users could not navigate to the search results in the properties hierarchies.
- Fixed a bug where starting new OWL database models from scratch was failing.
- Fixed a problem where anonymous fillers were not represented in the existential tree.
- Fixed a problem that was preventing users from being able to edit the name of a property when creating from
the Restrictions dialog.
- Fixed a problem where changing the type of a property which has a superproperty caused the property to be
shown as a top-level property.
- Fixed a bug with the expression editor crashing when there were no properties.
- Fixed a bug where opening an OWL file directly did not open the associated project.
- Fixed a bug where opening an OWL PPRJ file directly from desktop caused the OWL menu to be absent.
- Fixed a problem where radio buttons to switch between different types of class displays did not appear on
the OWLClasses tab.
- Fixed a bug with inconsistent classes not showing up in the reasoner results window.
- Fixed a bug where the get inferred subclasses right-click menu item was missing (Mantis 158).
- Fixed a bug where resource action buttons did not rebuild forms (Mantis 173).
- Removed the upper case syntax option (Mantis 217).
- Fixed a bug where different from triples were not visible in the triples table (Mantis 219).
- Made the annotation properties editor multiline by default (was single line - Mantis 220).
- Fixed a problem where importing ontologies that imported a common ontology caused "null" to be
inserted into the common ontology URI (Mantis 222).
- Fixed a bug with the domain widget disallowing the deletion of the last class in the domain (Mantis 229).
- Made an option for local folder repositories to contain ontologies that reside in sub folders (Mantis 235).
- Fixed a problem with the imports mechanism reloading the UI between each import when importing multiple
ontologies (Mantis 243).
- Fixed a bug where browser text for anonymous classes did not respect the display slots for classes,
properties, etc. (Mantis 244).
- Fixed a bug with previously imported read-only ontologies becoming editable after subsequent imports (Mantis 245).
- Fixed a bug where relative repositories could not be created in the base file if the path contained
spaces (Mantis 247).
- Fixed a problem with the repository manager not being able to find project repository files on Windows
(Mantis 264).
- Fixed a bug where converting a defined class to a primitive class using the toolbar action deselected the
class being converted (Mantis 265).
- Fixed a bug where Protégé-OWL was still searching for the ont-policy file and crashing on
start-up if it could not find it (Mantis 280).
- Fixed a bug where creating a clone failed if the browser text could not be parsed (Mantis 289).
- Fixed a bug where the property values widget did not display the selection dialog if the property did not
have a range (Mantis 292).
- Fixed a bug where imported ontology URIs sometimes started with
null
(API users should now use
ImportHelper
to add imports - Mantis 303).
- Fixed a problem with the add button on the Individuals tab not working with range-less properties (Mantis 304).
- Fixed a problem with domains not being handled correctly when deleting referring classes (Mantis 316).
- Checking the "Import Protégé metadata ontology" checkbox in the Preferences dialog no longer requires a restart (Mantis 318).
What's new in Protégé's bundled plug-ins?
New Plug-ins
- Abstract Syntax Package: a new plug-in that adds support for viewing and exporting OWL ontologies in the OWL Abstract Syntax. More information
about the Abstract Syntax Package is
available on the CO-ODE Web site. Thanks go to the
CO-ODE project at
The University of Manchester for this contribution.
- Change Management: a new plug-in that allows users
to track and annotate changes to Protégé ontologies. More information about the Changes tab
is available on the
Protégé Wiki. Thanks go to William Liu for this submission.
- Manchester OWL Syntax Editor: a new plug-in that provides an alternate way to view and edit
descriptions of OWL named classes in Protégé-OWL. More information about the Manchester OWL Syntax Editor
is available on the CO-ODE Web site.
Thanks go to the CO-ODE team at
The University of Manchester for this submission.
- OWL Debugger: a new plug-in that acts as a tool to help people debug OWL-DL ontologies.
More information about the OWL Debugger is
available on the CO-ODE Web site.
Thanks go to the CO-ODE team at
The University of Manchester for this submission.
- OWL DL Individuals Tab: a new plug-in that provides a DL style view of individuals in
the Protégé-OWL editor. More information is
available on the CO-ODE Web site.
Thanks go to the CO-ODE team at the University of Manchester for this submission.
- OWL Unit Test: a new plug-in that provides a mechanism for describing the expected classification status
of individual OWL classes, and a test facility that checks whether or not the actual classification corresponds to the
expected classification. More information is
available on the CO-ODE Web site.
Thanks go to the CO-ODE team at the University of Manchester for this submission.
- SWRLTab: a new plug-in that provides an extension mechanism to support the execution of SWRL rules
with a variety of rule engines. At present, the Jess rule engine is
supported. See the
online documentation for more detail.
Thanks go to Martin O'Connor for this contribution.
Enhancements (made to existing plug-ins)
- We are now bundling the new 3.0 release of the Prompt plug-in. Please note that the
documentation for Prompt was recently
expanded and moved to the Protégé Wiki. To follow is a summary of what's new in Prompt 3.0:
- Added an explicit mapping mode to Prompt. Previously, mapping was performed during merge. Note that you open your
source ontology in Protégé and specify the target in the Prompt tab when using the mapping mode
(this is different from merging mode). See the Protégé Wiki page entitled
ConfiguringPromptProjects
for more information.
- Integrated a mapping interpreter, developed by John Park, John Gennari, and Monica Crubezy in previous years at
SMI. After you use Prompt to save the mappings in the mapping ontology, you can invoke the mapping interpreter from
the Prompt menu to transform instances from your source to your target, based on the mapping. See the Protégé
Wiki page entitled MappingOntology
for more details on specifying the mappings. Thanks go to David Buttler for contributing this documentation.
- Fixed a bug in the AnchorPrompt algorithm that prevented it from being invoked.
- Improved support for OWL ontologies: you can now have multiple namespaces in your source ontologies.
- Developed a plug-in architecture for Prompt. Developers can now add plug-ins to Prompt to integrate new mapping
algorithms for initial comparison of ontologies and new user-interface components. Thanks go to Sean Falconer for
implementing this architecture. Please see the Protégé Wiki page entitled
PluginsForPrompt if you would
like to develop Prompt plug-ins.
- Added two algorithm plug-ins to Prompt: (1) a plug-in that uses the
FOAM algorithm for initial matching
(thanks go to Sean Falconer for this contribution) and (2) an algorithm that allows users to specify a slot where
synonyms to class names are stored and uses the synonyms as well as preferred names for matching.
- Added a new Prompt plug-in type: mapping storage. You can now save mappings in your own mapping ontology
(or through some other API) by implementing the mappingStoragePlugin interface. See the SimpleMappingStorage
implementation as an example.
- In PromptDiff, you can now view the old and the new versions of a class side-by-side.
- In PromptDiff, there is a counter that shows how many changed classes are remaining (located above the class hierarchy on the Prompt tab).
- In PromptDiff, you can now save your project in the middle of doing accepts/rejects. When you restart, you will be at the same state in terms of accepting/rejecting changes that you were in when you saved.
- We are now bundling an updated version (2.5) of the Jambalaya plug-in. To follow is a summary of what's new
in Jambalaya 2.5:
- Added support for customizing Quick Views. You can now create your own quick views as well as
modify the defaults.
- Made major improvements to the user interface (new icons, cursors, and general look and feel).
- Fixed some performance bugs.
- Improved the Query View. You can now expand and collapse nodes to better navigate the neighborhood
graph.
- We are now bundling an updated version (1.5) of the JessTab plug-in. Please see the
JessTab Web page for more information.
Thanks go to Henrik Eriksson
for this contribution.
- We are now bundling an an updated version (1.4, build 2) of the TGVizTab plug-in. Please see the
TGVizTab Web page for
more information. Thanks go to Harith Alani for
this contribution.
- We are now bundling an updated version (1.0) of the Protégé Wizards plug-in. Please see the
Protégé Wizards Web page for more
information. Thanks go to Nick Drummond
for this contribution.
Bug Fixes (for existing plug-ins)
- Fixed a bug that prevented the OWLViz export dialog from coming up under JDK 1.6. (Please note that we do
not officially support JDK 1.6 yet. This was an easy one-liner, so we checked in a fix).
- Fixed the JessTab's
plugin.properties
file to indicate its dependency on the
Protégé Axiom Language (PAL). The warning message
about the PAL engine not being available to the JessTab no longer appears if PAL is already installed.
- Fixed an issue with the JessTab that was causing a crash during the tab's initialization process.