In order to demonstrate practical application of "O(n2) Space" in Software Engineering (SE) we have developed a plug-in for popular Knowledge Engineering (KE) tool - Protégé. KE can be considered a “counterbalance” to conventional SE. If SE is focused on specific behavior of programs in application, then KE is focused on properties of inputs and outputs, - it helps to prevent unexpected behavior by making many assumptions explicit.
KE in its simplest form is required for any SE in order to declare some basic assumptions, such as communication protocols and interfaces. Declaring basic types of data as well as defining constraints and relations between elements comprising software applications can be considered KE, although it is usually called “modeling” in SE. The term “knowledge” is usually reserved for complex models with large number of concepts and relations that require special means for navigation and analysis.
Database technology occupy a place right in the middle between SE and KE. For: first - any knowledge has to be stored in a database, and second - any database application represents some business process. The later usually involves business rules, formats and other constraints on inputs and outputs. This is the place where two different technologies - programming and modeling - meet on equal basis. Unfortunately, they do not naturally complement each other - there is an impedance mismatch between most programming languages and most database management systems, - which is no so easy to overcome. This is why database applications usually are more brittle than other types of software.
OntoBase is designed to overcome the impedance mismatch by incorporating knowledge base (Protégé) inside it as a middle tier. A Web-based database application tipicaly has a "Controller" that coordinates work between user interface ("View") and database ("Model"). In distributed applications there is also a need for mediators between heterogeneous components. To be independent from any particular component - mediator must work inside special container provided by middleware.
OntoBase is a plug-in that turns Protégé into application container that can be easily programmed and connected to different data sources. It allows Protégé to be used as Model and View for simple database applications. OntoBase can also be used as “back end” for Protégé in order to store parts of knowledge base which must be shared with other applications. In its current form OntoBase can be simply “snapped on” any relational database to provide access to data, virtually without any programming. OntoBase automatically generates ontology grounded in database (by means of Protégé API using frames and facets). Generated "ground ontology" can then be used for mapping and transforming data.
We will answer questions via email, fix bugs, and consider new feature requests addressed to support@ontospace.net
License
This code is distributed under the MIT License. We will appreciate appropriate acknowledgement of this effort.
Copyright (c) 2004-2008 Next Generation Software . This code was developed as part of the OntoSpace research project at Next Generation Software. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.