Triples
3
RAPTOR Library

# Triples

RDF Triples

## Synopsis

    enum                raptor_genid_type;
    enum                raptor_identifier_type;
                        raptor_identifier;
    raptor_identifier*  raptor_new_identifier               (raptor_identifier_type type,
                                                             raptor_uri *uri,
                                                             raptor_uri_source uri_source,
                                                             unsigned char *id,
                                                             unsigned char *literal,
                                                             raptor_uri *literal_datatype,
                                                             unsigned char *literal_language);
    int                 raptor_copy_identifier              (raptor_identifier *dest,
                                                             raptor_identifier *src);
    void                raptor_free_identifier              (raptor_identifier *identifier);
                        raptor_statement;
    int                 raptor_statement_compare            (const raptor_statement *s1,
                                                             const raptor_statement *s2);
    void                raptor_print_statement              (const raptor_statement *statement,
                                                             FILE *stream);
    void                raptor_print_statement_as_ntriples  (const raptor_statement *statement,
                                                             FILE *stream);
    void                raptor_print_statement_detailed     (const raptor_statement *statement,
                                                             int detailed,
                                                             FILE *stream);
    unsigned char*      raptor_statement_part_as_counted_string
                                                            (const void *term,
                                                             raptor_identifier_type type,
                                                             raptor_uri *literal_datatype,
                                                             unsigned char *literal_language,
                                                             size_t *len_p);
    unsigned char*      raptor_statement_part_as_string     (const void *term,
                                                             raptor_identifier_type type,
                                                             raptor_uri *literal_datatype,
                                                             unsigned char *literal_language);

## Description

Representation of RDF triples inside Raptor. They are a sequence of three raptor_identifier which cover the RDF terms of URI (`RAPTOR_IDENTIFIER_TYPE_RESOURCE`), Literal (`RAPTOR_IDENTIFIER_TYPE_LITERAL`) and Blank Node (`RAPTOR_IDENTIFIER_TYPE_ANONYMOUS`). Some other raptor_identifer_type forms exist but are deprecated.

## Details

### enum raptor_genid_type

    typedef enum {
      RAPTOR_GENID_TYPE_BNODEID,
      RAPTOR_GENID_TYPE_BAGID
    } raptor_genid_type;

Intended type for a generated identifier asked for by the handler registered with `raptor_set_generate_id_handler()`.

`RAPTOR_GENID_TYPE_BNODEID`

  Generated ID is for a blank node

`RAPTOR_GENID_TYPE_BAGID`

  Generated ID is for rdf:bagID

### enum raptor_identifier_type

    typedef enum {
      RAPTOR_IDENTIFIER_TYPE_UNKNOWN,
      RAPTOR_IDENTIFIER_TYPE_RESOURCE,
      RAPTOR_IDENTIFIER_TYPE_ANONYMOUS,
      RAPTOR_IDENTIFIER_TYPE_PREDICATE,
      RAPTOR_IDENTIFIER_TYPE_ORDINAL,
      RAPTOR_IDENTIFIER_TYPE_LITERAL,
      RAPTOR_IDENTIFIER_TYPE_XML_LITERAL
    } raptor_identifier_type;

Type of identifier in a raptor_statement

`RAPTOR_IDENTIFIER_TYPE_UNKNOWN`

  Internal

`RAPTOR_IDENTIFIER_TYPE_RESOURCE`

  Resource URI (e.g. `rdf:about`)

`RAPTOR_IDENTIFIER_TYPE_ANONYMOUS`

  `_:foo` N-Triples, or generated

`RAPTOR_IDENTIFIER_TYPE_PREDICATE`

  predicate URI. WARNING: Will not be generated in in Raptor 1.4.9 or newer. Instead a RAPTOR_IDENTIFIER_TYPE_RESOURCE will be returned.

`RAPTOR_IDENTIFIER_TYPE_ORDINAL`

  `rdf:li`, `rdf:_`n. No longer generated in any parser in Raptor 1.4.10+, instead a RAPTOR_IDENTIFIER_TYPE_RESOURCE is returned.

`RAPTOR_IDENTIFIER_TYPE_LITERAL`

  regular literal

`RAPTOR_IDENTIFIER_TYPE_XML_LITERAL`

  `rdf:parseType="Literal"`. No longer generated by any parser in Raptor 1.4.8+, instead a RAPTOR_IDENTIFIER_TYPE_LITERAL is returned with a datatype of `rdf:XMLLiteral`.

### raptor_identifier

    typedef struct {
      raptor_identifier_type type;
      raptor_uri *uri;
      raptor_uri_source uri_source;
      const unsigned char *id;
      int ordinal;
      int is_malloced;
      const unsigned char *literal;
      raptor_uri *literal_datatype;
      const unsigned char *literal_language;
    } raptor_identifier;

Raptor RDF term identifier.

raptor_identifier_type type;

  Type of identifier

raptor_uri *uri;

  URI of identifier for types `RAPTOR_IDENTIFIER_TYPE_RESOURCE` and `RAPTOR_IDENTIFIER_TYPE_PREDICATE`

raptor_uri_source uri_source;

  where the identifier (URI or blank node) came from

int ordinal;

  integer ordinal for type `RAPTOR_IDENTIFIER_TYPE_ORDINAL`

int is_malloced;

  internal

raptor_uri *literal_datatype;

  RDF literal datatype URI for types `RAPTOR_IDENTIFIER_TYPE_LITERAL` and `RAPTOR_IDENTIFIER_TYPE_XML_LITERAL`

### raptor_new_identifier ()

    raptor_identifier*  raptor_new_identifier               (raptor_identifier_type type,
                                                             raptor_uri *uri,
                                                             raptor_uri_source uri_source,
                                                             unsigned char *id,
                                                             unsigned char *literal,
                                                             raptor_uri *literal_datatype,
                                                             unsigned char *literal_language);

