Method of Integrating Protégé into Shrimp
To integrate Protégé into Shrimp, a new databean was created following the databean interface. This databean accessed Protégé's knowledgebase to get the hierarchical information it required. Artifacts were created from Classes and Instances. Relationships were created from Slots. These artifacts and relationships were passed to the rest of shrimp, which understood how to deal with them.
Problems Integrating Protégé into Shrimp
The largest problem with the integration was dealing with Protégé multiple inheritance. A single class could have more than one superclass, and therefore an artifact could have more than one parent. Since RSF doesn't permit multiple parents Shrimp was not designed to handle multiple parents.
To solve the problem, the databean was programmed to create an artifact for each different path used to find a class from the root class (":THING"). For example, if a class has three superclasses, there are three ways to find the class from the root class and therefore three paths to the class. In this case three artifacts would be created for the class, one for each path. To uniquely identify the artifacts, each artifact is based on the parent (or superclass) used to find it.
Method of Integrating Shrimp into Protégé
The integration was very straight forward. Having already created a Protégé DataBean, we only needed to move the DisplayBean into Protégé Since all of the java beans used in shrimp are connected within a container called ShrimpView, we simply placed ShrimpView inside Protégé's TabWidget.
Problems integrating Shrimp into Protégé
There were 2 problems with integrating Shrimp into Protégé. The first was converting all of the popup windows from JInternalFrames to JDialogs. Protégé didn't have a DeskTopPane, and although we could have added one to the TabWidget, we wanted Shrimp to create a more flexible integration for other programs.

