com.hp.hpl.jena.db
Class GraphRDB

java.lang.Object
  extended bycom.hp.hpl.jena.graph.impl.GraphBase
      extended bycom.hp.hpl.jena.db.GraphRDB
All Implemented Interfaces:
Graph

public class GraphRDB
extends com.hp.hpl.jena.graph.impl.GraphBase
implements Graph

GraphRDB implementation This graph stores data persistently in a relational database. Most application developers should not need to interact directly with GraphRDB, instead use ModelRDB. Each GraphRDB keeps a list of specialized graphs. For each operation, it works through the list of graphs attempting to perform the operation on each one. The intention is that each type of specialized graph is optimized for a different type of triple. For example, one type of specialied graph might be optimized for storing triples in a particular ontology. The last specialized graph in the list is always a generic one that can handle any valid RDF triple. The order of the specialied graphs is consistent and immutable after the graph is constructed. This aids optimization. For example, if a specialied graph is asked to perform an operatin on a triple, and it knows that it would have added it if asked, then it can advise the calling GraphRDB that the operaton is complete even though it doesn't know anything about other specialized graphs later in the list.

Since:
Jena 2.0
Version:
$Revision: 1.20 $
Author:
csayers (based in part on GraphMem by bwm).

Field Summary
static java.lang.String DEFAULT
           
static int OPTIMIZE_ALL_REIFICATIONS_AND_HIDE_NOTHING
          Optimize all triples representing part or all of a reified statement.
static int OPTIMIZE_AND_HIDE_FULL_AND_PARTIAL_REIFICATIONS
          Optimize and hide any triples representing part or all of a reified statement.
static int OPTIMIZE_AND_HIDE_ONLY_FULL_REIFICATIONS
          Optimize and hide only fully reified statements added via the Reifier interface.
 
Fields inherited from interface com.hp.hpl.jena.graph.Graph
ADD, DELETE, ORDERED, SIZE
 
Constructor Summary
GraphRDB(IDBConnection con, java.lang.String graphID, Graph requestedProperties, boolean isNew)
          Deprecated. Please use the alernate constructor and explicely choose the desired reification behaviour.
GraphRDB(IDBConnection con, java.lang.String graphID, Graph requestedProperties, int reificationBehaviour, boolean isNew)
          Construct a new GraphRDB
 
Method Summary
 void add(java.util.List triples)
          Add a list of triples.
 void close()
          Free all resources, any further use of this Graph is an error.
 boolean contains(Node s, Node p, Node o)
          Answer true iff the graph contains a triple matching (s, p, o).
 boolean contains(Triple t)
          Answer true iff the graph contains a triple that t matches; t may be fluid.
 void delete(java.util.List triples)
          Delete a list of triples.
 ExtendedIterator find(TripleMatch m)
          Returns an iterator over all the Triples that match the triple pattern.
 BulkUpdateHandler getBulkUpdateHandler()
          returns this Graph's bulk-update handler
 IDBConnection getConnection()
          Return the connection
 Node getNode()
          Returns the Node for this model in the system properties graph.
 com.hp.hpl.jena.shared.PrefixMapping getPrefixMapping()
          returns this Graph's prefix mapping.
 ExtendedIterator getPropertyTriples()
          Returns triples that describe this graph in the system properties graph.
 Reifier getReifier()
          returns this Graph's reifier.
 TransactionHandler getTransactionHandler()
          returns this Graph's transaction handler
 void performAdd(Triple t)
           
 void performDelete(Triple t)
           
 void remove()
          Remove this Graph entirely from the database.
 int size()
           
 
Methods inherited from class com.hp.hpl.jena.graph.impl.GraphBase
add, capabilities, delete, dependsOn, find, getCapabilities, getEventManager, isIsomorphicWith, notifyAdd, notifyDelete, queryHandler, toString, withReification
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.hp.hpl.jena.graph.Graph
add, capabilities, delete, dependsOn, find, getCapabilities, getEventManager, isIsomorphicWith, queryHandler
 

Field Detail

DEFAULT

public static final java.lang.String DEFAULT
See Also:
Constant Field Values

OPTIMIZE_ALL_REIFICATIONS_AND_HIDE_NOTHING

public static final int OPTIMIZE_ALL_REIFICATIONS_AND_HIDE_NOTHING
Optimize all triples representing part or all of a reified statement.

For common cases, where Graphs either contain mostly reified triples, or mostly non-reified triples, this is the best choice. It optimizes all reified triples regardless of how they are added to the graph, provides a simple interface, and is quite efficient.

With this choice, if you do add(A) then contains(A) will return true for all A.

See Also:
Constant Field Values

OPTIMIZE_AND_HIDE_FULL_AND_PARTIAL_REIFICATIONS

public static final int OPTIMIZE_AND_HIDE_FULL_AND_PARTIAL_REIFICATIONS
Optimize and hide any triples representing part or all of a reified statement. (regardless of whether added by add(Triple) or using the Reifier interface).

If you store a mix of reified and non-reified statments within a single graph and you wish to query only non-reified statements, then this is more efficient than the other options. However, it can cause unexpected behaviour, for example, if you do: add(new Triple( s, RDF.predicate, o)) then that triple will be hidden and a subsequent call to contains, find, or size will not show it's presence. The only way to see that statement is to use Reifier.getHiddenTriples.

See Also:
Constant Field Values

