Package org.eclipse.rdf4j.sail.base

## Class SailSourceConnection

- java.lang.Object
- - org.eclipse.rdf4j.sail.helpers.AbstractSailConnection
  - - org.eclipse.rdf4j.sail.helpers.AbstractNotifyingSailConnection
    - - org.eclipse.rdf4j.sail.base.SailSourceConnection

- All Implemented Interfaces:
    `AutoCloseable`, `FederatedServiceResolverClient`, `InferencerConnection`, `NotifyingSailConnection`, `SailConnection`
  Direct Known Subclasses:
    `ExtensibleStoreConnection`, `MemoryStoreConnection`, `NativeStoreConnection`

      public abstract class SailSourceConnection
      extends AbstractNotifyingSailConnection
      implements InferencerConnection, FederatedServiceResolverClient

  A `SailConnection` implementation that is based on an `SailStore` .
  Author:
    James Leigh

- - ### Field Summary

    - ### Fields inherited from class org.eclipse.rdf4j.sail.helpers.AbstractSailConnection

      `connectionLock, updateLock`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `SailSourceConnection​(AbstractSail sail, SailStore store, EvaluationStrategyFactory evalStratFactory)` | Creates a new `SailConnection`, using the given `SailStore` to manage the state.
    `protected` | `SailSourceConnection​(AbstractSail sail, SailStore store, FederatedServiceResolver resolver)` | Creates a new `SailConnection`, using the given `SailStore` to manage the state.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `addInferredStatement​(Resource subj, IRI pred, Value obj, Resource... contexts)` | Adds an inferred statement to a specific context.
    `void` | `addStatement​(UpdateContext op, Resource subj, IRI pred, Value obj, Resource... contexts)` | The default implementation buffers added statements until the update operation is complete.
    `void` | `clearInferred​(Resource... contexts)` | Removes all inferred statements from the specified/all contexts.
    `protected void` | `clearInternal​(Resource... contexts)` |
    `protected void` | `clearNamespacesInternal()` |
    `protected void` | `closeInternal()` |
    `protected void` | `commitInternal()` |
    `protected void` | `endUpdateInternal​(UpdateContext op)` |
    `protected CloseableIteration<? extends BindingSet,​QueryEvaluationException>` | `evaluateInternal​(TupleExpr tupleExpr, 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.
    `void` | `flushUpdates()` | Flushes any pending updates to be processed and the resulting changes to be reported to registered `SailConnectionListener`s.
    `protected CloseableIteration<? extends Resource,​SailException>` | `getContextIDsInternal()` |
    `protected EvaluationStrategy` | `getEvaluationStrategy​(Dataset dataset, TripleSource tripleSource)` |
    `FederatedServiceResolver` | `getFederatedServiceResolver()` | Returns the `FederatedServiceResolver` being used.
    `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 void` | `prepareInternal()` |
    `boolean` | `removeInferredStatement​(Resource subj, IRI pred, Value obj, Resource... contexts)` | Removes an inferred statement from a specific context.
    `protected void` | `removeNamespaceInternal​(String prefix)` |
    `void` | `removeStatement​(UpdateContext op, Resource subj, IRI pred, Value obj, Resource... contexts)` | The default implementation buffers removed statements until the update operation is complete.
    `protected void` | `rollbackInternal()` |
    `void` | `setFederatedServiceResolver​(FederatedServiceResolver resolver)` | Sets the `FederatedServiceResolver` to use.
    `protected void` | `setNamespaceInternal​(String prefix, String name)` |
    `protected long` | `sizeInternal​(Resource... contexts)` |
    `protected void` | `startTransactionInternal()` |
    `void` | `startUpdate​(UpdateContext op)` | Signals the start of an update operation.

    - ### Methods inherited from class org.eclipse.rdf4j.sail.helpers.AbstractNotifyingSailConnection

      `addConnectionListener, hasConnectionListeners, notifyStatementAdded, notifyStatementRemoved, removeConnectionListener`

    - ### Methods inherited from class org.eclipse.rdf4j.sail.helpers.AbstractSailConnection

      `addStatement, addStatementInternal, autoStartTransaction, begin, begin, clear, clearNamespaces, close, commit, endUpdate, evaluate, flush, getContextIDs, getExclusiveConnectionLock, getNamespace, getNamespaces, getSharedConnectionLock, getStatements, getTransactionIsolation, getTransactionLock, isActive, isActiveOperation, isOpen, iterationClosed, pendingAdds, pendingRemovals, prepare, registerIteration, removeNamespace, removeStatements, removeStatementsInternal, rollback, setNamespace, size, 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.NotifyingSailConnection

      `addConnectionListener, removeConnectionListener`

    - ### Methods inherited from interface org.eclipse.rdf4j.sail.SailConnection

      `addStatement, begin, begin, clear, clearNamespaces, close, commit, endUpdate, evaluate, flush, getContextIDs, getNamespace, getNamespaces, getStatements, hasStatement, isActive, isOpen, pendingRemovals, prepare, prepareQuery, removeNamespace, removeStatements, rollback, setNamespace, setTransactionSettings, size`

