summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-07-04 04:09:25 +0000
committerDavid Robillard <d@drobilla.net>2007-07-04 04:09:25 +0000
commit1225ea7c0c4c451a5b47eeecef8a945d2c4a8388 (patch)
tree43cae2e6d0c64e423b16cbeea11abefc6d3ba47f /src
parent1657e94918720cfe352a09f06cc756f277349628 (diff)
downloadraul-1225ea7c0c4c451a5b47eeecef8a945d2c4a8388.tar.gz
raul-1225ea7c0c4c451a5b47eeecef8a945d2c4a8388.tar.bz2
raul-1225ea7c0c4c451a5b47eeecef8a945d2c4a8388.zip
Fix model URI serialization relative to base URI.
git-svn-id: http://svn.drobilla.net/lad/raul@574 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r--src/RDFModel.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/RDFModel.cpp b/src/RDFModel.cpp
index 9d8fac1..df5936d 100644
--- a/src/RDFModel.cpp
+++ b/src/RDFModel.cpp
@@ -119,16 +119,22 @@ Model::serialize_to_file_handle(FILE* fd)
/** Begin a serialization to a file.
*
+ * \a uri must be a local (file://) URI.
+ *
* This must be called before any write methods.
*/
void
-Model::serialize_to_file(const string& filename)
+Model::serialize_to_file(const Glib::ustring& uri_str)
{
- _serializer = librdf_new_serializer(_world.world(), RDF_LANG, NULL, NULL);
- setup_prefixes();
- librdf_serializer_serialize_model_to_file(_serializer, filename.c_str(), NULL, _model);
- librdf_free_serializer(_serializer);
- _serializer = NULL;
+ librdf_uri* uri = librdf_new_uri(_world.world(), (const unsigned char*)uri_str.c_str());
+ if (uri && librdf_uri_is_file_uri(uri)) {
+ _serializer = librdf_new_serializer(_world.world(), RDF_LANG, NULL, NULL);
+ setup_prefixes();
+ librdf_serializer_serialize_model_to_file(_serializer, librdf_uri_to_filename(uri), uri, _model);
+ librdf_free_serializer(_serializer);
+ _serializer = NULL;
+ }
+ librdf_free_uri(uri);
}