static int assert_uri_to_relative(const char *base, const char *uri, const char *relative) { unsigned char *output; int result; raptor_uri* base_uri=NULL; raptor_uri* reference_uri=raptor_new_uri((const unsigned char*)uri); size_t length=0; if(base) base_uri=raptor_new_uri((const unsigned char*)base); output=raptor_uri_to_relative_counted_uri_string(base_uri, reference_uri, &length); result=strcmp(relative, (const char*)output); if (result) { fprintf(stderr, "%s: raptor_uri_string_to_relative_uri_string FAILED: base='%s', uri='%s', expected='%s', got='%s'\n", program, base, uri, relative, output); RAPTOR_FREE(cstring, output); return 1; } RAPTOR_FREE(cstring, output); raptor_free_uri(base_uri); raptor_free_uri(reference_uri); return 0; }
static void rasqal_query_write_sparql_uri(sparql_writer_context *wc, raptor_iostream* iostr, raptor_uri* uri) { size_t len; unsigned char* string; raptor_qname* qname; qname = raptor_new_qname_from_namespace_uri(wc->nstack, uri, 10); if(qname) { const raptor_namespace* nspace = raptor_qname_get_namespace(qname); if(!raptor_namespace_get_prefix(nspace)) raptor_iostream_write_byte(':', iostr); raptor_qname_write(qname, iostr); raptor_free_qname(qname); return; } if(wc->base_uri) string = raptor_uri_to_relative_counted_uri_string(wc->base_uri, uri, &len); else string = raptor_uri_as_counted_string(uri, &len); raptor_iostream_write_byte('<', iostr); raptor_string_ntriples_write(string, len, '>', iostr); raptor_iostream_write_byte('>', iostr); if(wc->base_uri) raptor_free_memory(string); }
/** * raptor_turtle_writer_reference: * @turtle_writer: Turtle writer object * @uri: URI to write * * Write a URI to the Turtle writer. * **/ void raptor_turtle_writer_reference(raptor_turtle_writer* turtle_writer, raptor_uri* uri) { unsigned char* uri_str; size_t length; uri_str = raptor_uri_to_relative_counted_uri_string(turtle_writer->base_uri, uri, &length); raptor_iostream_write_byte('<', turtle_writer->iostr); if(uri_str) raptor_string_ntriples_write(uri_str, length, '>', turtle_writer->iostr); raptor_iostream_write_byte('>', turtle_writer->iostr); RAPTOR_FREE(cstring, uri_str); }
/** * raptor_uri_to_relative_uri_string: * @base_uri: The base absolute URI to resolve against * @reference_uri: The reference absolute URI to use * * Get the relative URI string of a URI against a base URI. * * Return value: A newly allocated relative URI string or NULL on failure **/ unsigned char* raptor_uri_to_relative_uri_string(raptor_uri *base_uri, raptor_uri *reference_uri) { return raptor_uri_to_relative_counted_uri_string(base_uri, reference_uri, NULL); }