Provide syntax content to parse

The operation of turning syntax into RDF triples has several alternatives from functions that do most of the work starting from a URI to functions that allow passing in data buffers.

Parsing and MIME Types

The mime type of the retrieved content is not used to choose a parser unless the parser is of type guess. The guess parser will send an Accept: header for all known parser syntax mime types (if a URI request is made) and based on the response, including the identifiers used, pick the appropriate parser to execute. See raptor_guess_parser_name() for a full discussion of the inputs to the guessing.

Parse the content from a URI (raptor_parse_uri())

The URI is resolved and the content read from it and passed to the parser:

  raptor_parse_uri(rdf_parser, uri, base_uri);

The base_uri is optional (can be NULL) and will default to the uri.

Parse the content of a URI using an existing WWW connection (raptor_parse_uri_with_connection())

The URI is resolved using an existing WWW connection (for example a libcurl CURL handle) to allow for any existing WWW configuration to be reused. See raptor_www_new_with_connection for full details of how this works. The content is then read from the result of resolving the URI:

  raptor_parse_uri_with_connection(rdf_parser, uri, base_uri, connection);

The base_uri is optional (can be NULL) and will default to the uri.

Parse the content of a C FILE* (raptor_parse_file_stream())

Parsing can read from a C STDIO file handle:

  stream=fopen(filename, "rb");
  raptor_parse_file_stream(rdf_parser, stream, filename, base_uri);
  fclose(stream);

This function can use take an optional filename which is used in locator error messages. The base_uri may be required by some parsers and if NULL will cause the parsing to fail.

Parse the content of a file URI (raptor_parse_file())

Parsing can read from a URI known to be a file: URI:

  raptor_parse_file(rdf_parser, file_uri, base_uri);

This function requires that the file_uri is a file URI, that is raptor_uri_uri_string_is_file_uri( raptor_uri_as_string( file_uri) ) must be true. The base_uri may be required by some parsers and if NULL will cause the parsing to fail.

Parse chunks of syntax content provided by the application (raptor_start_parse() and raptor_parse_chunk())

  raptor_start_parse(rdf_parser, base_uri);
  while(/* not finished getting content */) {
    unsigned char *buffer;
    size_t buffer_len;
    /* obtain some syntax content in buffer of size buffer_len bytes */
    raptor_parse_chunk(rdf_parser, buffer, buffer_len, 0);
  }
  raptor_parse_chunk(rdf_parser, NULL, 0, 1); /* no data and is_end = 1 */

The base_uri argument to raptor_start_parse() may be required by some parsers and if NULL will cause the parsing to fail.

On the last raptor_parse_chunk() call, or after the loop is ended, the is_end parameter must be set to non-0. Content can be passed with the final call. If no content is present at the end (such as in some kind of end of file situation), then a 0-length buffer_len or NULL buffer can be used.

The minimal case is an entire parse in one chunk as follows:

  raptor_start_parse(rdf_parser, base_uri);
  raptor_parse_chunk(rdf_parser, buffer, buffer_len, 1); /* is_end = 1 */