- - ### Constructor Detail

    - #### SailSourceConnection

          protected SailSourceConnection​(AbstractSail sail,
                                         SailStore store,
                                         FederatedServiceResolver resolver)

      Creates a new `SailConnection`, using the given `SailStore` to manage the state.
      Parameters:
        `sail` -
        `store` -
        `resolver` - the FederatedServiceResolver to use with the `default EvaluationStrategy`.

    - #### SailSourceConnection

          protected SailSourceConnection​(AbstractSail sail,
                                         SailStore store,
                                         EvaluationStrategyFactory evalStratFactory)

      Creates a new `SailConnection`, using the given `SailStore` to manage the state.
      Parameters:
        `sail` -
        `store` -
        `evalStratFactory` - the `EvaluationStrategyFactory` to use.

  - ### Method Detail

    - #### getFederatedServiceResolver

          public FederatedServiceResolver getFederatedServiceResolver()

      Returns the `FederatedServiceResolver` being used.
      Returns:
        null if a custom `EvaluationStrategyFactory` is being used.

    - #### setFederatedServiceResolver

          public void setFederatedServiceResolver​(FederatedServiceResolver resolver)

      Sets the `FederatedServiceResolver` to use. If a custom `EvaluationStrategyFactory` is being used then this only has an effect if it implements `FederatedServiceResolverClient`.
      Specified by:
        `setFederatedServiceResolver` in interface `FederatedServiceResolverClient`
      Parameters:
        `resolver` - The resolver to use.

    - #### getEvaluationStrategy

          protected EvaluationStrategy getEvaluationStrategy​(Dataset dataset,
                                                             TripleSource tripleSource)

    - #### evaluateInternal

          protected CloseableIteration<? extends BindingSet,​QueryEvaluationException> evaluateInternal​(TupleExpr tupleExpr,
                                                                                                             Dataset dataset,
                                                                                                             BindingSet bindings,
                                                                                                             boolean includeInferred)
                                                                                                      throws SailException

      Specified by:
        `evaluateInternal` in class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### 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.

      Specified by:
        `explain` in interface `SailConnection`
      Parameters:
        `level` - the explanation level, eg. OPTIMIZED
        `tupleExpr` - 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 available
        `timeoutSeconds` - for explanations that require execution a timeout can be provided in seconds
      Returns:
        The resulting tuple expression after being run through the specified level

    - #### closeInternal

          protected void closeInternal()
                                throws SailException

      Specified by:
        `closeInternal` in class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### getContextIDsInternal

          protected CloseableIteration<? extends Resource,​SailException> getContextIDsInternal()
                                                                                              throws SailException

      Specified by:
        `getContextIDsInternal` in class `AbstractSailConnection`
      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 class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### sizeInternal

          protected long sizeInternal​(Resource... contexts)
                               throws SailException

      Specified by:
        `sizeInternal` in class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### getNamespacesInternal

          protected CloseableIteration<? extends Namespace,​SailException> getNamespacesInternal()
                                                                                               throws SailException

      Specified by:
        `getNamespacesInternal` in class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### getNamespaceInternal

          protected String getNamespaceInternal​(String prefix)
                                         throws SailException

      Specified by:
        `getNamespaceInternal` in class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### startTransactionInternal

          protected void startTransactionInternal()
                                           throws SailException

      Specified by:
        `startTransactionInternal` in class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### prepareInternal

          protected void prepareInternal()
                                  throws SailException

      Overrides:
        `prepareInternal` in class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### commitInternal

          protected void commitInternal()
                                 throws SailException

      Specified by:
        `commitInternal` in class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### rollbackInternal

          protected void rollbackInternal()
                                   throws SailException

      Specified by:
        `rollbackInternal` in class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### startUpdate

          public void startUpdate​(UpdateContext op)
                           throws SailException

      Description copied from interface: `SailConnection`
      Signals the start of an update operation. The given `op` maybe passed to subsequent `SailConnection.addStatement(UpdateContext, Resource, IRI, Value, Resource...)` or `SailConnection.removeStatement(UpdateContext, Resource, IRI, Value, Resource...)` calls before `SailConnection.endUpdate(UpdateContext)` is called.
      Specified by:
        `startUpdate` in interface `SailConnection`
      Overrides:
        `startUpdate` in class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### addStatement

          public void addStatement​(UpdateContext op,
                                   Resource subj,
                                   IRI pred,
                                   Value obj,
                                   Resource... contexts)
                            throws SailException

      Description copied from class: `AbstractSailConnection`
      The default implementation buffers added statements until the update operation is complete.
      Specified by:
        `addStatement` in interface `SailConnection`
      Overrides:
        `addStatement` in class `AbstractSailConnection`
      Parameters:
        `op` - operation properties of the `UpdateExpr` operation 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 op,
                                      Resource subj,
                                      IRI pred,
                                      Value obj,
                                      Resource... contexts)
                               throws SailException

      Description copied from class: `AbstractSailConnection`
      The default implementation buffers removed statements until the update operation is complete.
      Specified by:
        `removeStatement` in interface `SailConnection`
      Overrides:
        `removeStatement` in class `AbstractSailConnection`
      Parameters:
        `op` - operation properties of the `UpdateExpr` operation 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.

    - #### endUpdateInternal

          protected void endUpdateInternal​(UpdateContext op)
                                    throws SailException

      Overrides:
        `endUpdateInternal` in class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### addInferredStatement

          public boolean addInferredStatement​(Resource subj,
                                              IRI pred,
                                              Value obj,
                                              Resource... contexts)
                                       throws SailException

      Description copied from interface: `InferencerConnection`
      Adds an inferred statement to a specific context.
      Specified by:
        `addInferredStatement` in interface `InferencerConnection`
      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 supplied the method operates on the entire repository.
      Throws:
        `SailException` - If the statement could not be added.

    - #### removeInferredStatement

          public boolean removeInferredStatement​(Resource subj,
                                                 IRI pred,
                                                 Value obj,
                                                 Resource... contexts)
                                          throws SailException

      Description copied from interface: `InferencerConnection`
      Removes an inferred statement from a specific context.
      Specified by:
        `removeInferredStatement` in interface `InferencerConnection`
      Parameters:
        `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 statements. Note that this parameter is a vararg and as such is optional. If no contexts are supplied the method operates on the entire repository.
      Throws:
        `SailException` - If the statement could not be removed.

    - #### clearInternal

          protected void clearInternal​(Resource... contexts)
                                throws SailException

      Specified by:
        `clearInternal` in class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### clearInferred

          public void clearInferred​(Resource... contexts)
                             throws SailException

      Description copied from interface: `InferencerConnection`
      Removes all inferred statements from the specified/all contexts. If no contexts are specified the method operates on the entire repository.
      Specified by:
        `clearInferred` in interface `InferencerConnection`
      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 supplied the method operates on the entire repository.
      Throws:
        `SailException` - If the statements could not be removed.

    - #### flushUpdates

          public void flushUpdates()
                            throws SailException

      Description copied from interface: `InferencerConnection`
      Flushes any pending updates to be processed and the resulting changes to be reported to registered `SailConnectionListener`s.
      Specified by:
        `flushUpdates` in interface `InferencerConnection`
      Throws:
        `SailException` - If the updates could not be processed.

    - #### setNamespaceInternal

          protected void setNamespaceInternal​(String prefix,
                                              String name)
                                       throws SailException

      Specified by:
        `setNamespaceInternal` in class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### removeNamespaceInternal

          protected void removeNamespaceInternal​(String prefix)
                                          throws SailException

      Specified by:
        `removeNamespaceInternal` in class `AbstractSailConnection`
      Throws:
        `SailException`

    - #### clearNamespacesInternal

          protected void clearNamespacesInternal()
                                          throws SailException

      Specified by:
        `clearNamespacesInternal` in class `AbstractSailConnection`
      Throws:
        `SailException`