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

Reply via email to