OPTIMIZE_AND_HIDE_ONLY_FULL_REIFICATIONS

public static final int OPTIMIZE_AND_HIDE_ONLY_FULL_REIFICATIONS
Optimize and hide only fully reified statements added via the Reifier interface.

This treats triples added through the Reifier interface as distinct from those added using the normal Graph.add function. Those added via the reifier interface will be optimized and hidden from view. Those added via Graph.add will not be optimized and will be visible.

Since many of the techniques for adding triple to Graphs use Graph.add, and that is never optimized, this is not usually a good choice. It is included for backward compability with Jena 1.

See Also:
Constant Field Values
Constructor Detail

GraphRDB

public GraphRDB(IDBConnection con,
                java.lang.String graphID,
                Graph requestedProperties,
                boolean isNew)
Deprecated. Please use the alernate constructor and explicely choose the desired reification behaviour.

Construct a new GraphRDB

Parameters:
con - an open connection to the database
graphID - is the name of a graph or GraphRDB.DEFAULT
requestedProperties - a set of default properties. (May be null, if non-null should be a superset of the properties obtained by calling ModelRDB.getDefaultModelProperties ).
isNew - is true if the graph doesn't already exist and false otherwise. (If unsure, test for existance by using IDBConnection.containsGraph ).

GraphRDB

public GraphRDB(IDBConnection con,
                java.lang.String graphID,
                Graph requestedProperties,
                int reificationBehaviour,
                boolean isNew)
Construct a new GraphRDB

Parameters:
con - an open connection to the database
graphID - is the name of a graph or GraphRDB.DEFAULT
requestedProperties - a set of default properties. (May be null, if non-null should be a superset of the properties obtained by calling ModelRDB.getDefaultModelProperties ).
reificationBehaviour - specifies how this graph should handle reified triples. The options are OPTIMIZE_AND_HIDE_FULL_AND_PARTIAL_REIFICATIONS, OPTIMIZE_AND_HIDE_ONLY_FULL_REIFICATIONS or OPTIMIZE_ALL_REIFICATIONS_AND_HIDE_NOTHING.
isNew - is true if the graph doesn't already exist and false otherwise. (If unsure, test for existance by using IDBConnection.containsGraph ).
Method Detail

getNode

public Node getNode()
Returns the Node for this model in the system properties graph. The properties of each GraphRDB (things like how it is stored in the database) are themelves stored in a system Graph. This function returns the Node which represents this GraphRDB in the system Graph.

Since:
Jena 2.0

getPropertyTriples

public ExtendedIterator getPropertyTriples()
Returns triples that describe this graph in the system properties graph. The properties of each GraphRDB (things like how it is stored in the database) are stored as triples in a system Graph. This function returns those triples.

Since:
Jena 2.0

performAdd

public void performAdd(Triple t)

add

public void add(java.util.List triples)
Add a list of triples.

Parameters:
triples - List to be added. This is unchanged by the call

performDelete

public void performDelete(Triple t)

delete

public void delete(java.util.List triples)
Delete a list of triples.

Parameters:
triples - List to be deleted. This is unchanged by the call.

size

public int size()
Specified by:
size in interface Graph
See Also:
Graph.size()

contains

public boolean contains(Triple t)
Description copied from interface: Graph
Answer true iff the graph contains a triple that t matches; t may be fluid.

Specified by:
contains in interface Graph

contains

public boolean contains(Node s,
                        Node p,
                        Node o)
Description copied from interface: Graph
Answer true iff the graph contains a triple matching (s, p, o). s/p/o may be concrete or fluid. Equivalent to find(s,p,o).hasNext, but an implementation is expected to optimise this in easy cases.

Specified by:
contains in interface Graph

find

public ExtendedIterator find(TripleMatch m)
Description copied from interface: Graph
Returns an iterator over all the Triples that match the triple pattern.

Specified by:
find in interface Graph
See Also:
Graph.find(TripleMatch)

getBulkUpdateHandler

public BulkUpdateHandler getBulkUpdateHandler()
Description copied from interface: Graph
returns this Graph's bulk-update handler

Specified by:
getBulkUpdateHandler in interface Graph

getReifier

public Reifier getReifier()
Description copied from interface: Graph
returns this Graph's reifier. Each call on a given Graph gets the same Reifier object.

Specified by:
getReifier in interface Graph

getPrefixMapping

public com.hp.hpl.jena.shared.PrefixMapping getPrefixMapping()
Description copied from interface: Graph
returns this Graph's prefix mapping. Each call on a given Graph gets the same PrefixMapping object, which is the one used by the Graph.

Specified by:
getPrefixMapping in interface Graph

getTransactionHandler

public TransactionHandler getTransactionHandler()
Description copied from interface: Graph
returns this Graph's transaction handler

Specified by:
getTransactionHandler in interface Graph

close

public void close()
Description copied from interface: Graph
Free all resources, any further use of this Graph is an error.

Specified by:
close in interface Graph
See Also:
Graph.close()

remove

public void remove()
Remove this Graph entirely from the database. This operation is unique to GraphRDB - it removes all mention of this graph from the database - after removing a graph it is recommended to immediately call close() (there is no other useful operation that may be performed, and so no reason to keep the Graph around).


getConnection

public IDBConnection getConnection()
Return the connection

Returns:
IDBConnection for the database on which this graph is stored. Returns null if the connection has not yet been estabilished.


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