From 813d62225110aa832e812873965c3a4fb95161fb Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 29 Nov 2007 03:56:23 +0000 Subject: Add base URI support to RDF model (ability to write pretty <> in Turtle with model.base()). git-svn-id: http://svn.drobilla.net/lad/raul@922 a436a847-0d15-0410-975c-d299462d15a1 --- src/RDFModel.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/RDFModel.cpp b/src/RDFModel.cpp index 5680ff1..95f6d68 100644 --- a/src/RDFModel.cpp +++ b/src/RDFModel.cpp @@ -47,7 +47,7 @@ Model::Model(RDF::World& world) /** Load a model from a URI (local file or remote). */ -Model::Model(World& world, const Glib::ustring& data_uri, Glib::ustring base_uri_str) +Model::Model(World& world, const Glib::ustring& data_uri, Glib::ustring base_uri) : _world(world) , _serialiser(NULL) { @@ -55,24 +55,18 @@ Model::Model(World& world, const Glib::ustring& data_uri, Glib::ustring base_uri _storage = librdf_new_storage(_world.world(), "hashes", NULL, "hash-type='memory'"); _model = librdf_new_model(_world.world(), _storage, NULL); + set_base_uri(base_uri); + librdf_uri* uri = librdf_new_uri(world.world(), (const unsigned char*)data_uri.c_str()); - librdf_uri* base_uri = NULL; - if (base_uri_str != "") - base_uri = librdf_new_uri(world.world(), (const unsigned char*)base_uri_str.c_str()); if (uri) { librdf_parser* parser = librdf_new_parser(world.world(), "guess", NULL, NULL); - librdf_parser_parse_into_model(parser, uri, base_uri, _model); - - + librdf_parser_parse_into_model(parser, uri, _base.get_uri(), _model); librdf_free_parser(parser); } else { cerr << "Unable to create URI " << data_uri << endl; } - if (base_uri) - librdf_free_uri(base_uri); - if (uri) librdf_free_uri(uri); @@ -94,6 +88,16 @@ Model::~Model() } +void +Model::set_base_uri(const Glib::ustring& uri) +{ + if (uri == "") + return; + + _base = Node(_world, Node::RESOURCE, uri); +} + + void Model::setup_prefixes() { -- cgit v1.2.1