Constructor - create a raptor_identifier.

Constructs a new identifier copying the URI, ID fields. SHARED means raptor_new_identifier owns this argument after calling.

`type` :

  raptor_identifier_type of identifier

`uri` :

  raptor_uri of identifier (if relevant) (SHARED)

`uri_source` :

  raptor_uri_source of URI (if relevant)

`id` :

  string for ID or genid (if relevant) (SHARED)

`literal` :

  string for literal (SHARED)

`literal_datatype` :

  raptor_uri of identifier (SHARED)

`literal_language` :

  literal language (SHARED)

Returns :

  a new raptor_identifier object or NULL on failure

### raptor_copy_identifier ()

    int                 raptor_copy_identifier              (raptor_identifier *dest,
                                                             raptor_identifier *src);

Copy raptor_identifiers.

`dest` :

  destination raptor_identifier (previously created)

`src` :

  source raptor_identifier

Returns :

  Non 0 on failure

### raptor_free_identifier ()

    void                raptor_free_identifier              (raptor_identifier *identifier);

Destructor - destroy a raptor_identifier object.

`identifier` :

  raptor_identifier object

### raptor_statement

    typedef struct {
      const void *subject;
      raptor_identifier_type subject_type;
      const void *predicate;
      raptor_identifier_type predicate_type;
      const void *object;
      raptor_identifier_type object_type;
      raptor_uri *object_literal_datatype;
      const unsigned char *object_literal_language;
    } raptor_statement;

An RDF triple

See raptor_identifier for a description of how the fields may be used. As returned by a parser statement_handler.

const void *subject;

  triple subject data

raptor_identifier_type subject_type;

  triple subject type

const void *predicate;

  triple predicate data

raptor_identifier_type predicate_type;

  triple predicate type

const void *object;

  triple object literal string

raptor_identifier_type object_type;

  triple object type

raptor_uri *object_literal_datatype;

  triple object literal datatype URI (or NULL)

### raptor_statement_compare ()

    int                 raptor_statement_compare            (const raptor_statement *s1,
                                                             const raptor_statement *s2);

Compare a pair of raptor_statement

If types are different, the raptor_identifier_type order is used. Resource and datatype URIs are compared with `raptor_uri_compare()`, blank nodes and literals with `strcmp()`. If one literal has no language, it is earlier than one with a language. If one literal has no datatype, it is earlier than one with a datatype.

`s1` :

  first statement

`s2` :

  second statement

Returns :

  <0 if s1 is before s2, 0 if equal, >0 if s1 is after s2

### raptor_print_statement ()

    void                raptor_print_statement              (const raptor_statement *statement,
                                                             FILE *stream);

Print a raptor_statement to a stream.

`statement` :

  raptor_statement object to print

`stream` :

  FILE* stream

### raptor_print_statement_as_ntriples ()

    void                raptor_print_statement_as_ntriples  (const raptor_statement *statement,
                                                             FILE *stream);

Print a raptor_statement in N-Triples form.

`statement` :

  raptor_statement to print

`stream` :

  FILE* stream

### raptor_print_statement_detailed ()

    void                raptor_print_statement_detailed     (const raptor_statement *statement,
                                                             int detailed,
                                                             FILE *stream);

`raptor_print_statement_detailed` is deprecated and should not be used in newly-written code.

Print a raptor_statement to a stream in a detailed fashion.

`deprecated`: an internal function, do not use.

No current difference from calling `raptor_print_statement()`.

`statement` :

  raptor_statement object to print

`detailed` :

  unused

`stream` :

  FILE* stream

### raptor_statement_part_as_counted_string ()

    unsigned char*      raptor_statement_part_as_counted_string
                                                            (const void *term,
                                                             raptor_identifier_type type,
                                                             raptor_uri *literal_datatype,
                                                             unsigned char *literal_language,
                                                             size_t *len_p);

Turns part of raptor statement into a N-Triples format counted string.

Turns the given `term` into an N-Triples escaped string using all the escapes as defined in http://www.w3.org/TR/rdf-testcases/ntriples

The part (subject, predicate, object) of the raptor_statement is typically passed in as `term`, the part type (subject_type, predicate_type, object_type) is passed in as `type`. When the part is a literal, the `literal_datatype` and `literal_language` fields are set, otherwise NULL (usually object_datatype, object_literal_language).

`term` :

  raptor_statement part (subject, predicate, object)

`type` :

  raptor_statement part type

`literal_datatype` :

  raptor_statement part datatype

`literal_language` :

  raptor_statement part language

`len_p` :

  Pointer to location to store length of new string (if not NULL)

Returns :

  the new string or NULL on failure. The length of the new string is returned in *`len_p` if len_p is not NULL.

### raptor_statement_part_as_string ()

    unsigned char*      raptor_statement_part_as_string     (const void *term,
                                                             raptor_identifier_type type,
                                                             raptor_uri *literal_datatype,
                                                             unsigned char *literal_language);

Turns part of raptor statement into a N-Triples format string.

Turns the given `term` into an N-Triples escaped string using all the escapes as defined in http://www.w3.org/TR/rdf-testcases/ntriples

The part (subject, predicate, object) of the raptor_statement is typically passed in as `term`, the part type (subject_type, predicate_type, object_type) is passed in as `type`. When the part is a literal, the `literal_datatype` and `literal_language` fields are set, otherwise NULL (usually object_datatype, object_literal_language).

`term` :

  raptor_statement part (subject, predicate, object)

`type` :

  raptor_statement part type

`literal_datatype` :

  raptor_statement part datatype

`literal_language` :

  raptor_statement part language

Returns :

  the new string or NULL on failure.