Package org.eclipse.rdf4j.repository.sail

## Class SailRepository

- java.lang.Object
- - org.eclipse.rdf4j.repository.base.AbstractRepository
  - - org.eclipse.rdf4j.repository.sail.SailRepository

- All Implemented Interfaces:
    `HttpClientDependent`, `SessionManagerDependent`, `FederatedServiceResolverClient`, `Repository`, `RepositoryResolverClient`
  Direct Known Subclasses:
    `FedXRepository`

      public class SailRepository
      extends AbstractRepository
      implements FederatedServiceResolverClient, RepositoryResolverClient, HttpClientDependent, SessionManagerDependent

  An implementation of the `Repository` interface that operates on a (stack of) `Sail` object(s). The behaviour of the repository is determined by the Sail stack that it operates on; for example, the repository will only support RDF Schema or OWL semantics if the Sail stack includes an inferencer for this.

  Creating a repository object of this type is very easy. For example, the following code creates and initializes a main-memory store with RDF Schema semantics:

       Repository repository = new SailRepository(new ForwardChainingRDFSInferencer(new MemoryStore()));
       repository.initialize();

  Or, alternatively:

       Sail sailStack = new MemoryStore();
       sailStack = new ForwardChainingRDFSInferencer(sailStack);

       Repository repository = new SailRepository(sailStack);
       repository.initialize();

  Author:
    Arjohn Kampman

