Package org.eclipse.rdf4j.sail.inferencer.fc

## Class CustomGraphQueryInferencer

- java.lang.Object
- - org.eclipse.rdf4j.sail.helpers.SailWrapper
  - - org.eclipse.rdf4j.sail.helpers.NotifyingSailWrapper
    - - org.eclipse.rdf4j.sail.inferencer.fc.CustomGraphQueryInferencer

- All Implemented Interfaces:
    `FederatedServiceResolverClient`, `NotifyingSail`, `Sail`, `StackableSail`

      public class CustomGraphQueryInferencer
      extends NotifyingSailWrapper

  A forward-chaining inferencer that infers new statements using a SPARQL graph query.
  Author:
    Dale Visser

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `CustomGraphQueryInferencer()` |
    `CustomGraphQueryInferencer​(QueryLanguage language, String queryText, String matcherText)` | Create a new custom inferencer.
    `CustomGraphQueryInferencer​(NotifyingSail baseSail, QueryLanguage language, String queryText, String matcherText)` | Create a new custom inferencer.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `InferencerConnection` | `getConnection()` | Opens a connection on the Sail which can be used to query and update data.
    `Collection<Value>` | `getWatchObjects()` | Exposed for test purposes.
    `Collection<Value>` | `getWatchPredicates()` | Exposed for test purposes.
    `Collection<Value>` | `getWatchSubjects()` | Exposed for test purposes.
    `void` | `init()` | Initializes the Sail.
    `void` | `setFields​(QueryLanguage language, String queryText, String matcherText)` | Called in order to set all the fields needed for the inferencer to function.

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

      `addSailChangedListener, getBaseSail, removeSailChangedListener, setBaseSail`

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

      `getDataDir, getDefaultIsolationLevel, getSupportedIsolationLevels, getValueFactory, isWritable, setDataDir, setFederatedServiceResolver, shutDown, verifyBaseSailSet`

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

      `getDataDir, getDefaultIsolationLevel, getSupportedIsolationLevels, getValueFactory, isWritable, setDataDir, shutDown`

- - ### Constructor Detail

    - #### CustomGraphQueryInferencer

          public CustomGraphQueryInferencer()

    - #### CustomGraphQueryInferencer

          public CustomGraphQueryInferencer​(QueryLanguage language,
                                            String queryText,
                                            String matcherText)
                                     throws MalformedQueryException,
                                            UnsupportedQueryLanguageException,
                                            SailException

      Create a new custom inferencer.
      Parameters:
        `language` - language that queryText and matcherText are expressed in
        `queryText` - a query that returns an RDF graph of inferred statements to be added to the underlying Sail
        `matcherText` - a query that returns an RDF graph of existing inferred statements already added previously
      Throws:
        `MalformedQueryException` - if there is a problem parsing either of the given queries
        `UnsupportedQueryLanguageException` - if an unsupported query language is specified
        `SailException` - if a problem occurs interpreting the rule pattern

    - #### CustomGraphQueryInferencer

          public CustomGraphQueryInferencer​(NotifyingSail baseSail,
                                            QueryLanguage language,
                                            String queryText,
                                            String matcherText)
                                     throws MalformedQueryException,
                                            UnsupportedQueryLanguageException,
                                            SailException

      Create a new custom inferencer.
      Parameters:
        `baseSail` - an underlying Sail, such as another inferencer or a SailRepository
        `language` - language that queryText and matcherText are expressed in
        `queryText` - a query that returns an RDF graph of inferred statements to be added to the underlying Sail
        `matcherText` - a query that returns an RDF graph of existing inferred statements already added previously
      Throws:
        `MalformedQueryException` - if there is a problem parsing either of the given queries
        `UnsupportedQueryLanguageException`
        `SailException` - if a problem occurs interpreting the rule pattern

  - ### Method Detail

    - #### setFields

          public final void setFields​(QueryLanguage language,
                                      String queryText,
                                      String matcherText)
                               throws MalformedQueryException,
                                      SailException

      Called in order to set all the fields needed for the inferencer to function.
      Parameters:
        `language` - language that queryText and matcherText are expressed in
        `queryText` - a query that returns an RDF graph of inferred statements to be added to the underlying Sail
        `matcherText` - a query that returns an RDF graph of existing inferred statements already added previously
      Throws:
        `MalformedQueryException` - if there is a problem parsing either of the given queries
        `SailException` - if a problem occurs interpreting the rule pattern

    - #### getConnection

          public InferencerConnection getConnection()
                                             throws SailException

      Description copied from interface: `Sail`
      Opens a connection on the Sail which can be used to query and update data. Depending on how the implementation handles concurrent access, a call to this method might block when there is another open connection on this Sail.
      Specified by:
        `getConnection` in interface `NotifyingSail`
      Specified by:
        `getConnection` in interface `Sail`
      Overrides:
        `getConnection` in class `NotifyingSailWrapper`
      Throws:
        `SailException` - If no transaction could be started, for example because the Sail is not writable.

    - #### init

          public void init()
                    throws SailException

      Description copied from interface: `Sail`
      Initializes the Sail. Care should be taken that required initialization parameters have been set before this method is called. Please consult the specific Sail implementation for information about the relevant parameters.
      Specified by:
        `init` in interface `Sail`
      Overrides:
        `init` in class `SailWrapper`
      Throws:
        `SailException` - If the Sail could not be initialized.

    - #### getWatchSubjects

          public Collection<Value> getWatchSubjects()

      Exposed for test purposes.
      Returns:
        a computed collection of the statement subjects that, when added or removed, trigger an update of inferred statements

    - #### getWatchPredicates

          public Collection<Value> getWatchPredicates()

      Exposed for test purposes.
      Returns:
        a computed collection of the statement predicates that, when added or removed, trigger an update of inferred statements

    - #### getWatchObjects

          public Collection<Value> getWatchObjects()

      Exposed for test purposes.
      Returns:
        a computed collection of the statement objects that, when added or removed, trigger an update of inferred statements