Jena is one of
the most widely used Java APIs for RDF and OWL, providing services
for model representation, parsing, database persistence, querying
and some visualization tools. Protégé-OWL has always had a close relationship
with Jena. The Jena ARP parser is still used in the Protégé-OWL
parser, and various other services such as species validation and datatype
handling have been reused from Jena. It was furthermore possible to
convert a Protégé OWLModel into a Jena OntModel, to get a static snapshot
of the model at run time. This model, however had to be rebuilt after
each change in the model.
As of August 2005, Protégé-OWL is now much more closely integrated with
Jena. This integration allows programmers to user certain Jena functions
at run-time, without having to go through the slow rebuild process each time.
The architecture of this integration is illustrated below.

The key to this integration is the fact that both systems operate
on a low-level "triple" representation of the model. Protégé has its
native frame store mechanism, which has been wrapped in Protégé-OWL
with the TripleStore classes. In the Jena world, the corresponding
interfaces are called Graph and Model. The Protégé TripleStore has
been wrapped into a Jena Graph, so that any read access from the Jena
API in fact operates on the Protégé triples. In order to modify these
triples, the conventional Protégé-OWL API must be used. However, this
mechanism allows the use of Jena methods for querying, while the ontology
is edited inside Protégé.
The OWLModel API has a new method
getJenaModel()
to access a Jena
view of the Protégé model at run-time. This can be used by Protégé
plug-in developers. Many other Jena services can be wrapped into Protégé
plug-ins this way, by providing them a pointer to the Model created by Protégé.