Package org.eclipse.rdf4j.query.resultio.sparqljson

## Class SPARQLResultsJSONWriter

- java.lang.Object
- - org.eclipse.rdf4j.query.resultio.AbstractQueryResultWriter
  - - org.eclipse.rdf4j.query.resultio.sparqljson.SPARQLResultsJSONWriter

- All Implemented Interfaces:
    `CharSink`, `Sink`, `QueryResultHandler`, `QueryResultWriter`, `TupleQueryResultWriter`, `TupleQueryResultHandler`
  Direct Known Subclasses:
    `SPARQLStarResultsJSONWriter`

      public class SPARQLResultsJSONWriter
      extends AbstractQueryResultWriter
      implements TupleQueryResultWriter

  A TupleQueryResultWriter that writes query results in the SPARQL Query Results JSON Format.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected boolean` | `documentOpen` |
    `protected boolean` | `firstTupleWritten` |
    `protected boolean` | `headerComplete` |
    `protected boolean` | `headerOpen` |
    `protected com.fasterxml.jackson.core.JsonGenerator` | `jg` |
    `protected boolean` | `linksFound` |
    `protected boolean` | `tupleVariablesFound` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SPARQLResultsJSONWriter​(OutputStream out)` |
    `SPARQLResultsJSONWriter​(Writer writer)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `endDocument()` |
    `void` | `endHeader()` | Indicates the end of the header.
    `void` | `endQueryResult()` | Indicates the end of a sequence of solutions.
    `TupleQueryResultFormat` | `getQueryResultFormat()` | Gets the query result format that this writer uses.
    `Collection<RioSetting<?>>` | `getSupportedSettings()` |
    `TupleQueryResultFormat` | `getTupleQueryResultFormat()` | Gets the query result format that this writer uses.
    `Writer` | `getWriter()` | get the `Writer` used by this `CharSink`.
    `void` | `handleBoolean​(boolean value)` | Handles the specified boolean value.
    `void` | `handleLinks​(List<String> linkUrls)` | Handles the links elements which are present in SPARQL Results JSON and SPARQL Results XML documents in the header.
    `void` | `handleNamespace​(String prefix, String uri)` | Handles a namespace prefix declaration.
    `protected void` | `handleSolutionImpl​(BindingSet bindingSet)` | Extending classes must implement this method instead of overriding `AbstractQueryResultWriter.handleSolution(BindingSet)` in order to benefit from automatic handling of RDF-star encoding.
    `void` | `handleStylesheet​(String stylesheetUrl)` | Handles a stylesheet URL.
    `void` | `startDocument()` | Indicates the start of the document.
    `void` | `startHeader()` | Indicates the start of the header.
    `void` | `startQueryResult​(List<String> columnHeaders)` | Indicates the start of a sequence of Solutions.
    `protected void` | `writeValue​(Value value)` |

    - ### Methods inherited from class org.eclipse.rdf4j.query.resultio.AbstractQueryResultWriter

      `getFileFormat, getWriterConfig, handleSolution, setWriterConfig, xsdStringToPlainLiteral`

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

      `endQueryResult, handleBoolean, handleLinks, handleSolution, startQueryResult`

    - ### Methods inherited from interface org.eclipse.rdf4j.query.resultio.QueryResultWriter

      `endHeader, getSupportedSettings, getWriterConfig, handleNamespace, handleStylesheet, setWriterConfig, startDocument, startHeader`

    - ### Methods inherited from interface org.eclipse.rdf4j.common.io.Sink

      `acceptsFileFormat, getFileFormat`

- - ### Field Detail

    - #### firstTupleWritten

          protected boolean firstTupleWritten

    - #### documentOpen

          protected boolean documentOpen

    - #### headerOpen

          protected boolean headerOpen

    - #### headerComplete

          protected boolean headerComplete

    - #### tupleVariablesFound

          protected boolean tupleVariablesFound

    - #### linksFound

          protected boolean linksFound

    - #### jg

          protected final com.fasterxml.jackson.core.JsonGenerator jg

  - ### Constructor Detail

    - #### SPARQLResultsJSONWriter

          public SPARQLResultsJSONWriter​(OutputStream out)

    - #### SPARQLResultsJSONWriter

          public SPARQLResultsJSONWriter​(Writer writer)

  - ### Method Detail

    - #### getTupleQueryResultFormat

          public TupleQueryResultFormat getTupleQueryResultFormat()

      Description copied from interface: `TupleQueryResultWriter`
      Gets the query result format that this writer uses.
      Specified by:
        `getTupleQueryResultFormat` in interface `TupleQueryResultWriter`

    - #### getQueryResultFormat

          public TupleQueryResultFormat getQueryResultFormat()

      Description copied from interface: `QueryResultWriter`
      Gets the query result format that this writer uses.
      Specified by:
        `getQueryResultFormat` in interface `QueryResultWriter`

    - #### writeValue

          protected void writeValue​(Value value)
                             throws IOException,
                                    QueryResultHandlerException

      Throws:
        `IOException`
        `QueryResultHandlerException`

    - #### getWriter

          public final Writer getWriter()

      Description copied from interface: `CharSink`
      get the `Writer` used by this `CharSink`.
      Specified by:
        `getWriter` in interface `CharSink`
      Returns:
        an `Writer`

    - #### endHeader

          public void endHeader()
                         throws QueryResultHandlerException

      Description copied from interface: `QueryResultWriter`
      Indicates the end of the header. This must be called after `QueryResultWriter.startHeader()` and before any calls to `QueryResultHandler.handleSolution(org.eclipse.rdf4j.query.BindingSet)`.
      Specified by:
        `endHeader` in interface `QueryResultWriter`
      Throws:
        `QueryResultHandlerException` - If there was an error writing the end of the header.

    - #### startQueryResult

          public void startQueryResult​(List<String> columnHeaders)
                                throws TupleQueryResultHandlerException

      Description copied from interface: `QueryResultHandler`
      Indicates the start of a sequence of Solutions. The supplied bindingNames are an indication of the values that are in the Solutions. For example, a SPARQL query like select ?X ?Y where { ?X ?P ?Y } will have binding names X and Y.
      Specified by:
        `startQueryResult` in interface `QueryResultHandler`
      Overrides:
        `startQueryResult` in class `AbstractQueryResultWriter`
      Parameters:
        `columnHeaders` - An ordered set of binding names.
      Throws:
        `TupleQueryResultHandlerException` - If there was an error during the starting of the query result handler. This exception may be thrown if the `QueryResultHandler.handleBoolean(boolean)` method was called before this method and the handler cannot process both boolean and tuple results simultaneously.

    - #### handleSolutionImpl

          protected void handleSolutionImpl​(BindingSet bindingSet)
                                     throws TupleQueryResultHandlerException

      Description copied from class: `AbstractQueryResultWriter`
      Extending classes must implement this method instead of overriding `AbstractQueryResultWriter.handleSolution(BindingSet)` in order to benefit from automatic handling of RDF-star encoding.
      Overrides:
        `handleSolutionImpl` in class `AbstractQueryResultWriter`
      Parameters:
        `bindingSet` - the solution to handle
      Throws:
        `TupleQueryResultHandlerException`

    - #### endQueryResult

          public void endQueryResult()
                              throws TupleQueryResultHandlerException

      Description copied from interface: `QueryResultHandler`
      Indicates the end of a sequence of solutions.
      Specified by:
        `endQueryResult` in interface `QueryResultHandler`
      Throws:
        `TupleQueryResultHandlerException` - If there was an error during the ending of the query result handler. This exception may be thrown if the `QueryResultHandler.handleBoolean(boolean)` method was called before this method and the handler cannot process both boolean and tuple results simultaneously.

    - #### startDocument

          public void startDocument()
                             throws QueryResultHandlerException

      Description copied from interface: `QueryResultWriter`
      Indicates the start of the document.
      Specified by:
        `startDocument` in interface `QueryResultWriter`
      Throws:
        `QueryResultHandlerException` - If there was an error starting the writing of the results.

    - #### handleStylesheet

          public void handleStylesheet​(String stylesheetUrl)
                                throws QueryResultHandlerException

      Description copied from interface: `QueryResultWriter`
      Handles a stylesheet URL. If this is called, it must be called after `QueryResultWriter.startDocument()` and before `QueryResultWriter.startHeader()`.

      NOTE: If the format does not support stylesheets, it must silently ignore calls to this method.

      Specified by:
        `handleStylesheet` in interface `QueryResultWriter`
      Parameters:
        `stylesheetUrl` - The URL of the stylesheet to be used to style the results.
      Throws:
        `QueryResultHandlerException` - If there was an error handling the stylesheet. This error is not thrown in cases where stylesheets are not supported.

    - #### startHeader

          public void startHeader()
                           throws QueryResultHandlerException

      Description copied from interface: `QueryResultWriter`
      Indicates the start of the header.
      Specified by:
        `startHeader` in interface `QueryResultWriter`
      Throws:
        `QueryResultHandlerException` - If there was an error writing the start of the header.
      See Also:
        SPARQL Query Results XML Format documentation for head element.

    - #### handleLinks

          public void handleLinks​(List<String> linkUrls)
                           throws QueryResultHandlerException

      Description copied from interface: `QueryResultHandler`
      Handles the links elements which are present in SPARQL Results JSON and SPARQL Results XML documents in the header.

      NOTE: If the format does not support links, it must silently ignore a call to this method.

      An accumulating handler should accumulate these links.

      Specified by:
        `handleLinks` in interface `QueryResultHandler`
      Parameters:
        `linkUrls` - The URLs of the links to handle.
      Throws:
        `QueryResultHandlerException` - If there was an error handling the set of link URLs. This error is not thrown in cases where links are not supported.
      See Also:
        "link"

    - #### handleBoolean

          public void handleBoolean​(boolean value)
                             throws QueryResultHandlerException

      Description copied from interface: `QueryResultHandler`
      Handles the specified boolean value.
      Specified by:
        `handleBoolean` in interface `QueryResultHandler`
      Parameters:
        `value` - The boolean value to handle.
      Throws:
        `QueryResultHandlerException` - If there was an error during the handling of this value. This exception may be thrown if the `QueryResultHandler.startQueryResult(List)`, `QueryResultHandler.handleSolution(BindingSet)` or `QueryResultHandler.endQueryResult()` methods were called before this method was called, and the handler cannot process both boolean and tuple results simultaneously.

    - #### getSupportedSettings

          public final Collection<RioSetting<?>> getSupportedSettings()

      Specified by:
        `getSupportedSettings` in interface `QueryResultWriter`
      Overrides:
        `getSupportedSettings` in class `AbstractQueryResultWriter`
      Returns:
        A collection of `RioSetting`s that are supported by this `QueryResultWriter`.

    - #### handleNamespace

          public void handleNamespace​(String prefix,
                                      String uri)
                               throws QueryResultHandlerException

      Description copied from interface: `QueryResultWriter`
      Handles a namespace prefix declaration. If this is called, it should be called before `QueryResultWriter.startDocument()` to ensure that it has a document wide effect.

      NOTE: If the format does not support namespaces, it must silently ignore calls to this method.

      Specified by:
        `handleNamespace` in interface `QueryResultWriter`
      Parameters:
        `prefix` - The prefix to use for the namespace
        `uri` - The full URI that is to be represented by the prefix.
      Throws:
        `QueryResultHandlerException`

    - #### endDocument

          protected void endDocument()
                              throws IOException

      Throws:
        `IOException`