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.
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_world_guess_parser_name()
for a full discussion of the inputs to the guessing.
raptor_parser_parse_uri()
)The URI is resolved and the content read from it and passed to the parser:
raptor_parser_parse_uri(rdf_parser, uri, base_uri);
The base_uri is optional (can be
NULL
) and will default to the
uri.
raptor_parser_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_new_www_with_connection
for full details of how this works. The content is then read from the
result of resolving the URI:
raptor_parser_parse_uri_with_connection(rdf_parser, uri, base_uri, connection);
The base_uri is optional (can be
NULL
) and will default to the
uri.
FILE*
(raptor_parser_parse_file_stream()
)Parsing can read from a C STDIO file handle:
stream = fopen(filename, "rb"); raptor_parser_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.
This requirement can be checked by looking at the flags in
the parser description using
raptor_world_get_parser_description()
.
raptor_parser_parse_file()
)Parsing can read from a URI known to be a file:
URI:
raptor_parser_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.
raptor_parser_parse_start()
and raptor_parser_parse_chunk()
)
raptor_parser_parse_start(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_parser_parse_chunk(rdf_parser, buffer, buffer_len, 0); } raptor_parser_parse_chunk(rdf_parser, NULL, 0, 1); /* no data and is_end = 1 */
The base_uri argument to
raptor_parser_parse_start()
may be required by some parsers
and if NULL
will cause the parsing to fail.
On the last
raptor_parser_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_parser_parse_start(rdf_parser, base_uri); raptor_parser_parse_chunk(rdf_parser, buffer, buffer_len, 1); /* is_end = 1 */