com.hp.hpl.jena.db
Class ModelRDB

java.lang.Object
  extended bycom.hp.hpl.jena.enhanced.Polymorphic
      extended bycom.hp.hpl.jena.enhanced.EnhGraph
          extended bycom.hp.hpl.jena.rdf.model.impl.ModelCom
              extended bycom.hp.hpl.jena.db.ModelRDB
All Implemented Interfaces:
Model, ModelCon, com.hp.hpl.jena.rdf.model.impl.ModelI, ModelLock, com.hp.hpl.jena.shared.PrefixMapping, RDFReaderF, RDFWriterF

public class ModelRDB
extends com.hp.hpl.jena.rdf.model.impl.ModelCom
implements Model, com.hp.hpl.jena.rdf.model.impl.ModelI

A persistent relational database implemention of the RDF API.

This implementation of the RDF API stores all its data in a relational database.

This is a prototype implementation, and should be considered to be alpha quality code and has not been well tested.

To construct a persistent RDB Model, first load the jdbc connector for your database - in this example, mysql:

Class.forName("com.mysql.jdbc.Driver");

Then create a connection to the database:

IDBConnection conn = new DBConnection("jdbc:mysql://localhost/test", "test", "", "MySQL");

Now, using that connection, you can construct Models in the database:

Model m = ModelRDB.createModel(conn);

Version:
$Revision: 1.6 $
Author:
csayers (based on ModelMem written by bwm and the Jena 1 version of Model RDB by der.)

Nested Class Summary
 
Nested classes inherited from class com.hp.hpl.jena.shared.PrefixMapping
com.hp.hpl.jena.shared.PrefixMapping.Factory, com.hp.hpl.jena.shared.PrefixMapping.IllegalPrefixException, com.hp.hpl.jena.shared.PrefixMapping.JenaLockedException
 
Field Summary
 
Fields inherited from interface com.hp.hpl.jena.shared.PrefixMapping
Standard
 
Fields inherited from interface com.hp.hpl.jena.rdf.model.ModelLock
READ, WRITE
 
Constructor Summary
ModelRDB(GraphPersonality p, GraphRDB graph)
          A model which is stored persistently in a Relational DataBase Most applications should not need to deal directly with Graphs - use ModelRDB.createModel (to create a new model) or ModelRDB.open (to open an exising model).
ModelRDB(IDBConnection dbcon)
          Deprecated. Since Jena 2.0, this call is not recommended - in the short-term use ModelRDB.open or ModelRDB.createModel; in the longer-term use factory methods to construct persistent models.
ModelRDB(IDBConnection dbcon, java.lang.String modelID)
          Deprecated. Since Jena 2.0, this call is not recommended - in the short-term use ModelRDB.open or ModelRDB.createModel; in the longer-term use factory methods to construct persistent models.
 
