--- src/Makefile.am +++ src/Makefile.am @@ -4,5 +4,5 @@ lib_LTLIBRARIES = liblrdf.la noinst_HEADERS = lrdf_md5.h md5_loc.h ladspa.h liblrdf_la_SOURCES = lrdf.c lrdf_multi.c md5.c -liblrdf_la_LIBADD = -lraptor +liblrdf_la_LIBADD = -lraptor2 liblrdf_la_LDFLAGS = -version-info @LRDF_LIBTOOL_VERSION@ --- src/lrdf.c +++ src/lrdf.c @@ -18,6 +18,7 @@ static unsigned int lrdf_uid = 0; /* A unique(ish) id to append to genid's to * avoid clashses */ +static raptor_world *world = NULL; static lrdf_statement *triples = NULL; static lrdf_statement *free_triples; static lrdf_string_hash *resources_hash[LRDF_HASH_SIZE]; @@ -43,8 +44,7 @@ static void lrdf_remove_triple_hash(lrdf_triple_hash ** tbl, lrdf_hash hash, lrdf_statement * s); static void lrdf_add_closure_hash(lrdf_closure_hash ** tbl, lrdf_hash subject, lrdf_hash object); -static void lrdf_store(void *user_data, - const raptor_statement * statement); +static void lrdf_store(void *user_data, raptor_statement * statement); void lrdf_free_statements(lrdf_statement * s); void lrdf_copy_statement(lrdf_statement * from, lrdf_statement * to); void lrdf_rebuild_taxonomic_closure(lrdf_closure_hash ** fwd_tbl, @@ -71,7 +71,7 @@ void lrdf_init() unsigned int i; struct timeval tv; - raptor_init(); + world = raptor_new_world(); lrdf_more_triples(256); /* A UID to add to genids to make them safer */ @@ -112,7 +112,8 @@ void lrdf_more_triples(int count) void lrdf_cleanup() { - raptor_finish(); + raptor_free_world(world); + world = NULL; lrdf_free_string_hash(resources_hash); lrdf_free_string_hash(literals_hash); @@ -232,26 +233,29 @@ void lrdf_remove_matches(lrdf_statement *pattern) } } -static void lrdf_store(void *user_data, const raptor_statement * statement) +static const char *lrdf_term_as_string(char *tmp, int tmp_len, + const raptor_term *term) +{ + switch (term->type) { + case RAPTOR_TERM_TYPE_URI: + return (const char *) raptor_uri_as_string(term->value.uri); + case RAPTOR_TERM_TYPE_LITERAL: + return (const char *) term->value.literal.string; + case RAPTOR_TERM_TYPE_BLANK: + snprintf(tmp, tmp_len, "_:%s.%x", term->value.blank.string, lrdf_uid); + return tmp; + default: + return "(?)"; + } +} + +static void lrdf_store(void *user_data, raptor_statement * statement) { lrdf_statement *s = lrdf_alloc_statement(); char tmps[128], tmpp[128], tmpo[128]; - char *subj = (char *) statement->subject, - *pred = (char *) statement->predicate, - *obj = (char *) statement->object; - - if (statement->subject_type == RAPTOR_IDENTIFIER_TYPE_ANONYMOUS) { - snprintf(tmps, 127, "_:%s.%x", subj, lrdf_uid); - subj = tmps; - } - if (statement->predicate_type == RAPTOR_IDENTIFIER_TYPE_ANONYMOUS) { - snprintf(tmpp, 127, "_:%s.%x", pred, lrdf_uid); - pred = tmpp; - } - if (statement->object_type == RAPTOR_IDENTIFIER_TYPE_ANONYMOUS) { - snprintf(tmpo, 127, "_:%s.%x", obj, lrdf_uid); - obj = tmpo; - } + const char *subj = lrdf_term_as_string(tmps, 128, statement->subject), + *pred = lrdf_term_as_string(tmpp, 128, statement->predicate), + *obj = lrdf_term_as_string(tmpo, 128, statement->object); s->shash = lrdf_gen_hash(subj); s->phash = lrdf_gen_hash(pred); @@ -261,7 +265,7 @@ static void lrdf_store(void *user_data, const raptor_statement * statement) s->subject = lrdf_check_hash(resources_hash, s->shash, subj); s->predicate = lrdf_check_hash(resources_hash, s->phash, pred); - if (statement->object_type == RAPTOR_IDENTIFIER_TYPE_LITERAL) { + if (statement->object->type == RAPTOR_TERM_TYPE_LITERAL) { s->object = lrdf_check_hash(literals_hash, s->ohash, obj); s->object_type = lrdf_literal; } else { @@ -537,28 +541,22 @@ void lrdf_rebuild_taxonomic_closure(lrdf_closure_hash ** fwd_tbl, free(pathto); } -static void lrdf_error_handler(void *data, raptor_locator * locator, - const char *message); +static void lrdf_log_handler(void *data, raptor_log_message *message); -static void lrdf_error_handler(void *data, raptor_locator * locator, - const char *message) +static void lrdf_log_handler(void *data, raptor_log_message *message) { - fprintf(stderr, "liblrdf: error - "); - raptor_print_locator(stderr, locator); - fprintf(stderr, " - %s\n", message); - - raptor_parse_abort((raptor_parser*)data); -} + const char *severity = "error"; + if (message->level == RAPTOR_LOG_LEVEL_WARN) { + severity = "warning"; + } -static void lrdf_warning_handler(void *data, raptor_locator * locator, - const char *message); + fprintf(stderr, "liblrdf: %s - ", severity); + raptor_locator_print(message->locator, stderr); + fprintf(stderr, " - %s\n", message->text); -static void lrdf_warning_handler(void *data, raptor_locator * locator, - const char *message) -{ - fprintf(stderr, "liblrdf: warning - "); - raptor_print_locator(stderr, locator); - fprintf(stderr, " - %s\n", message); + if (message->level != RAPTOR_LOG_LEVEL_WARN) { + raptor_parser_parse_abort((raptor_parser*)data); + } } @@ -593,15 +591,15 @@ int lrdf_read_file_intl(const char *uri) lrdf_hash source; //printf("lrdf: reading %s\n", uri); - ruri = raptor_new_uri(uri); - furi = raptor_new_uri(uri); + ruri = raptor_new_uri(world, (const unsigned char *) uri); + furi = raptor_new_uri(world, (const unsigned char *) uri); source = lrdf_gen_hash(uri); lrdf_check_hash(resources_hash, source, uri); if (strstr(uri, ".rdf")) { - parser = raptor_new_parser("rdfxml"); + parser = raptor_new_parser(world, "rdfxml"); } else { - parser = raptor_new_parser("ntriples"); + parser = raptor_new_parser(world, "ntriples"); } if (!parser) { fprintf(stderr, "liblrdf: failed to create parser\n"); @@ -609,12 +607,11 @@ int lrdf_read_file_intl(const char *uri) return 1; } - raptor_set_error_handler(parser, parser, lrdf_error_handler); - raptor_set_warning_handler(parser, NULL, lrdf_warning_handler); - raptor_set_statement_handler(parser, &source, lrdf_store); - raptor_set_default_generate_id_parameters(parser, NULL, ++lrdf_uid); + raptor_world_set_log_handler(world, parser, lrdf_log_handler); + raptor_parser_set_statement_handler(parser, &source, lrdf_store); + raptor_world_set_generate_bnodeid_parameters(world, NULL, ++lrdf_uid); - if (raptor_parse_file(parser, furi, ruri)) { + if (raptor_parser_parse_file(parser, furi, ruri)) { raptor_free_uri(furi); raptor_free_uri(ruri); raptor_free_parser(parser); --- configure.ac +++ configure.ac @@ -18,7 +18,7 @@ AC_HEADER_STDC AC_CHECK_HEADERS([errno.h limits.h stdlib.h string.h unistd.h]) -PKG_CHECK_MODULES(RAPTOR, raptor >= 0.9.11) +PKG_CHECK_MODULES(RAPTOR, raptor2 >= 0.9.11) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST