Package org.eclipse.rdf4j.repository.sparql

## Class SPARQLRepository

- java.lang.Object
- - org.eclipse.rdf4j.repository.base.AbstractRepository
  - - org.eclipse.rdf4j.repository.sparql.SPARQLRepository

- All Implemented Interfaces:
    `HttpClientDependent`, `SessionManagerDependent`, `Repository`

      public class SPARQLRepository
      extends AbstractRepository
      implements HttpClientDependent, SessionManagerDependent

  A proxy class to access any SPARQL 1.1 endpoint.
  Author:
    James Leigh

- - ### Field Summary

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

      `logger`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SPARQLRepository​(String endpointUrl)` | Create a new SPARQLRepository using the supplied endpoint URL for queries and updates.
    `SPARQLRepository​(String queryEndpointUrl, String updateEndpointUrl)` | Create a new SPARQLRepository using the supplied query endpoint URL for queries, and the supplied update endpoint URL for updates.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected SPARQLProtocolSession` | `createHTTPClient()` | Deprecated. use `createSPARQLProtocolSession()` instead
    `protected SPARQLProtocolSession` | `createSPARQLProtocolSession()` | Creates a new `SPARQLProtocolSession` object.
    `void` | `enableQuadMode​(boolean flag)` | Activate quad mode for this `SPARQLRepository`, i.e.
    `Map<String,​String>` | `getAdditionalHttpHeaders()` | Get the additional HTTP headers which will be used
    `RepositoryConnection` | `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.
    `Boolean` | `getPassThroughEnabled()` | Retrieve the passThroughEnabled setting to be used for any newly created `RepositoryConnection`s.
    `ValueFactory` | `getValueFactory()` | Gets a ValueFactory for this Repository.
    `protected void` | `initializeInternal()` |
    `boolean` | `isWritable()` | Checks whether this repository is writable, i.e.
    `void` | `setAdditionalHttpHeaders​(Map<String,​String> additionalHttpHeaders)` | Set additional HTTP headers to be included in every request to the server, which may be required for certain unusual server configurations.
    `void` | `setDataDir​(File dataDir)` | Set the directory where data and logging for this repository is stored.
    `void` | `setHttpClient​(org.apache.http.client.HttpClient httpClient)` | Assign an `HttpClient` that this object should use.
    `void` | `setHttpClientSessionManager​(HttpClientSessionManager client)` | Assign an `HttpClientSessionManager` that this object should use.
    `void` | `setPassThroughEnabled​(Boolean passThroughEnabled)` | Set the passThroughEnabled configuration.
    `void` | `setUsernameAndPassword​(String username, String password)` | Set the username and password to use for authenticating with the remote repository.
    `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

    - #### SPARQLRepository

          public SPARQLRepository​(String endpointUrl)

      Create a new SPARQLRepository using the supplied endpoint URL for queries and updates.
      Parameters:
        `endpointUrl` - a SPARQL endpoint URL. May not be null.

    - #### SPARQLRepository

          public SPARQLRepository​(String queryEndpointUrl,
                                  String updateEndpointUrl)

      Create a new SPARQLRepository using the supplied query endpoint URL for queries, and the supplied update endpoint URL for updates.
      Parameters:
        `queryEndpointUrl` - a SPARQL endpoint URL for queries. May not be null.
        `updateEndpointUrl` - a SPARQL endpoint URL for updates. May not be null.
      Throws:
        `IllegalArgumentException` - if one of the supplied endpoint URLs is null.

  - ### Method Detail

    - #### 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 final 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 httpClient)

      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`

    - #### createSPARQLProtocolSession

          protected SPARQLProtocolSession createSPARQLProtocolSession()

      Creates a new `SPARQLProtocolSession` object. The life-cycle of this is per-connection.
      Returns:
        a SPARQLProtocolSession object.

    - #### createHTTPClient

          @Deprecated
          protected SPARQLProtocolSession createHTTPClient()

      Deprecated.
      use `createSPARQLProtocolSession()` instead

    - #### getConnection

          public RepositoryConnection 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.

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

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

    - #### initializeInternal

          protected void initializeInternal()
                                     throws RepositoryException

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

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

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

    - #### setUsernameAndPassword

          public void setUsernameAndPassword​(String username,
                                             String password)

      Set the username and password to use for authenticating with the remote repository.
      Parameters:
        `username` - the username. Setting this to null will disable authentication.
        `password` - the password. Setting this to null will disable authentication.

    - #### shutDownInternal

          protected void shutDownInternal()
                                   throws RepositoryException

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

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### getAdditionalHttpHeaders

          public Map<String,​String> getAdditionalHttpHeaders()

      Get the additional HTTP headers which will be used
      Returns:
        a read-only view of the additional HTTP headers which will be included in every request to the server.

    - #### setAdditionalHttpHeaders

          public void setAdditionalHttpHeaders​(Map<String,​String> additionalHttpHeaders)

      Set additional HTTP headers to be included in every request to the server, which may be required for certain unusual server configurations. This will only take effect on connections subsequently returned by `getConnection()`.
      Parameters:
        `additionalHttpHeaders` - a map containing pairs of header names and values. May be null

    - #### enableQuadMode

          public void enableQuadMode​(boolean flag)

      Activate quad mode for this `SPARQLRepository`, i.e. for retrieval of statements also retrieve the graph.

      Note: the setting is only applied in newly created `SPARQLConnection`s as the setting is an immutable configuration of a connection instance.

      Parameters:
        `flag` - flag to enable or disable the quad mode
      See Also:
        `SPARQLConnection#getStatements(org.eclipse.rdf4j.model.Resource, org.eclipse.rdf4j.model.URI, org.eclipse.rdf4j.model.Value, boolean, org.eclipse.rdf4j.model.Resource...)`

    - #### getPassThroughEnabled

          public Boolean getPassThroughEnabled()

      Retrieve the passThroughEnabled setting to be used for any newly created `RepositoryConnection`s.
      Returns:
        the passThroughEnabled setting. May be `null` if not explicitly configured.
      See Also:
        `SPARQLProtocolSession.isPassThroughEnabled()`

    - #### setPassThroughEnabled

          public void setPassThroughEnabled​(Boolean passThroughEnabled)

      Set the passThroughEnabled configuration. Changing this will influence behavior of any new `RepositoryConnection`s, but not of existing ones.
      Parameters:
        `passThroughEnabled` - the passThroughEnabled to set
      See Also:
        `SPARQLProtocolSession#setPassThroughEnabled()`