Package org.eclipse.rdf4j.query.resultio.binary

## Interface BinaryQueryResultConstants

-     public interface BinaryQueryResultConstants

  Interface defining constants for the binary table result format. Files in this format consist of a header followed by zero or more records. Data fields are encoded as specified in the interfaces `DataInput` and `DataOutput`, except for the encoding of string values. String values are encoded in UTF-8 and are preceeded by a 32-bit integer specifying the length in bytes of this UTF-8 encoded string.

  The file header is 13 bytes long:

  - Bytes 1-4 contain the ASCII codes for the string "BRTR", which stands for Binary RDF Table Result.
  - Bytes 5-8 specify the format version (an integer).
  - Byte 9 specifies some flags, specifically 'distinct' and 'ordered'.
  - Bytes 10-13 specify the number of columns of the query result that will follow (an integer).
  Following this are the column headers, which are encoded as UTF-8 strings. There are as many column headers as the number of columns that has been specified in the header.

  Zero or more records follow after the column headers. This can be a mixture of records describing a result and supporting records. The results table is described by the result records which are written from left to right, from top to bottom. Each record starts with a record type marker (a single byte). The following records are defined in the current format:

  - NULL (byte value: 0):
    This indicates a NULL value in the table and consists of nothing more than the record type marker.
  - REPEAT (byte value: 1):
    This indicates that the next value is identical to the value in the same column in the previous row. The REPEAT record consists of nothing more than the record type marker.
  - NAMESPACE (byte value: 2):
    This is a supporting record that assigns an ID (non-negative integer) to a namespace. This ID can later be used in in a QNAME record to combine it with a local name to form a full URI. The record type marker is followed by a non-negative integer for the ID and an UTF-8 encoded string for the namespace.
  - QNAME (byte value: 3):
    This indicates a URI value, the value of which is encoded as a namespace ID and a local name. The namespace ID is required to be mapped to a namespace in a previous NAMESPACE record. The record type marker is followed by a non-negative integer (the namespace ID) and an UTF-8 encoded string for the local name.
  - URI (byte value: 4):
    This also indicates a URI value, but one that does not use a namespace ID. This record type marker is simply followed by an UTF-8 encoded string for the full URI.
  - BNODE (byte value: 5):
    This indicates a blank node. The record type marker is followed by an UTF-8 encoded string for the bnode ID.
  - PLAIN_LITERAL (byte value: 6):
    This indicates a plain literal value. The record type marker is followed by an UTF-8 encoded string for the literal's label.
  - LANG_LITERAL (byte value: 7):
    This indicates a literal value with a language attribute. The record type marker is followed by an UTF-8 encoded string for the literal's label, followed by an UTF-8 encoded string for the language attribute.
  - DATATYPE_LITERAL (byte value: 8):
    This indicates a datatyped literal. The record type marker is followed by an UTF-8 encoded string for the literal's label. Following this label is either a QNAME or URI record for the literal's datatype.
  - EMPTY_ROW (byte value: 9):
    This indicates a row with zero values.
  - TRIPLE (byte value: 10):
    This indicates an RDF-star triple value. It is followed by the subject, predicate and object values of the triple.
  - ERROR (byte value: 126):
    This record indicates a error. The type of error is indicates by the byte directly following the record type marker: 1 for a malformed query error, 2 for a query evaluation error. The error type byte is followed by an UTF-8 string for the error message.
  - TABLE_END (byte value: 127):
    This is a special record that indicates the end of the results table and consists of nothing more than the record type marker. Any data following this record should be ignored.
  Author:
    Arjohn Kampman

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static int` | `BNODE_RECORD_MARKER` |
    `static int` | `DATATYPE_LITERAL_RECORD_MARKER` |
    `static int` | `EMPTY_ROW_RECORD_MARKER` |
    `static int` | `ERROR_RECORD_MARKER` |
    `static int` | `FORMAT_VERSION` | The version number of the current format.
    `static int` | `LANG_LITERAL_RECORD_MARKER` |
    `static byte[]` | `MAGIC_NUMBER` | Magic number for Binary RDF Table Result files.
    `static int` | `MALFORMED_QUERY_ERROR` |
    `static int` | `NAMESPACE_RECORD_MARKER` |
    `static int` | `NULL_RECORD_MARKER` |
    `static int` | `PLAIN_LITERAL_RECORD_MARKER` |
    `static int` | `QNAME_RECORD_MARKER` |
    `static int` | `QUERY_EVALUATION_ERROR` |
    `static int` | `REPEAT_RECORD_MARKER` |
    `static int` | `TABLE_END_RECORD_MARKER` |
    `static int` | `TRIPLE_RECORD_MARKER` |
    `static int` | `URI_RECORD_MARKER` |

- - ### Field Detail

    - #### MAGIC_NUMBER

          static final byte[] MAGIC_NUMBER

      Magic number for Binary RDF Table Result files.

    - #### FORMAT_VERSION

          static final int FORMAT_VERSION

      The version number of the current format.
      See Also:
        Constant Field Values

    - #### NULL_RECORD_MARKER

          static final int NULL_RECORD_MARKER

      See Also:
        Constant Field Values

    - #### REPEAT_RECORD_MARKER

          static final int REPEAT_RECORD_MARKER

      See Also:
        Constant Field Values

    - #### NAMESPACE_RECORD_MARKER

          static final int NAMESPACE_RECORD_MARKER

      See Also:
        Constant Field Values

    - #### QNAME_RECORD_MARKER

          static final int QNAME_RECORD_MARKER

      See Also:
        Constant Field Values

    - #### URI_RECORD_MARKER

          static final int URI_RECORD_MARKER

      See Also:
        Constant Field Values

    - #### BNODE_RECORD_MARKER

          static final int BNODE_RECORD_MARKER

      See Also:
        Constant Field Values

    - #### PLAIN_LITERAL_RECORD_MARKER

          static final int PLAIN_LITERAL_RECORD_MARKER

      See Also:
        Constant Field Values

    - #### LANG_LITERAL_RECORD_MARKER

          static final int LANG_LITERAL_RECORD_MARKER

      See Also:
        Constant Field Values

    - #### DATATYPE_LITERAL_RECORD_MARKER

          static final int DATATYPE_LITERAL_RECORD_MARKER

      See Also:
        Constant Field Values

    - #### EMPTY_ROW_RECORD_MARKER

          static final int EMPTY_ROW_RECORD_MARKER

      See Also:
        Constant Field Values

    - #### TRIPLE_RECORD_MARKER

          static final int TRIPLE_RECORD_MARKER

      See Also:
        Constant Field Values

    - #### ERROR_RECORD_MARKER

          static final int ERROR_RECORD_MARKER

      See Also:
        Constant Field Values

    - #### TABLE_END_RECORD_MARKER

          static final int TABLE_END_RECORD_MARKER

      See Also:
        Constant Field Values

    - #### MALFORMED_QUERY_ERROR

          static final int MALFORMED_QUERY_ERROR

      See Also:
        Constant Field Values

    - #### QUERY_EVALUATION_ERROR

          static final int QUERY_EVALUATION_ERROR

      See Also:
        Constant Field Values