- - ### Field Summary

    - ### Fields inherited from class org.eclipse.rdf4j.repository.base.AbstractRepository

      `logger`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SailRepository​(Sail sail)` | Creates a new repository object that operates on the supplied Sail.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `SailRepositoryConnection` | `getConnection()` | Opens a connection to this repository that can be used for querying and updating the contents of the repository.
    `File` | `getDataDir()` | Get the directory where data and logging for this repository is stored.
    `org.apache.http.client.HttpClient` | `getHttpClient()` | `HttpClient` that has been assigned or has been used by this object.
    `HttpClientSessionManager` | `getHttpClientSessionManager()` | `HttpClientSessionManager` that has been assigned or has been used by this object.
    `Sail` | `getSail()` | Gets the Sail object that is on top of the Sail stack that this repository operates on.
    `ValueFactory` | `getValueFactory()` | Gets a ValueFactory for this Repository.
    `protected void` | `initializeInternal()` |
    `boolean` | `isWritable()` | Checks whether this repository is writable, i.e.
    `void` | `setDataDir​(File dataDir)` | Set the directory where data and logging for this repository is stored.
    `void` | `setFederatedServiceResolver​(FederatedServiceResolver resolver)` | Sets the `FederatedServiceResolver` to use for this client.
    `void` | `setHttpClient​(org.apache.http.client.HttpClient client)` | Assign an `HttpClient` that this object should use.
    `void` | `setHttpClientSessionManager​(HttpClientSessionManager client)` | Assign an `HttpClientSessionManager` that this object should use.
    `void` | `setRepositoryResolver​(RepositoryResolver resolver)` |
    `protected void` | `shutDownInternal()` |
    `String` | `toString()` |

    - ### Methods inherited from class org.eclipse.rdf4j.repository.base.AbstractRepository

      `init, isInitialized, shutDown`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### SailRepository

          public SailRepository​(Sail sail)

      Creates a new repository object that operates on the supplied Sail.
      Parameters:
        `sail` - A Sail object.

  - ### Method Detail

    - #### getDataDir

          public File getDataDir()

      Description copied from interface: `Repository`
      Get the directory where data and logging for this repository is stored.
      Specified by:
        `getDataDir` in interface `Repository`
      Returns:
        the directory where data for this repository is stored.

    - #### setDataDir

          public void setDataDir​(File dataDir)

      Description copied from interface: `Repository`
      Set the directory where data and logging for this repository is stored.
      Specified by:
        `setDataDir` in interface `Repository`
      Parameters:
        `dataDir` - the directory where data for this repository is stored

    - #### setFederatedServiceResolver

          public void setFederatedServiceResolver​(FederatedServiceResolver resolver)

      Description copied from interface: `FederatedServiceResolverClient`
      Sets the `FederatedServiceResolver` to use for this client.
      Specified by:
        `setFederatedServiceResolver` in interface `FederatedServiceResolverClient`
      Parameters:
        `resolver` - The resolver to use.

    - #### setRepositoryResolver

          public void setRepositoryResolver​(RepositoryResolver resolver)

      Specified by:
        `setRepositoryResolver` in interface `RepositoryResolverClient`

    - #### getHttpClientSessionManager

          public HttpClientSessionManager getHttpClientSessionManager()

      Description copied from interface: `SessionManagerDependent`
      `HttpClientSessionManager` that has been assigned or has been used by this object. The life cycle might not be or might be tied to this object, depending on whether `HttpClientSessionManager` was passed to or created by this object respectively.
      Specified by:
        `getHttpClientSessionManager` in interface `SessionManagerDependent`
      Returns:
        a `HttpClientSessionManager` instance or null

    - #### setHttpClientSessionManager

          public void setHttpClientSessionManager​(HttpClientSessionManager client)

      Description copied from interface: `SessionManagerDependent`
      Assign an `HttpClientSessionManager` that this object should use. The life cycle of the given `HttpClientSessionManager` is independent of this object. Closing or shutting down this object does not have any impact on the given client. Callers must ensure that the given client is properly closed elsewhere.
      Specified by:
        `setHttpClientSessionManager` in interface `SessionManagerDependent`

    - #### getHttpClient

          public org.apache.http.client.HttpClient getHttpClient()

      Description copied from interface: `HttpClientDependent`
      `HttpClient` that has been assigned or has been used by this object. The life cycle might not be or might be tied to this object, depending on whether `HttpClient` was passed to or created by this object respectively.
      Specified by:
        `getHttpClient` in interface `HttpClientDependent`
      Returns:
        an `HttpClient` instance or null

    - #### setHttpClient

          public void setHttpClient​(org.apache.http.client.HttpClient client)

      Description copied from interface: `HttpClientDependent`
      Assign an `HttpClient` that this object should use. The life cycle of the given `HttpClient` is independent of this object. Closing or shutting down this object does not have any impact on the given client. Callers must ensure that the given client is properly closed elsewhere.
      Specified by:
        `setHttpClient` in interface `HttpClientDependent`

    - #### initializeInternal

          protected void initializeInternal()
                                     throws RepositoryException

      Specified by:
        `initializeInternal` in class `AbstractRepository`
      Throws:
        `RepositoryException`

    - #### shutDownInternal

          protected void shutDownInternal()
                                   throws RepositoryException

      Specified by:
        `shutDownInternal` in class `AbstractRepository`
      Throws:
        `RepositoryException`

    - #### getSail

          public Sail getSail()

      Gets the Sail object that is on top of the Sail stack that this repository operates on.
      Returns:
        A Sail object.

    - #### isWritable

          public boolean isWritable()
                             throws RepositoryException

      Description copied from interface: `Repository`
      Checks whether this repository is writable, i.e. if the data contained in this repository can be changed. The writability of the repository is determined by the writability of the Sail that this repository operates on.
      Specified by:
        `isWritable` in interface `Repository`
      Throws:
        `RepositoryException`

    - #### getValueFactory

          public ValueFactory getValueFactory()

      Description copied from interface: `Repository`
      Gets a ValueFactory for this Repository.
      Specified by:
        `getValueFactory` in interface `Repository`
      Returns:
        A repository-specific ValueFactory.

    - #### getConnection

          public SailRepositoryConnection getConnection()
                                                 throws RepositoryException

      Description copied from interface: `Repository`
      Opens a connection to this repository that can be used for querying and updating the contents of the repository. Created connections need to be closed to make sure that any resources they keep hold of are released. The best way to do this is to use a try-with-resources block, as follows:

           try (RepositoryConnection conn = repository.getConnection()) {
                  // perform operations on the connection
           }

      Note that `RepositoryConnection` is not guaranteed to be thread-safe! The recommended pattern for repository access in a multi-threaded application is to share the Repository object between threads, but have each thread create and use its own `RepositoryConnection`s.
      Specified by:
        `getConnection` in interface `Repository`
      Returns:
        A connection that allows operations on this repository.
      Throws:
        `RepositoryException` - If something went wrong during the creation of the Connection.

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`