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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list