summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-11-29 03:56:23 +0000
committerDavid Robillard <d@drobilla.net>2007-11-29 03:56:23 +0000
commit813d62225110aa832e812873965c3a4fb95161fb (patch)
tree9b116ccbb6489e49da9cd402aff1bfbacb3b7db0 /src
parentcb4711a1ec48c9973c858ecd3355fa8ab76eda46 (diff)
downloadraul-813d62225110aa832e812873965c3a4fb95161fb.tar.gz
raul-813d62225110aa832e812873965c3a4fb95161fb.tar.bz2
raul-813d62225110aa832e812873965c3a4fb95161fb.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/RDFModel.cpp24
1 files changed, 14 insertions, 10 deletions
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);
@@ -95,6 +89,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()
{
assert(_serialiser);