diff options
-rw-r--r-- | raul/Atom.h | 3 | ||||
-rw-r--r-- | raul/RDFModel.h | 2 | ||||
-rw-r--r-- | src/RDFModel.cpp | 18 |
3 files changed, 16 insertions, 7 deletions
diff --git a/raul/Atom.h b/raul/Atom.h index cded253..2b9d800 100644 --- a/raul/Atom.h +++ b/raul/Atom.h @@ -32,6 +32,9 @@ namespace Raul { */ class Atom { public: + + //TODO: Add a bool type here that serializes nicely to Turtle "true" and "false" + enum Type { NIL, INT, diff --git a/raul/RDFModel.h b/raul/RDFModel.h index 576aec8..35910b5 100644 --- a/raul/RDFModel.h +++ b/raul/RDFModel.h @@ -41,7 +41,7 @@ public: ~Model(); void serialize_to_file_handle(FILE* fd); - void serialize_to_file(const std::string& file); + void serialize_to_file(const Glib::ustring& uri); std::string serialize_to_string(); void add_statement(const Node& subject, 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); } |