PersistentOntology.java |
/***************************************************************************** * Source code information * ----------------------- * Original author Ian Dickinson, HP Labs Bristol * Author email ian.dickinson@hp.com * Package Jena 2 * Web http://sourceforge.net/projects/jena/ * Created 25-Jul-2003 * Filename $RCSfile: PersistentOntology.java.html,v $ * Revision $Revision: 1.1 $ * Release status $State: Exp $ * * Last modified on $Date: 2003-08-28 13:18:38 $ * by $Author: ian_dickinson $ * *****************************************************************************/ // Package /////////////// // Imports /////////////// import java.util.*; import com.hp.hpl.jena.db.*; import com.hp.hpl.jena.ontology.*; import com.hp.hpl.jena.rdf.model.*; /** * <p> * Simple example of using the persistent db layer with ontology models. Assumes * that a PostgreSQL database called 'jenatest' has been set up, for a user named ijd. * </p> * * @author Ian Dickinson, HP Labs * (<a href="mailto:Ian.Dickinson@hp.com" >email</a>) * @version CVS $Id: PersistentOntology.java.html,v 1.1 2003-08-28 13:18:38 ian_dickinson Exp $ */ public class PersistentOntology { // Constants ////////////////////////////////// public static final String ONT1 = "urn:x-hp-jena:test1"; public static final String ONT2 = "urn:x-hp-jena:test2"; public static final String DB_URL = "jdbc:postgresql://localhost/jenatest"; public static final String DB_USER = "ijd"; public static final String DB_PASSWD = ""; public static final String DB = "PostgreSQL"; // Static variables ////////////////////////////////// // Instance variables ////////////////////////////////// // Constructors ////////////////////////////////// // External signature methods ////////////////////////////////// public static void main( String[] args ) { new PersistentOntology().go( args ); } protected void go( String[] args ) { if (args.length > 0 && args[0].equals( "reload" )) { reloadDB(); } listClasses(); } protected void reloadDB() { ModelMaker maker = getMaker(); // clear out the old if (maker.hasModel( ONT1 )) maker.removeModel( ONT1 ); if (maker.hasModel( ONT2 )) maker.removeModel( ONT2 ); // create a spec for the new ont model OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_MEM_RULE_INF ); spec.setModelMaker( maker ); // create the base model as a persistent model Model base = maker.createModel( ONT1 ); OntModel m = ModelFactory.createOntologyModel( spec, base ); // tell m where to find the content for ont2 m.getDocumentManager().addAltEntry( ONT2, "file:test2.owl" ); // now load the document for test1, which will import ONT2 m.read( "file:test.owl" ); } protected void listClasses() { OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_MEM_RULE_INF ); spec.setModelMaker( getMaker() ); OntModel m = ModelFactory.createOntologyModel( spec, getMaker().createModel( ONT1 ) ); for (Iterator i = m.listClasses(); i.hasNext(); ) { OntClass c = (OntClass) i.next(); System.out.println( "Class " + c.getURI() ); } } protected ModelMaker getMaker() { try { // Load the Driver String className = "org.postgresql.Driver"; Class.forName(className); // Create database connection IDBConnection conn = new DBConnection ( DB_URL, DB_USER, DB_PASSWD, DB ); // Create a model maker object return ModelFactory.createModelRDBMaker(conn); } catch (Exception e) { e.printStackTrace(); System.exit( 1 ); } return null; } // Internal implementation methods ////////////////////////////////// //============================================================================== // Inner class definitions //============================================================================== }