Class FedXConnection
- java.lang.Object
-
- org.eclipse.rdf4j.sail.helpers.AbstractSailConnection
-
- org.eclipse.rdf4j.federated.FedXConnection
-
- All Implemented Interfaces:
AutoCloseable
,SailConnection
public class FedXConnection extends AbstractSailConnection
An implementation of RepositoryConnection that usesFederationEvalStrategy
to evaluate provided queries. Prior to evaluation various optimizations are performed, seeFedXOptimizer
for further details.Since 4.0 FedX supports write operations using the supplied
WriteStrategy
, e.g. by writing to a designated federation member. Note: theWriteStrategy
is initialized lazily upon first access to a write operation, seegetWriteStrategyInternal()
.Implementation notes: - not all methods are implemented as of now
- Author:
- Andreas Schwarte
- See Also:
FederationEvalStrategy
,WriteStrategy
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
FedXConnection.SailBaseDefaultImpl
A default implementation forAbstractSail
.
-
Field Summary
Fields Modifier and Type Field Description protected FedX
federation
protected FederationContext
federationContext
-
Fields inherited from class org.eclipse.rdf4j.sail.helpers.AbstractSailConnection
connectionLock, updateLock, useConnectionLock
-
-
Constructor Summary
Constructors Constructor Description FedXConnection(FedX federation, FederationContext federationContext)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addStatementInternal(Resource subj, IRI pred, Value obj, Resource... contexts)
protected void
clearInternal(Resource... contexts)
protected void
clearNamespacesInternal()
protected void
closeInternal()
protected void
commitInternal()
protected CloseableIteration<? extends BindingSet,QueryEvaluationException>
evaluateInternal(TupleExpr query, Dataset dataset, BindingSet bindings, boolean includeInferred)
Explanation
explain(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.protected CloseableIteration<? extends Resource,SailException>
getContextIDsInternal()
protected String
getNamespaceInternal(String prefix)
protected CloseableIteration<? extends Namespace,SailException>
getNamespacesInternal()
protected CloseableIteration<? extends Statement,SailException>
getStatementsInternal(Resource subj, IRI pred, Value obj, boolean includeInferred, Resource... contexts)
protected WriteStrategy
getWriteStrategyInternal()
Return the initializedwriteStrategy
.boolean
pendingRemovals()
Indicates if the Sail has any statement removal operations pending (not yetflushed
) for the current transaction.protected void
removeNamespaceInternal(String prefix)
protected void
removeStatementsInternal(Resource subj, IRI pred, Value obj, Resource... contexts)
protected void
rollbackInternal()
protected void
setNamespaceInternal(String prefix, String name)
void
setTransactionSettings(TransactionSetting... settings)
Pass any transaction-specific settings to the SailConnection.protected long
sizeInternal(Resource... contexts)
protected void
startTransactionInternal()
-
Methods inherited from class org.eclipse.rdf4j.sail.helpers.AbstractSailConnection
addStatement, addStatement, autoStartTransaction, begin, begin, clear, clearNamespaces, close, commit, endUpdate, endUpdateInternal, evaluate, flush, getContextIDs, getExclusiveConnectionLock, getNamespace, getNamespaces, getSailBase, getSharedConnectionLock, getStatements, getTransactionIsolation, getTransactionLock, hasStatement, hasStatementInternal, isActive, isActiveOperation, isOpen, iterationClosed, pendingAdds, prepare, prepareInternal, registerIteration, removeNamespace, removeStatement, removeStatements, rollback, setNamespace, setStatementsAdded, setStatementsRemoved, size, startUpdate, transactionActive, verifyIsActive, verifyIsOpen
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.eclipse.rdf4j.sail.SailConnection
prepareQuery
-
-
-
-
Field Detail
-
federation
protected final FedX federation
-
federationContext
protected final FederationContext federationContext
-
-
Constructor Detail
-
FedXConnection
public FedXConnection(FedX federation, FederationContext federationContext) throws SailException
- Throws:
SailException
-
-
Method Detail
-
setTransactionSettings
public void setTransactionSettings(TransactionSetting... settings)
Description copied from interface:SailConnection
Pass 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.- Parameters:
settings
- the transaction settings on which the next transaction operates. It may or may not contain the isolation level.
-
evaluateInternal
protected CloseableIteration<? extends BindingSet,QueryEvaluationException> evaluateInternal(TupleExpr query, Dataset dataset, BindingSet bindings, boolean includeInferred) throws SailException
- Specified by:
evaluateInternal
in classAbstractSailConnection
- Throws:
SailException
-
clearInternal
protected void clearInternal(Resource... contexts) throws SailException
- Specified by:
clearInternal
in classAbstractSailConnection
- Throws:
SailException
-
clearNamespacesInternal
protected void clearNamespacesInternal() throws SailException
- Specified by:
clearNamespacesInternal
in classAbstractSailConnection
- Throws:
SailException
-
closeInternal
protected void closeInternal() throws SailException
- Specified by:
closeInternal
in classAbstractSailConnection
- Throws:
SailException
-
commitInternal
protected void commitInternal() throws SailException
- Specified by:
commitInternal
in classAbstractSailConnection
- Throws:
SailException
-
getContextIDsInternal
protected CloseableIteration<? extends Resource,SailException> getContextIDsInternal() throws SailException
- Specified by:
getContextIDsInternal
in classAbstractSailConnection
- Throws:
SailException
-
getNamespaceInternal
protected String getNamespaceInternal(String prefix) throws SailException
- Specified by:
getNamespaceInternal
in classAbstractSailConnection
- Throws:
SailException
-
getNamespacesInternal
protected CloseableIteration<? extends Namespace,SailException> getNamespacesInternal() throws SailException
- Specified by:
getNamespacesInternal
in classAbstractSailConnection
- Throws:
SailException
-
getStatementsInternal
protected CloseableIteration<? extends Statement,SailException> getStatementsInternal(Resource subj, IRI pred, Value obj, boolean includeInferred, Resource... contexts) throws SailException
- Specified by:
getStatementsInternal
in classAbstractSailConnection
- Throws:
SailException
-
addStatementInternal
protected void addStatementInternal(Resource subj, IRI pred, Value obj, Resource... contexts) throws SailException
- Specified by:
addStatementInternal
in classAbstractSailConnection
- Throws:
SailException
-
removeNamespaceInternal
protected void removeNamespaceInternal(String prefix) throws SailException
- Specified by:
removeNamespaceInternal
in classAbstractSailConnection
- Throws:
SailException
-
removeStatementsInternal
protected void removeStatementsInternal(Resource subj, IRI pred, Value obj, Resource... contexts) throws SailException
- Specified by:
removeStatementsInternal
in classAbstractSailConnection
- Throws:
SailException
-
rollbackInternal
protected void rollbackInternal() throws SailException
- Specified by:
rollbackInternal
in classAbstractSailConnection
- Throws:
SailException
-
setNamespaceInternal
protected void setNamespaceInternal(String prefix, String name) throws SailException
- Specified by:
setNamespaceInternal
in classAbstractSailConnection
- Throws:
SailException
-
sizeInternal
protected long sizeInternal(Resource... contexts) throws SailException
- Specified by:
sizeInternal
in classAbstractSailConnection
- Throws:
SailException
-
startTransactionInternal
protected void startTransactionInternal() throws SailException
- Specified by:
startTransactionInternal
in classAbstractSailConnection
- Throws:
SailException
-
getWriteStrategyInternal
protected WriteStrategy getWriteStrategyInternal() throws SailException
Return the initializedwriteStrategy
. If this has not been done yet,WriteStrategy#initialize()
is returned. This method guarantees lazy initialization upon the first write operation on thisFedXConnection
instance.- Returns:
- the
WriteStrategy
- Throws:
SailException
-
pendingRemovals
public boolean pendingRemovals()
Description copied from interface:SailConnection
Indicates if the Sail has any statement removal operations pending (not yetflushed
) for the current transaction.- Specified by:
pendingRemovals
in interfaceSailConnection
- Overrides:
pendingRemovals
in classAbstractSailConnection
- Returns:
- true if any statement removal operations have not yet been flushed, false otherwise.
- See Also:
SailConnection.flush()
-
explain
public Explanation explain(Explanation.Level level, TupleExpr tupleExpr, Dataset dataset, BindingSet bindings, boolean includeInferred, int timeoutSeconds)
Description copied from interface:SailConnection
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.
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.
- 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
-
-