Method Summary
 void clear()
          Deprecated. Since Jena 2.0 this call is not recommended (it's name is misleading) - to clear an entire database use DBConnection.cleanDB, to remove just this Model use Model.remove().
 void close()
          Close the Model and free up resources held.
static ModelRDB create(IDBConnection dbcon, java.lang.String databaseType)
          Deprecated. Since Jena 2.0 this call is no longer needed - it is preferable to specify the database type when constructing the DBConnection. Then use the call ModelRDB.createModel(IDBConnection)
static ModelRDB create(IDBConnection dbcon, java.lang.String layoutType, java.lang.String databaseType)
          Deprecated. Since Jena 2.0 this call is no longer needed - it is preferable to specify the database type when constructing the DBConnection and to modify the layout by using the properties in the DBConnection. Then use the call ModelRDB.createModel(IDBConnection)
static ModelRDB createModel(IDBConnection dbcon)
          Create a new default model on an existing database.
static ModelRDB createModel(IDBConnection dbcon, Model modelProperties)
          Create a new model on an existing database.
static ModelRDB createModel(IDBConnection dbcon, java.lang.String name)
          Create a new model on an existing database.
static ModelRDB createModel(IDBConnection dbcon, java.lang.String name, Model modelProperties)
          Create a new model on an existing database.
static void deleteModel(IDBConnection dbcon, java.lang.String name)
          Deprecated. Since Jena 2.0, to remove a model use the ModelRDB.remove()
 IDBConnection getConnection()
          A convenience function to return the connection
static Model getDefaultModelProperties(IDBConnection dbcon)
          Retrieve a default set of model customization properties The returned default set of properties is suitable for use in a call to ModelRDB.create(..., modelProperties);
 Model getModelProperties()
          Returns a Jena Model containing model-specific properties.
static ExtendedIterator listModels(IDBConnection dbcon)
          List the names of all models stored in the database
 Model loadAll()
          Deprecated. Since Jena 2.0, this call is not recommended. Instead use the soon-to-be-released bulk-load functions.
static ModelRDB open(IDBConnection dbcon)
          Open the default model from an existing rdf database.
static ModelRDB open(IDBConnection dbcon, java.lang.String name)
          Open an existing rdf database.
 void remove()
          Remove all traces of this particular Model from the database.
 
Methods inherited from class com.hp.hpl.jena.rdf.model.impl.ModelCom
abort, adapt, add, add, add, add, add, add, add, add, add, add, add, add, add, add, add, add, addNamespaces, asFilter, asModel, asNode, asStatement, asStatements, asStatements, asStatements, begin, commit, containerContains, containerIndexOf, containerSize, contains, contains, contains, contains, contains, contains, contains, contains, contains, contains, contains, containsAll, containsAll, containsAny, containsAny, containsResource, createAlt, createAlt, createBag, createBag, createList, createList, createList, createLiteral, createLiteral, createLiteral, createLiteral, createLiteral, createLiteral, createLiteral, createLiteral, createLiteral, createLiteral, createProperty, createProperty, createReifiedStatement, createReifiedStatement, createResource, createResource, createResource, createResource, createResource, createResource, createResource, createSeq, createSeq, createStatement, createStatement, createStatement, createStatement, createStatement, createStatement, createStatement, createStatement, createStatement, createStatement, createStatement, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, difference, enterCriticalSection, executeInTransaction, expandPrefix, findTriplesFrom, getAlt, getAlt, getAnyReifiedStatement, getBag, getBag, getGraph, getHiddenStatements, getModelLock, getNsPrefixMap, getNsPrefixURI, getNsURIPrefix, getProperty, getProperty, getProperty, getRDFNode, getReader, getReader, getResource, getResource, getSeq, getSeq, getWriter, getWriter, independent, intersection, isEmpty, isIsomorphicWith, isReified, leaveCriticalSection, listContainerMembers, listNameSpaces, listObjects, listObjectsOfProperty, listObjectsOfProperty, listReifiedStatements, listReifiedStatements, listStatements, listStatements, listStatements, listStatements, listStatements, listStatements, listStatements, listStatements, listStatements, listStatements, listSubjects, listSubjectsWithProperty, listSubjectsWithProperty, listSubjectsWithProperty, listSubjectsWithProperty, listSubjectsWithProperty, listSubjectsWithProperty, listSubjectsWithProperty, listSubjectsWithProperty, listSubjectsWithProperty, listSubjectsWithProperty, lock, mappy, query, queryBindingsWith, queryHandler, read, read, read, read, read, read, register, remove, remove, remove, remove, remove, removeAllReifications, removeReification, setNsPrefix, setNsPrefixes, setNsPrefixes, setReaderClassName, setWriterClassName, size, supportsSetOperations, supportsTransactions, toString, union, unregister, usePrefix, withHiddenStatements, write, write, write, write, write, write
 
Methods inherited from class com.hp.hpl.jena.enhanced.EnhGraph
asGraph, equals, getNodeAs, getNodeCacheControl, hashCode, isIsomorphicWith, isValid, setNodeCache
 
Methods inherited from class com.hp.hpl.jena.enhanced.Polymorphic
addView, supports
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.hp.hpl.jena.rdf.model.Model
abort, add, add, add, add, add, begin, commit, contains, contains, contains, containsAll, containsAll, containsAny, containsAny, containsResource, createList, createList, createList, createLiteral, createLiteral, createProperty, createReifiedStatement, createReifiedStatement, createResource, createResource, createResource, createStatement, createTypedLiteral, createTypedLiteral, createTypedLiteral, difference, equals, executeInTransaction, getAnyReifiedStatement, getGraph, getModelLock, getProperty, getProperty, getResource, independent, intersection, isEmpty, isIsomorphicWith, isReified, listNameSpaces, listObjects, listObjectsOfProperty, listObjectsOfProperty, listReifiedStatements, listReifiedStatements, listStatements, listStatements, listStatements, listSubjects, listSubjectsWithProperty, listSubjectsWithProperty, query, queryBindingsWith, queryHandler, read, read, read, read, read, read, register, remove, remove, remove, removeAllReifications, removeReification, size, supportsSetOperations, supportsTransactions, union, unregister, write, write, write, write, write, write
 
Methods inherited from interface com.hp.hpl.jena.rdf.model.ModelCon
add, add, add, add, add, add, add, add, add, add, add, contains, contains, contains, contains, contains, contains, contains, contains, createAlt, createAlt, createBag, createBag, createLiteral, createLiteral, createLiteral, createLiteral, createLiteral, createLiteral, createLiteral, createProperty, createResource, createResource, createResource, createResource, createSeq, createSeq, createStatement, createStatement, createStatement, createStatement, createStatement, createStatement, createStatement, createStatement, createStatement, createStatement, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, createTypedLiteral, getAlt, getAlt, getBag, getBag, getProperty, getRDFNode, getResource, getSeq, getSeq, listStatements, listStatements, listStatements, listStatements, listStatements, listStatements, listStatements, listSubjectsWithProperty, listSubjectsWithProperty, listSubjectsWithProperty, listSubjectsWithProperty, listSubjectsWithProperty, listSubjectsWithProperty, listSubjectsWithProperty, listSubjectsWithProperty, remove, remove
 
Methods inherited from interface com.hp.hpl.jena.rdf.model.RDFReaderF
getReader, getReader, setReaderClassName
 
Methods inherited from interface com.hp.hpl.jena.rdf.model.RDFWriterF
getWriter, getWriter, setWriterClassName
 
Methods inherited from interface com.hp.hpl.jena.shared.PrefixMapping
expandPrefix, getNsPrefixMap, getNsPrefixURI, getNsURIPrefix, lock, setNsPrefix, setNsPrefixes, setNsPrefixes, usePrefix
 
Methods inherited from interface com.hp.hpl.jena.rdf.model.ModelLock
enterCriticalSection, leaveCriticalSection
 
Methods inherited from interface com.hp.hpl.jena.rdf.model.impl.ModelI
containerContains, containerIndexOf, containerSize, listContainerMembers
 

Constructor Detail

ModelRDB

public ModelRDB(IDBConnection dbcon)
         throws RDFRDBException
Deprecated. Since Jena 2.0, this call is not recommended - in the short-term use ModelRDB.open or ModelRDB.createModel; in the longer-term use factory methods to construct persistent models.

Construct a model which is stored persistently in a Relational DataBase If a model already exists in the database, then it is opened, otherwise a new model with default name and formatting is inserted and opened.

Parameters:
dbcon - a Connection specifying the database connection

ModelRDB

public ModelRDB(IDBConnection dbcon,
                java.lang.String modelID)
         throws RDFRDBException
Deprecated. Since Jena 2.0, this call is not recommended - in the short-term use ModelRDB.open or ModelRDB.createModel; in the longer-term use factory methods to construct persistent models.

Construct a model which is stored persistently in a Relational DataBase If a model with the specified identifier already exists in the database, then it is opened, otherwise a new model with default formatting is inserted and opened.

Parameters:
dbcon - a Connection specifying the database connection
modelID - is the identifier of an RDF model within the database.

ModelRDB

public ModelRDB(GraphPersonality p,
                GraphRDB graph)
         throws RDFRDBException
A model which is stored persistently in a Relational DataBase Most applications should not need to deal directly with Graphs - use ModelRDB.createModel (to create a new model) or ModelRDB.open (to open an exising model).

Parameters:
p - the GraphPersonality of the resulting Model
graph - a GraphRDB to be exposed through the model interface
Since:
Jena 2.0
Method Detail

open

public static ModelRDB open(IDBConnection dbcon)
                     throws RDFRDBException
Open the default model from an existing rdf database. The layout and datatype type information will be dynamically loaded from the database.

Parameters:
dbcon - an IDBConnection specifying the database connection
Throws:
RDFRDBException

open

public static ModelRDB open(IDBConnection dbcon,
                            java.lang.String name)
                     throws RDFRDBException
Open an existing rdf database. The layout and datatype type information will be dynamically loaded from the database. Will throw an RDFDBException if the database does not seem to formated.

Parameters:
dbcon - a IDBConnection specifying the database connection
name - the name of the RDF model to open
Throws:
RDFRDBException

createModel

public static ModelRDB createModel(IDBConnection dbcon)
                            throws RDFRDBException
Create a new default model on an existing database. Will format the database if it has not already been formatted.

Parameters:
dbcon - a DBConnectionI specifying the database connection
Throws:
RDFRDBException
Since:
Jena 2.0

createModel

public static ModelRDB createModel(IDBConnection dbcon,
                                   Model modelProperties)
                            throws RDFRDBException
Create a new model on an existing database. Will format the database if it has not already been formatted. Use the properties to optionally customize the model - this won't change the results you see when using the model interface, but it may alter the speed with which you get them or the space required by the underlying database. The properties must form a complete and consistent set. The easist way to get a complete and consistent set is to call getDefaultModelProperties, modify it, and then use that as an argument in the call.

Parameters:
dbcon - a DBConnectionI specifying the database connection
modelProperties - a Model containing customization properties
Throws:
RDFRDBException
Since:
Jena 2.0

createModel

public static ModelRDB createModel(IDBConnection dbcon,
                                   java.lang.String name)
                            throws RDFRDBException
Create a new model on an existing database. Will format the database if it has not already been formatted.

Parameters:
dbcon - a DBConnectionI specifying the database connection
name - the name to give the newly created model
Throws:
RDFRDBException

createModel

public static ModelRDB createModel(IDBConnection dbcon,
                                   java.lang.String name,
                                   Model modelProperties)
                            throws RDFRDBException
Create a new model on an existing database. Will format the database if it has not already been formatted. Use the properties to optionally customize the model - this won't change the results you see when using the model interface, but it may alter the speed with which you get them or the space required by the underlying database. The properties must form a complete and consistent set. The easist way to get a complete and consistent set is to call getDefaultModelProperties, modify it, and then use that as an argument in the call.

Parameters:
dbcon - a DBConnectionI specifying the database connection
name - the name to give the newly created model
modelProperties - a Model containing customization properties
Throws:
RDFRDBException
Since:
Jena 2.0

create

public static ModelRDB create(IDBConnection dbcon,
                              java.lang.String layoutType,
                              java.lang.String databaseType)
                       throws RDFRDBException
Deprecated. Since Jena 2.0 this call is no longer needed - it is preferable to specify the database type when constructing the DBConnection and to modify the layout by using the properties in the DBConnection. Then use the call ModelRDB.createModel(IDBConnection)

Create a new database suitable for storing RDF data. In fact the database has to exist since jdbc can't create an empty database from a vacuum but it can be empty and this call will format it with appropriate tables and stored procedures.

The appropriate RDF-RDB driver to use is assumed to be the class Driver. If that can't be found it defaults to looking for a property file in /etc/Driver.config and uses that to determine the driver class and parameters.

Parameters:
dbcon - a DBConnectionI specifying the database connection
layoutType - the name of the layout style to use. Currently one of: "Generic", "Hash", "MMGeneric", "MMHash", "Proc", "ThinProc".
databaseType - the name of the database type. Currently one of: "Interbase" "Postgresql" "Mysql" "Oracle". This may seem a little redundant given that the jdbc uri implicitly contains this information but there is no standard way of extracting this (esp. if the user connects via a bridge).
Throws:
RDFRDBException

create

public static ModelRDB create(IDBConnection dbcon,
                              java.lang.String databaseType)
                       throws RDFRDBException
Deprecated. Since Jena 2.0 this call is no longer needed - it is preferable to specify the database type when constructing the DBConnection. Then use the call ModelRDB.createModel(IDBConnection)

Create a new database suitable for storing RDF data. In fact the database has to exist since jdbc can't create an empty database from a vacuum but it can be empty and this call will format it with appropriate tables and stored procedures.

Uses a default layout format which is able to support multiple models in a single database.

Parameters:
dbcon - a DBConnectionI specifying the database connection
databaseType - the name of the database type. Currently one of: "Interbase" "Postgresql" "Mysql" "Oracle". This may seem a little redundant given that the jdbc uri implicitly contains this information but there is no standard way of extracting this (esp. if the user connects via a bridge).
Throws:
RDFRDBException

getModelProperties

public Model getModelProperties()
Returns a Jena Model containing model-specific properties. These describe the optimization/layout for this model in the database. The returned Model is a copy, modifying it will have no immediate effect on the database.

Since:
Jena 2.0

getDefaultModelProperties

public static Model getDefaultModelProperties(IDBConnection dbcon)
Retrieve a default set of model customization properties The returned default set of properties is suitable for use in a call to ModelRDB.create(..., modelProperties);

Parameters:
dbcon - a DBConnectionI specifying the database connection
Returns:
Model containing default properties

listModels

public static ExtendedIterator listModels(IDBConnection dbcon)
                                   throws RDFRDBException
List the names of all models stored in the database

Throws:
RDFRDBException

close

public void close()
Close the Model and free up resources held.

Not all implementations of Model require this method to be called. But some do, so in general its best to call it when done with the object, rather than leave it to the finalizer.

Specified by:
close in interface Model

remove

public void remove()
            throws RDFRDBException
Remove all traces of this particular Model from the database.

Throws:
RDFRDBException

getConnection

public IDBConnection getConnection()
A convenience function to return the connection


clear

public void clear()
           throws RDFRDBException
Deprecated. Since Jena 2.0 this call is not recommended (it's name is misleading) - to clear an entire database use DBConnection.cleanDB, to remove just this Model use Model.remove().

Remove all the statements from the database which are associated with just this model. This no longer reformats the database (which makes it safer and useful for multi-model databases) but means that it is not guaranteed to garbage collect the resource table.

Throws:
RDFRDBException

deleteModel

public static void deleteModel(IDBConnection dbcon,
                               java.lang.String name)
                        throws RDFRDBException
Deprecated. Since Jena 2.0, to remove a model use the ModelRDB.remove()

Remove a named model from an existing multi-model database. Will throw an RDFDBException if the database layout does not support multiple models or if the database does not seem to formated.

Parameters:
dbcon - a DBConnectionI specifying the database connection
name - the name to give the newly created model
Throws:
RDFRDBException

loadAll

public Model loadAll()
Deprecated. Since Jena 2.0, this call is not recommended. Instead use the soon-to-be-released bulk-load functions.

Loads all the statements for this model into an in-memory model.

Returns:
a ModelMem containing the whole of the RDB model


Copyright © 2001-2003 Hewlett-Packard. All Rights Reserved.