Class SailConnectionWrapper
- java.lang.Object
-
- org.eclipse.rdf4j.sail.helpers.SailConnectionWrapper
-
- All Implemented Interfaces:
AutoCloseable,FederatedServiceResolverClient,ThreadSafetyAware,SailConnection
- Direct Known Subclasses:
NotifyingSailConnectionWrapper,VerySimpleRdfsBackwardsChainingConnection
public class SailConnectionWrapper extends Object implements SailConnection, FederatedServiceResolverClient, ThreadSafetyAware
An implementation of the SailConnection interface that wraps another SailConnection object and forwards any method calls to the wrapped connection.- Author:
- Jeen Broekstra
-
-
Constructor Summary
Constructors Constructor Description SailConnectionWrapper(SailConnection wrappedCon)Creates a new TransactionWrapper object that wraps the supplied connection.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddStatement(Resource subj, IRI pred, Value obj, Resource... contexts)Adds a statement to the store.voidaddStatement(UpdateContext modify, Resource subj, IRI pred, Value obj, Resource... contexts)Adds a statement to the store.voidbegin()Begins a transaction requiringSailConnection.commit()orSailConnection.rollback()to be called to close the transaction.voidbegin(IsolationLevel level)Begins a transaction with the specifiedIsolationLevellevel, requiringSailConnection.commit()orSailConnection.rollback()to be called to close the transaction.voidclear(Resource... contexts)Removes all statements from the specified/all contexts.voidclearNamespaces()Removes all namespace declarations from the repository.voidclose()Closes the connection.voidcommit()Commits any updates that have been performed since the last timeSailConnection.commit()orSailConnection.rollback()was called.voidendUpdate(UpdateContext modify)Indicates that the givenopwill not be used in any call again.CloseableIteration<? extends BindingSet>evaluate(TupleExpr tupleExpr, Dataset dataset, BindingSet bindings, boolean includeInferred)Evaluates the supplied TupleExpr on the data contained in this Sail object, using the (optional) dataset and supplied bindings as input parameters.Explanationexplain(Explanation.Level level, TupleExpr tupleExpr, Dataset dataset, BindingSet bindings, boolean includeInferred, int timeoutSeconds)Explain how the TupleExpr will be (or has been) executed/evaluated by returning a TupleExpr (which may or may not be the provided TupleExpr) that has gone through zero or more of the stages prior to and also including execution as specified by the provided level.voidflush()Flushes any pending updates and notify changes to listeners as appropriate.CloseableIteration<? extends Resource>getContextIDs()Returns the set of all unique context identifiers that are used to store statements.FederatedServiceResolvergetFederatedServiceResolver()Gets theFederatedServiceResolverused by this client.StringgetNamespace(String prefix)Gets the namespace that is associated with the specified prefix, if any.CloseableIteration<? extends Namespace>getNamespaces()Gets the namespaces relevant to the data contained in this Sail object.CloseableIteration<? extends Statement>getStatements(Resource subj, IRI pred, Value obj, boolean includeInferred, Resource... contexts)Gets all statements from the specified contexts that have a specific subject, predicate and/or object.SailConnectiongetWrappedConnection()Gets the connection that is wrapped by this object.booleanhasStatement(Resource subj, IRI pred, Value obj, boolean includeInferred, Resource... contexts)Determines if the store contains any statements from the specified contexts that have a specific subject, predicate and/or object.booleanisActive()Indicates if a transaction is currently active on the connection.booleanisOpen()Checks whether this SailConnection is open.voidprepare()Checks for an error state in the active transaction that would force the transaction to be rolled back.Optional<TupleExpr>prepareQuery(QueryLanguage ql, Query.QueryType type, String query, String baseURI)Allows the SailConnection to bypass the standard query parser and provide its own internalTupleExprimplementation.voidremoveNamespace(String prefix)Removes a namespace declaration by removing the association between a prefix and a namespace name.voidremoveStatement(UpdateContext modify, Resource subj, IRI pred, Value obj, Resource... contexts)Removes all statements matching the specified subject, predicate and object from the repository.voidremoveStatements(Resource subj, IRI pred, Value obj, Resource... contexts)Removes all statements matching the specified subject, predicate and object from the repository.voidrollback()Rolls back the transaction, discarding any uncommitted changes that have been made in this SailConnection.voidsetFederatedServiceResolver(FederatedServiceResolver resolver)Sets theFederatedServiceResolverto use for this client.voidsetNamespace(String prefix, String name)Sets the prefix for a namespace.voidsetTransactionSettings(TransactionSetting... settings)Pass any transaction-specific settings to the SailConnection.longsize(Resource context)longsize(Resource... contexts)Returns the number of (explicit) statements in the store, or in specific contexts.voidstartUpdate(UpdateContext modify)Signals the start of an update operation.booleansupportsConcurrentReads()A class may support concurrent reads from multiple threads against the same object.
-
-
-
Constructor Detail
-
SailConnectionWrapper
public SailConnectionWrapper(SailConnection wrappedCon)
Creates a new TransactionWrapper object that wraps the supplied connection.
-
-
Method Detail
-
getWrappedConnection
public SailConnection getWrappedConnection()
Gets the connection that is wrapped by this object.- Returns:
- The SailConnection object that was supplied to the constructor of this class.
-
setFederatedServiceResolver
public void setFederatedServiceResolver(FederatedServiceResolver resolver)
Description copied from interface:FederatedServiceResolverClientSets theFederatedServiceResolverto use for this client.- Specified by:
setFederatedServiceResolverin interfaceFederatedServiceResolverClient- Parameters:
resolver- The resolver to use.
-
getFederatedServiceResolver
public FederatedServiceResolver getFederatedServiceResolver()
Description copied from interface:FederatedServiceResolverClientGets theFederatedServiceResolverused by this client.- Specified by:
getFederatedServiceResolverin interfaceFederatedServiceResolverClient
-
isOpen
public boolean isOpen() throws SailExceptionDescription copied from interface:SailConnectionChecks whether this SailConnection is open. A SailConnection is open from the moment it is created until it is closed.- Specified by:
isOpenin interfaceSailConnection- Throws:
SailException- See Also:
SailConnection.close()
-
close
public void close() throws SailExceptionDescription copied from interface:SailConnectionCloses the connection. Any updates that haven't been committed yet will be rolled back. The connection can no longer be used once it is closed.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceSailConnection- Throws:
SailException
-
prepareQuery
public Optional<TupleExpr> prepareQuery(QueryLanguage ql, Query.QueryType type, String query, String baseURI)
Description copied from interface:SailConnectionAllows the SailConnection to bypass the standard query parser and provide its own internalTupleExprimplementation. By default this method returns an empty result, signaling that it will rely on the RDF4J query parser.- Specified by:
prepareQueryin interfaceSailConnection- Parameters:
ql- the query language.type- indicates if the supplied query is a graph, tuple, or boolean queryquery- the unparsed query stringbaseURI- the provided base URI. May be null or empty.- Returns:
- an optional TupleExpr that represents a sail-specific version of the query, which
SailConnection.evaluate(org.eclipse.rdf4j.query.algebra.TupleExpr, org.eclipse.rdf4j.query.Dataset, org.eclipse.rdf4j.query.BindingSet, boolean)can process. ReturnsOptional.empty()if the Sail does not provide its own query processing.
-
evaluate
public CloseableIteration<? extends BindingSet> evaluate(TupleExpr tupleExpr, Dataset dataset, BindingSet bindings, boolean includeInferred) throws SailException
Description copied from interface:SailConnectionEvaluates the supplied TupleExpr on the data contained in this Sail object, using the (optional) dataset and supplied bindings as input parameters.- Specified by:
evaluatein interfaceSailConnection- Parameters:
tupleExpr- The tuple expression to evaluate.dataset- The dataset to use for evaluating the query, null to use the Sail's default dataset.bindings- A set of input parameters for the query evaluation. The keys reference variable names that should be bound to the value they map to.includeInferred- Indicates whether inferred triples are to be considered in the query result. If false, no inferred statements are returned; if true, inferred statements are returned if available- Returns:
- The TupleQueryResult.
- Throws:
SailException- If the Sail object encountered an error or unexpected situation internally.
-
getContextIDs
public CloseableIteration<? extends Resource> getContextIDs() throws SailException
Description copied from interface:SailConnectionReturns the set of all unique context identifiers that are used to store statements.- Specified by:
getContextIDsin interfaceSailConnection- Returns:
- An iterator over the context identifiers, should not contain any duplicates.
- Throws:
SailException
-
getStatements
public CloseableIteration<? extends Statement> getStatements(Resource subj, IRI pred, Value obj, boolean includeInferred, Resource... contexts) throws SailException
Description copied from interface:SailConnectionGets all statements from the specified contexts that have a specific subject, predicate and/or object. All three parameters may be null to indicate wildcards. The includeInferred parameter can be used to control which statements are fetched: all statements or only the statements that have been added explicitly.- Specified by:
getStatementsin interfaceSailConnection- Parameters:
subj- A Resource specifying the subject, or null for a wildcard.pred- A URI specifying the predicate, or null for a wildcard.obj- A Value specifying the object, or null for a wildcard.includeInferred- if false, no inferred statements are returned; if true, inferred statements are returned if availablecontexts- The context(s) to get the data from. Note that this parameter is a vararg and as such is optional. If no contexts are specified the method operates on the entire repository. A null value can be used to match context-less statements.- Returns:
- The statements matching the specified pattern.
- Throws:
SailException- If the Sail object encountered an error or unexpected situation internally.
-
hasStatement
public boolean hasStatement(Resource subj, IRI pred, Value obj, boolean includeInferred, Resource... contexts) throws SailException
Description copied from interface:SailConnectionDetermines if the store contains any statements from the specified contexts that have a specific subject, predicate and/or object. All three parameters may be null to indicate wildcards. The includeInferred parameter can be used to control which statements are checked: all statements or only the statements that have been added explicitly.- Specified by:
hasStatementin interfaceSailConnection- Parameters:
subj- A Resource specifying the subject, or null for a wildcard.pred- An IRI specifying the predicate, or null for a wildcard.obj- A Value specifying the object, or null for a wildcard.includeInferred- if false, no inferred statements are returned; if true, inferred statements are returned if availablecontexts- The context(s) to get the data from. Note that this parameter is a vararg and as such is optional. If no contexts are specified the method operates on the entire repository. A null value can be used to match context-less statements.- Returns:
trueiff the store contains any statements matching the supplied criteria,falseotherwise.- Throws:
SailException- If the Sail object encountered an error or unexpected situation internally.
-
size
public long size(Resource... contexts) throws SailException
Description copied from interface:SailConnectionReturns the number of (explicit) statements in the store, or in specific contexts.- Specified by:
sizein interfaceSailConnection- Parameters:
contexts- The context(s) to determine the size of. Note that this parameter is a vararg and as such is optional. If no contexts are specified the method operates on the entire repository. A null value can be used to match context-less statements.- Returns:
- The number of explicit statements in this store, or in the specified context(s).
- Throws:
SailException
-
size
public long size(Resource context) throws SailException
- Throws:
SailException
-
commit
public void commit() throws SailExceptionDescription copied from interface:SailConnectionCommits any updates that have been performed since the last timeSailConnection.commit()orSailConnection.rollback()was called.- Specified by:
commitin interfaceSailConnection- Throws:
UnknownSailTransactionStateException- If the transaction state can not be determined (this can happen for instance when communication between client and server fails or times-out). It does not indicate a problem with the integrity of the store.SailException- If the SailConnection could not be committed.
-
rollback
public void rollback() throws SailExceptionDescription copied from interface:SailConnectionRolls back the transaction, discarding any uncommitted changes that have been made in this SailConnection.- Specified by:
rollbackin interfaceSailConnection- Throws:
UnknownSailTransactionStateException- If the transaction state can not be determined (this can happen for instance when communication between client and server fails or times-out). It does not indicate a problem with the integrity of the store.SailException- If the SailConnection could not be rolled back.
-
addStatement
public void addStatement(Resource subj, IRI pred, Value obj, Resource... contexts) throws SailException
Description copied from interface:SailConnectionAdds a statement to the store.- Specified by:
addStatementin interfaceSailConnection- Parameters:
subj- The subject of the statement to add.pred- The predicate of the statement to add.obj- The object of the statement to add.contexts- The context(s) to add the statement to. Note that this parameter is a vararg and as such is optional. If no contexts are specified, a context-less statement will be added.- Throws:
SailException- If the statement could not be added, for example because no transaction is active.
-
removeStatements
public void removeStatements(Resource subj, IRI pred, Value obj, Resource... contexts) throws SailException
Description copied from interface:SailConnectionRemoves all statements matching the specified subject, predicate and object from the repository. All three parameters may be null to indicate wildcards.- Specified by:
removeStatementsin interfaceSailConnection- Parameters:
subj- The subject of the statement that should be removed, or null to indicate a wildcard.pred- The predicate of the statement that should be removed, or null to indicate a wildcard.obj- The object of the statement that should be removed , or null to indicate a wildcard. *contexts- The context(s) from which to remove the statement. Note that this parameter is a vararg and as such is optional. If no contexts are specified the method operates on the entire repository. A null value can be used to match context-less statements.- Throws:
SailException- If the statement could not be removed, for example because no transaction is active.
-
startUpdate
public void startUpdate(UpdateContext modify) throws SailException
Description copied from interface:SailConnectionSignals the start of an update operation. The givenopmaybe passed to subsequentSailConnection.addStatement(UpdateContext, Resource, IRI, Value, Resource...)orSailConnection.removeStatement(UpdateContext, Resource, IRI, Value, Resource...)calls beforeSailConnection.endUpdate(UpdateContext)is called.- Specified by:
startUpdatein interfaceSailConnection- Throws:
SailException
-
addStatement
public void addStatement(UpdateContext modify, Resource subj, IRI pred, Value obj, Resource... contexts) throws SailException
Description copied from interface:SailConnectionAdds a statement to the store. Called when adding statements through aUpdateExproperation.- Specified by:
addStatementin interfaceSailConnection- Parameters:
modify- operation properties of theUpdateExproperation producing these statements.subj- The subject of the statement to add.pred- The predicate of the statement to add.obj- The object of the statement to add.contexts- The context(s) to add the statement to. Note that this parameter is a vararg and as such is optional. If no contexts are specified, a context-less statement will be added.- Throws:
SailException- If the statement could not be added, for example because no transaction is active.
-
removeStatement
public void removeStatement(UpdateContext modify, Resource subj, IRI pred, Value obj, Resource... contexts) throws SailException
Description copied from interface:SailConnectionRemoves all statements matching the specified subject, predicate and object from the repository. All three parameters may be null to indicate wildcards. Called when removing statements through aUpdateExproperation.- Specified by:
removeStatementin interfaceSailConnection- Parameters:
modify- operation properties of theUpdateExproperation removing these statements.subj- The subject of the statement that should be removed.pred- The predicate of the statement that should be removed.obj- The object of the statement that should be removed.contexts- The context(s) from which to remove the statement. Note that this parameter is a vararg and as such is optional. If no contexts are specified the method operates on the entire repository. A null value can be used to match context-less statements.- Throws:
SailException- If the statement could not be removed, for example because no transaction is active.
-
endUpdate
public void endUpdate(UpdateContext modify) throws SailException
Description copied from interface:SailConnectionIndicates that the givenopwill not be used in any call again. Implementations should use this to flush of any temporary operation states that may have occurred.- Specified by:
endUpdatein interfaceSailConnection- Throws:
SailException
-
clear
public void clear(Resource... contexts) throws SailException
Description copied from interface:SailConnectionRemoves all statements from the specified/all contexts. If no contexts are specified the method operates on the entire repository.- Specified by:
clearin interfaceSailConnection- Parameters:
contexts- The context(s) from which to remove the statements. Note that this parameter is a vararg and as such is optional. If no contexts are specified the method operates on the entire repository. A null value can be used to match context-less statements.- Throws:
SailException- If the statements could not be removed.
-
getNamespaces
public CloseableIteration<? extends Namespace> getNamespaces() throws SailException
Description copied from interface:SailConnectionGets the namespaces relevant to the data contained in this Sail object.- Specified by:
getNamespacesin interfaceSailConnection- Returns:
- An iterator over the relevant namespaces, should not contain any duplicates.
- Throws:
SailException- If the Sail object encountered an error or unexpected situation internally.
-
getNamespace
public String getNamespace(String prefix) throws SailException
Description copied from interface:SailConnectionGets the namespace that is associated with the specified prefix, if any.- Specified by:
getNamespacein interfaceSailConnection- Parameters:
prefix- A namespace prefix, or an empty string in case of the default namespace.- Returns:
- The namespace name that is associated with the specified prefix, or null if there is no such namespace.
- Throws:
SailException- If the Sail object encountered an error or unexpected situation internally.
-
setNamespace
public void setNamespace(String prefix, String name) throws SailException
Description copied from interface:SailConnectionSets the prefix for a namespace.- Specified by:
setNamespacein interfaceSailConnection- Parameters:
prefix- The new prefix, or an empty string in case of the default namespace.name- The namespace name that the prefix maps to.- Throws:
SailException- If the Sail object encountered an error or unexpected situation internally.
-
removeNamespace
public void removeNamespace(String prefix) throws SailException
Description copied from interface:SailConnectionRemoves a namespace declaration by removing the association between a prefix and a namespace name.- Specified by:
removeNamespacein interfaceSailConnection- Parameters:
prefix- The namespace prefix, or an empty string in case of the default namespace.- Throws:
SailException- If the Sail object encountered an error or unexpected situation internally.
-
clearNamespaces
public void clearNamespaces() throws SailExceptionDescription copied from interface:SailConnectionRemoves all namespace declarations from the repository.- Specified by:
clearNamespacesin interfaceSailConnection- Throws:
SailException- If the Sail object encountered an error or unexpected situation internally.
-
explain
public Explanation explain(Explanation.Level level, TupleExpr tupleExpr, Dataset dataset, BindingSet bindings, boolean includeInferred, int timeoutSeconds)
Description copied from interface:SailConnectionExplain how the TupleExpr will be (or has been) executed/evaluated by returning a TupleExpr (which may or may not be the provided TupleExpr) that has gone through zero or more of the stages prior to and also including execution as specified by the provided level.
This method is used by the Query interface.
WARNING: This method is experimental and is subject to change or removal without warning. There is currently only partial support for this method in RDF4J and and UnsupportedOperationException where support is lacking.
- Specified by:
explainin interfaceSailConnection- Parameters:
level- the explanation level, eg. OPTIMIZEDtupleExpr- The tuple expression to evaluate. Mutable.dataset- The dataset to use for evaluating the query, null to use the Sail's default dataset.bindings- A set of input parameters for the query evaluation. The keys reference variable names that should be bound to the value they map to.includeInferred- Indicates whether inferred triples are to be considered in the query result. If false, no inferred statements are returned; if true, inferred statements are returned if availabletimeoutSeconds- for explanations that require execution a timeout can be provided in seconds- Returns:
- The resulting tuple expression after being run through the specified level
-
begin
public void begin() throws SailExceptionDescription copied from interface:SailConnectionBegins a transaction requiringSailConnection.commit()orSailConnection.rollback()to be called to close the transaction. The transaction will use the defaultIsolationLevellevel for the SAIL, as returned bySail.getDefaultIsolationLevel().- Specified by:
beginin interfaceSailConnection- Throws:
SailException- If the connection could not start a transaction or if a transaction is already active on this connection.
-
begin
public void begin(IsolationLevel level) throws SailException
Description copied from interface:SailConnectionBegins a transaction with the specifiedIsolationLevellevel, requiringSailConnection.commit()orSailConnection.rollback()to be called to close the transaction.- Specified by:
beginin interfaceSailConnection- Parameters:
level- the transaction isolation level on which this transaction operates.- Throws:
UnknownSailTransactionStateException- If the IsolationLevel is not supported by this implementationSailException- If the connection could not start a transaction, if the supplied transaction isolation level is not supported, or if a transaction is already active on this connection.
-
setTransactionSettings
public void setTransactionSettings(TransactionSetting... settings)
Description copied from interface:SailConnectionPass any transaction-specific settings to the SailConnection. This method needs to be called before the transaction isstarted.Sail implementations can override this method to receive the transaction settings (to inspect and/or pass them along to any wrapped sail objects). Remember to call
super.setTransactionSettings(settings)if you override this method.- Specified by:
setTransactionSettingsin interfaceSailConnection- Parameters:
settings- the transaction settings on which the next transaction operates. It may or may not contain the isolation level.
-
flush
public void flush() throws SailExceptionDescription copied from interface:SailConnectionFlushes any pending updates and notify changes to listeners as appropriate. This is an optional call; calling or not calling this method should have no effect on the outcome of other calls. This method exists to give the caller more control over the efficiency when callingSailConnection.prepare(). This method may be called multiple times within the same transaction.- Specified by:
flushin interfaceSailConnection- Throws:
SailException- If the updates could not be processed, for example because no transaction is active.
-
prepare
public void prepare() throws SailExceptionDescription copied from interface:SailConnectionChecks for an error state in the active transaction that would force the transaction to be rolled back. This is an optional call; calling or not calling this method should have no effect on the outcome ofSailConnection.commit()orSailConnection.rollback(). A call to this method must be followed by (in the same thread) with a call toSailConnection.prepare(),SailConnection.commit(),SailConnection.rollback(), orSailConnection.close(). This method may be called multiple times within the same transaction by the same thread. If this method returns normally, the caller can reasonably expect that a subsequent call toSailConnection.commit()will also return normally. If this method returns with an exception the caller should treat the exception as if it came from a call toSailConnection.commit().- Specified by:
preparein interfaceSailConnection- Throws:
UnknownSailTransactionStateException- If the transaction state can not be determined (this can happen for instance when communication between client and server fails or times-out). It does not indicate a problem with the integrity of the store.SailException- If there is an active transaction and it cannot be committed.
-
isActive
public boolean isActive() throws UnknownSailTransactionStateExceptionDescription copied from interface:SailConnectionIndicates if a transaction is currently active on the connection. A transaction is active ifSailConnection.begin()has been called, and becomes inactive afterSailConnection.commit()orSailConnection.rollback()has been called.- Specified by:
isActivein interfaceSailConnection- Returns:
trueiff a transaction is active,falseiff no transaction is active.- Throws:
UnknownSailTransactionStateException- if the transaction state can not be determined (this can happen for instance when communication between client and server fails or times out).
-
supportsConcurrentReads
public boolean supportsConcurrentReads()
Description copied from interface:ThreadSafetyAwareA class may support concurrent reads from multiple threads against the same object. This ability may change based on an object's current state.- Specified by:
supportsConcurrentReadsin interfaceThreadSafetyAware- Returns:
- true if this object supports concurrent reads
-
-