Difference between revisions of "Protege 5 Development Environment"

From Protege Wiki
Jump to: navigation, search
(Introduction)
(Setting Up the Protege 4 Server Development Environment)
Line 37: Line 37:
 
To set up eclipse,  
 
To set up eclipse,  
 
<ol>
 
<ol>
<li> unzip the ide-eclipse.zip file.
+
<li> run "ant install".  This step ensures that the built sources will be included in the
<li> start eclipse using protege.server as the workspace.  
+
    org.protege.owl.server project.</li>
<li>import the projects (File -> Import -> General -> Existing Projects Into Workspace).
+
<li> unzip the ide-eclipse.zip file.</li>
 +
<li> start eclipse using protege.server as the workspace.</li>
 +
<li>import the projects (File -> Import -> General -> Existing Projects Into Workspace).</li>
 
</ol>
 
</ol>
 
This eclipse workspace will come with a couple of runnables:
 
This eclipse workspace will come with a couple of runnables:
 
<ul>
 
<ul>
<li><b>Client</b> starts the Protege OWL Client.
+
<li><b>Client</b> starts the Protege OWL Client.</li>
<li><b>Server</b> starts the Protege OWL Sever
+
<li><b>Server</b> starts the Protege OWL Sever</li>
<li><b>ConnectToAntServer</b> connects to the "ant debug.server" script for debugging.
+
<li><b>ConnectToAntServer</b> connects to the "ant debug.server" script for debugging.</li>
 
</ul>
 
</ul>
  
== Loading the database and installing files ==
 
  
Before you can configure and start the Protege 4 server, you will need to set up a database.  At the current time, only postgres and mysql are supported.  I will assume that you have already installed one of these databases and have created a database for protege 4 use.  Now in the top level directory (where protege.server was checked out) run the ant script ''run.database.manager.
 
 
'''More coming...'''
 
 
== Configuring the server ==
 
 
In Protege, navigate to the Protege distribution and open the owl file ''sample-metaproject.owl''.  Go to the individuals tab, navigate down the class hierarchy from ''Thing->ServerComponent->ServerBackend->DatabaseServerBackend'' and select the individual ''databaseBackend''.  This individual will have three properties that you can configure: '''username''', '''password''' and '''url'''.  These properties tell the server how to access the database.
 
MySQL and PostGreSQL databases should work.  A typical mysql url will look like this: '''jdbc:mysql://localhost/protege4'''.
 
 
If you want to have a better understanding of what you have done, in the individuals tab, navigate down the class hierarchy from ''Thing->PolicyControlledObject->Server->OWL 2 Server''.  There you will see a single individual called sampleServer.  When the Protege server starts up, it sees this individual and uses it as a specification of how to set up a server. In theory there could be multiple servers running in the same jvm but this does not work yet.  This sampleServer individual has three object property values.  These property values specify what server backend should be used, what connection component should be used and what conflict manager should be used.  Currently the only one of these individuals can be further customized (the databaseBackend individual) but this will change in future releases.  The connectionManager individual is a RestfulServicesConnection manager and there is a specification of a port which the connectionManager uses.  This port property is not yet used but it would be the basis for having more than one server running on the same jvm.  The conflictManager individual is of type StrictConflictManager and this is currently the only type that is accepted.  Finally the databaseBackend individual is what needed configuring as described above to complete your setup.
 
 
When the server is run, this process
 
<pre>
 
Attempting to start server using metaproject sample-metaproject.owl
 
Restful Services Server Connection Factory reporting for duty
 
Database Server Factory reporting for duty
 
Trying to configure server <http://protege.org/ontologies/SampleMetaproject.owl#sampleServer>
 
Matched <http://protege.org/ontologies/SampleMetaproject.owl#sampleServer> with server backend (Database Server Factory).
 
Core Conflict Managers Factory reporting for duty
 
Matched <http://protege.org/ontologies/SampleMetaproject.owl#sampleServer> with conflict manager(Core Conflict Managers Factory).
 
</pre>
 
'''More coming...'''
 
  
 
== Connecting to the server programatically ==
 
== Connecting to the server programatically ==
 
We have written a small protege client that accesses the server [http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/protege.client/trunk here].  The code looks like this:
 
<pre>
 
public void connect() {
 
ProtegeOWLOntologyManager manager = ProtegeOWLManager.createOWLOntologyManager();
 
connection = new ServletClientConnection(manager, "localhost:8080");
 
}
 
 
public void run() throws RemoteQueryException, OWLOntologyCreationException {
 
Map<String, ServerOntologyInfo> ontologyInfoMap = connection.getOntologyInfoByShortName(true);
 
ServerOntologyInfo pizzaInfo = ontologyInfoMap.get("pizza");
 
if (pizzaInfo != null) {
 
System.out.println("Ontology found.");
 
int marked = pizzaInfo.getLatestMarkedRevision(null);
 
OWLOntology pizzaOntology = connection.pull(pizzaInfo.getOntologyName(), marked);
 
connection.update(pizzaOntology, null);
 
System.out.println("Ontology has " + pizzaOntology.getAxiomCount() + " axioms.");
 
}
 
}
 
 
/**
 
* @param args
 
*/
 
public static void main(String[] args) throws Exception {
 
Main m = new Main();
 
m.connect();
 
m.run();
 
}
 
</pre>
 

Revision as of 08:39, August 27, 2012

Introduction

This page is now deprecated. But the Protege server is under active development and a new version will be made shortly.


The Protege 4 client server allows multiple Protege 4 clients (such as the desktop application) to browse and edit concurrently an ontology stored on a Protege 4 server.

The Protege 4 client server works in a way similar to SVN (update, commit, resolve conflicts). The conflict resolution mechanism is pluggable. You can read more about the client-server implementation (as a generic OWL-API server) in this paper.

Setting Up the Protege 4 Server Development Environment

The Protege server is going to be released with a version of Protege 4.2 very soon. At that time this page will be divided into instructions for users wanting to try it out and a developer page for developers. Until that time, we will only include the developer page.

Install From Svn

First checkout the development tree

     svn checkout http://smi-protege.stanford.edu/repos/protege/protege4/misc/composite/protege.server

If you are using eclipse this will become your eclipse workspace later.

To configure the server, run ant install. This will build a copy of Protege with the server installed in the directory 'build/Protege'. At this point, you will have some ant targets that can replace some of the steps listed below:

  1. run.client runs the Protege client.
  2. run.database.manager runs the database manager which will allow one to copy owl ontologies into the database. Ontologies in the database will automatically become available on the server
  3. run.server builds and runs the server. As part of this target the install target is also built.
  4. debug.server builds and runs the server with debugging turned on at port 8500.
  5. run.client builds and runs the client. As part of this target the install target is also built.
  6. debug.client builds and runs the client with debugging turned on at port 8501

Setting up Eclipse

To set up eclipse,

  1. run "ant install". This step ensures that the built sources will be included in the org.protege.owl.server project.
  2. unzip the ide-eclipse.zip file.
  3. start eclipse using protege.server as the workspace.
  4. import the projects (File -> Import -> General -> Existing Projects Into Workspace).

This eclipse workspace will come with a couple of runnables:

  • Client starts the Protege OWL Client.
  • Server starts the Protege OWL Sever
  • ConnectToAntServer connects to the "ant debug.server" script for debugging.


Connecting to the server programatically