--- 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
