Changeset: 4b250af20b10 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4b250af20b10 Modified Files: configure.ag monetdb5/extras/rdf/rdf_shredder.mx Branch: rdf Log Message:
Modify the old rdf_shredder code so that it can work with Raptor 2. - Modify configure.ag to recognize Raptor 2 installation - Change old raptor 1.4 api by similar API of raptor 2 diffs (195 lines): diff --git a/configure.ag b/configure.ag --- a/configure.ag +++ b/configure.ag @@ -1982,8 +1982,8 @@ esac have_raptor=no if test "x$enable_rdf" != xno; then - req_raptor_ver='1.4.16' - PKG_CHECK_MODULES([raptor], [raptor], + #req_raptor_ver='1.4.16' + PKG_CHECK_MODULES([raptor], [raptor2], [AC_DEFINE(HAVE_RAPTOR, 1, [Define if you have raptor installed]) have_raptor="yes"], [if test "x$enable_rdf" = xyes; then AC_MSG_ERROR([raptor library required for RDF support]); fi diff --git a/monetdb5/extras/rdf/rdf_shredder.mx b/monetdb5/extras/rdf/rdf_shredder.mx --- a/monetdb5/extras/rdf/rdf_shredder.mx +++ b/monetdb5/extras/rdf/rdf_shredder.mx @@ -31,7 +31,7 @@ All Rights Reserved. #include "tokenizer.h" #include <gdk.h> #include <rdf.h> -#include <raptor.h> +#include <raptor2.h> typedef struct graphBATdef { graphBATType batType; /* BAT type */ @@ -104,7 +104,7 @@ typedef struct parserData { @= raptor_exception @1->exception++; @1->exceptionMsg = @2; -raptor_parse_abort (@1->rparser); +raptor_parser_parse_abort (@1->rparser); @= rdf_parser_handler static void @@ -187,39 +187,51 @@ if (@1 == NULL) { @ @c -static void +static void tripleHandler(void* user_data, const raptor_statement* triple) { parserData *pdata = ((parserData *) user_data); BUN bun = BUN_NONE; BAT **graph = pdata->graph; - if (triple->subject_type == RAPTOR_IDENTIFIER_TYPE_RESOURCE - || triple->subject_type == RAPTOR_IDENTIFIER_TYPE_ANONYMOUS) { - @:rdf_insert(graph[MAP_LEX],(str)triple->subject)@ + if (triple->subject->type == RAPTOR_TERM_TYPE_URI + || triple->subject->type == RAPTOR_TERM_TYPE_BLANK) { + unsigned char* subjectStr; + subjectStr = raptor_term_to_string(triple->subject); + @:rdf_insert(graph[MAP_LEX],(str)subjectStr)@ @:rdf_BUNappend(graph[S_sort], &bun)@ bun = BUN_NONE; + free(subjectStr); } else { @:raptor_exception(pdata, "could not determine type of subject")@ } - if (triple->predicate_type == RAPTOR_IDENTIFIER_TYPE_RESOURCE) { - @:rdf_insert(graph[MAP_LEX],(str)triple->predicate)@ + if (triple->predicate->type == RAPTOR_TERM_TYPE_URI) { + unsigned char* predicateStr; + predicateStr = raptor_term_to_string(triple->predicate); + @:rdf_insert(graph[MAP_LEX],(str)predicateStr)@ @:rdf_BUNappend(graph[P_sort], &bun)@ bun = BUN_NONE; + free(predicateStr); } else { @:raptor_exception(pdata, "could not determine type of property")@ } - if (triple->object_type == RAPTOR_IDENTIFIER_TYPE_RESOURCE - || triple->object_type == RAPTOR_IDENTIFIER_TYPE_ANONYMOUS) { - @:rdf_insert(graph[MAP_LEX],(str)triple->object)@ + if (triple->object->type == RAPTOR_TERM_TYPE_URI + || triple->object->type == RAPTOR_TERM_TYPE_BLANK) { + unsigned char* objStr; + objStr = raptor_term_to_string(triple->object); + @:rdf_insert(graph[MAP_LEX],(str)objStr)@ @:rdf_BUNappend(graph[O_sort], &bun)@ bun = BUN_NONE; - } else if (triple->object_type == RAPTOR_IDENTIFIER_TYPE_LITERAL) { - @:rdf_BUNappend_unq_1(graph[MAP_LEX], triple->object)@ + free(objStr); + } else if (triple->object->type == RAPTOR_TERM_TYPE_LITERAL) { + unsigned char* objStr; + objStr = raptor_term_to_string(triple->object); + @:rdf_BUNappend_unq_1(graph[MAP_LEX], (str)objStr)@ @:rdf_BUNappend(graph[O_sort], &bun)@ bun = BUN_NONE; + free(objStr); } else { @:raptor_exception(pdata, "could not determine type of object")@ } @@ -235,11 +247,11 @@ tripleHandler(void* user_data, const rap */ @= set_handlers /* set callback handler for triples */ -raptor_set_statement_handler (@1, @2, tripleHandler); +raptor_parser_set_statement_handler (@2, @3, (raptor_statement_handler) tripleHandler); /* set message handlers */ -raptor_set_fatal_error_handler (@1, @2, fatalHandler); -raptor_set_error_handler (@1, @2, errorHandler); -raptor_set_warning_handler (@1, @2, warningHandler); +raptor_world_set_log_handler (@1, @3, (raptor_log_handler) fatalHandler); +raptor_world_set_log_handler (@1, @3, (raptor_log_handler) errorHandler); +raptor_world_set_log_handler (@1, @3, (raptor_log_handler) warningHandler); @ @c @@ -390,6 +402,7 @@ post_processing (parserData *pdata) BATorder(map_oid); BATsetaccess(map_oid, BAT_READ); /* force BAtmark not to copy bat */ map_oid = BATmirror(BATmark(BATmirror(map_oid), RDF_MIN_LITERAL)); + BATsetaccess(graph[MAP_LEX], BAT_READ); /* force BATmark not to copy bat */ graph[MAP_LEX] = BATmirror(BATmark(BATmirror(graph[MAP_LEX]), RDF_MIN_LITERAL)); @@ -483,8 +496,8 @@ bailout: /* Free memory of raptor */ raptor_free_parser(rparser); raptor_free_uri(uri); -raptor_finish(); -@ +raptor_free_world(world); + @= clean if (pdata != NULL) { @@ -508,6 +521,8 @@ RDFParser (BAT **graph, str *location, s bit isURI; str ret; int iret; + raptor_world *world; + (void) graphname; /* init tokenizer */ @@ -531,19 +546,23 @@ RDFParser (BAT **graph, str *location, s "could not allocate enough memory for pdata\n"); } - /* Init raptor */ - raptor_init(); - pdata->rparser = rparser = raptor_new_parser("guess"); + /* Init raptor2 */ + world = raptor_new_world(); + + //pdata->rparser = rparser = raptor_new_parser(world,"guess"); + pdata->rparser = rparser = raptor_new_parser(world,"turtle"); + if (rparser == NULL) { #ifdef _TKNZR_H TKNZRclose(&iret); #endif - raptor_finish(); + raptor_free_world(world); @:clean@ throw(RDF, "rdf.rdfShred", "could not create raptor parser object\n"); } - @:set_handlers(rparser, pdata)@ - raptor_set_parser_strict(rparser, 0); + @:set_handlers(world, rparser, pdata)@ + + //raptor_parser_set_option(rparser, 0); //MDPHAM: CHECK FOR THIS SETTING /* Parse URI or local file. */ ret = URLisaURL(&isURI, location); @@ -554,8 +573,8 @@ RDFParser (BAT **graph, str *location, s @:clean@ return ret; } else if (isURI) { - uri = raptor_new_uri((unsigned char *) pdata->location); - iret = raptor_parse_uri(rparser, uri, NULL); + uri = raptor_new_uri(world, (unsigned char *) pdata->location); + iret = raptor_parser_parse_uri(rparser, uri, NULL); } else { /* Too slow loading --> use old code @@ -580,9 +599,9 @@ RDFParser (BAT **graph, str *location, s */ /* Old code */ - uri = raptor_new_uri( + uri = raptor_new_uri(world, raptor_uri_filename_to_uri_string(pdata->location)); - iret = raptor_parse_file(rparser, uri, NULL); + iret = raptor_parser_parse_file(rparser, uri, NULL); } @:clean_raptor@ #ifdef _TKNZR_H _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list