NOTE: This page is now defunct -- please see for current information

DataGenie Tab

The DataGenie is a tab plug-in that allows Protege to read from arbitrary database. DataGenie uses either JDBC or ODBC/JDBC to connect to a specified database, and then allows the user to move portions (or all) of the database into Protege classes. Generally, each table becomes a class, and each attribute becomes a slot. In addition, if the relational database table has foreign key references to other tables, these can be replaced by Protege instance pointers when the database is converted into a knowledge base.

This plug-in is NOT a database back-end. We expect this plug-in to be used when there exists legacy data that one wants to dump into Protege, before doing additional knowledge acquisition or knowledge modeling. This plug-in (as written) does not include any capability for moving data in the opposite direction (from Protege classes and instances into a relational database). Another use for this plug-in might be as a (convoluted?) database viewer. For efficiency, a database might be stored as a set of custom-designed database tables, but then the DataGenie could be used to view portions of this schema in the Protege frame-based UI.


View screenshots.


Get binary distribution of DataGenie 2.0b - (for Protege v3.0)
Get source distribution of DataGenie 2.0b

Last updated: May 30, 2005


Get DataGenie from Protege 2.1 release
Get DataGenie from Protege 1.9 release
Get DataGenie from Protege 1.9 source

Sample Project



New Features in DataGenie 2.0:

  • JDBC support

    Enter a JDBC Driver and URL and DataGenie will connect to the database.When tested with Postgresql, it was found that the JDBC driver had more SQL functionality than the ODBC/JDBC bridge.

    Here is a link to the Postgresql JDBC driver
    Here is a link to the MySQL JDBC driver

  • Automatic processing of foreign keys into Protege instances

    If table T1 has a foreign key relationship to table T2, then a new slot is added to class C1 (representing T1) whose value is an instance of C2 (representing T2). Each instance of C1 will look up the corresponding instance of C2 and add it to the new slot.

  • Automatic handling of bridge tables

    If table T1 has exactly two columns, both columns are part of the primary key, and both columns are foreign keys to other tables T2 and T3, this is defined to be a bridge table. In this case, a slot with cardinality multiple will be added toC2 (representing T2), whose values are instances of C3 (representing T3). A corresponding inverse slot will be added to C3 whose values are instances of C2. Each instance of row in T1 will cause an instance of C2 to be added to the new slot in T3, and an instance of C3 to be added to the new slot in T2.

  •  Author

    Author: Adam Silberfein and John Gennari
    Current Contacts: Adam Silberfein and John Gennari
    Institution: University of Washington

     Level of Support

    These plug-ins are no longer supported by the authors. Please see current DataGenie page for support information.


    The DataGenie Tab Widget and source code (like Protégé) are freely available under the open source Mozilla Public License.