You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by wi...@apache.org on 2016/05/02 11:50:08 UTC

[31/50] [abbrv] marmotta git commit: - code cleanups, better reuse

- code cleanups, better reuse


Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/a165b8e4
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/a165b8e4
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/a165b8e4

Branch: refs/heads/MARMOTTA-584
Commit: a165b8e494619da77697c98b814cda87654f902b
Parents: 4ab20b3
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Sat Feb 13 18:00:36 2016 +0100
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Sat Feb 13 18:00:36 2016 +0100

----------------------------------------------------------------------
 libraries/ostrich/backend/CMakeLists.txt        |   2 +-
 libraries/ostrich/backend/parser/rdf_parser.cc  |  26 +++-
 libraries/ostrich/backend/parser/rdf_parser.h   |   2 +
 .../backend/persistence/marmotta_updatedb.cc    |  12 +-
 .../ostrich/backend/serializer/CMakeLists.txt   |  10 +-
 .../backend/serializer/serializer_base.cc       |  16 ++-
 .../backend/serializer/serializer_raptor.cc     | 125 +++----------------
 libraries/ostrich/backend/util/raptor_util.cc   |  64 ++++++++++
 libraries/ostrich/backend/util/raptor_util.h    |   6 +-
 9 files changed, 134 insertions(+), 129 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/a165b8e4/libraries/ostrich/backend/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/CMakeLists.txt b/libraries/ostrich/backend/CMakeLists.txt
index 5a8f110..61156a5 100644
--- a/libraries/ostrich/backend/CMakeLists.txt
+++ b/libraries/ostrich/backend/CMakeLists.txt
@@ -17,7 +17,7 @@ find_package (GLog REQUIRED)
 find_package (Boost 1.54.0 COMPONENTS iostreams filesystem system)
 find_package (Tcmalloc)
 
-#add_definitions(-DNDEBUG)
+add_definitions(-DNDEBUG)
 
 if (Boost_IOSTREAMS_FOUND)
     message(STATUS "Enabling gzip/bzip2 support (Boost iostreams found)")

http://git-wip-us.apache.org/repos/asf/marmotta/blob/a165b8e4/libraries/ostrich/backend/parser/rdf_parser.cc
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/parser/rdf_parser.cc b/libraries/ostrich/backend/parser/rdf_parser.cc
index cf2dc4d..ebfdc6b 100644
--- a/libraries/ostrich/backend/parser/rdf_parser.cc
+++ b/libraries/ostrich/backend/parser/rdf_parser.cc
@@ -18,15 +18,18 @@
 #include "rdf_parser.h"
 #include <raptor2/raptor2.h>
 #include <util/raptor_util.h>
+#include <glog/logging.h>
 
 namespace marmotta {
 namespace parser {
+
 Parser::Parser(const rdf::URI& baseUri, Format format)
         : stmt_handler([](const rdf::Statement& stmt) { })
         , ns_handler([](const rdf::Namespace& ns) { })
 {
     world = raptor_new_world();
     base  = raptor_new_uri(world, (unsigned char const *) baseUri.getUri().c_str());
+    raptor_world_set_log_handler(world, this, raptor_error_handler);
 
     switch (format) {
         case RDFXML:
@@ -79,15 +82,34 @@ void Parser::raptor_ns_handler(void *user_data, raptor_namespace *nspace) {
             (const char*)raptor_uri_as_string(raptor_namespace_get_uri(nspace))));
 }
 
+void Parser::raptor_error_handler(void *user_data, raptor_log_message* message) {
+    Parser* p = static_cast<Parser*>(user_data);
+    p->error = std::string("parse error (")
+               + std::to_string(message->locator->line) + ":"
+               + std::to_string(message->locator->column) + "): "
+               + message->text;
+
+    LOG(ERROR) << p->error;
+}
+
+
 void Parser::parse(std::istream &in) {
     if(in) {
         raptor_parser_parse_start(parser, base);
 
+        int status = 0;
+
         char buffer[8192];
         while (in.read(buffer, 8192)) {
-            raptor_parser_parse_chunk(parser, (unsigned char const *) buffer, in.gcount(), 0);
+            status = raptor_parser_parse_chunk(parser, (unsigned char const *) buffer, in.gcount(), 0);
+            if (status != 0) {
+                throw ParseError(error);
+            }
+        }
+        status = raptor_parser_parse_chunk(parser, (unsigned char const *) buffer, in.gcount(), 1);
+        if (status != 0) {
+            throw ParseError(error);
         }
-        raptor_parser_parse_chunk(parser, (unsigned char const *) buffer, in.gcount(), 1);
     }
 }
 

http://git-wip-us.apache.org/repos/asf/marmotta/blob/a165b8e4/libraries/ostrich/backend/parser/rdf_parser.h
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/parser/rdf_parser.h b/libraries/ostrich/backend/parser/rdf_parser.h
index de2ebdf..b4ff346 100644
--- a/libraries/ostrich/backend/parser/rdf_parser.h
+++ b/libraries/ostrich/backend/parser/rdf_parser.h
@@ -66,12 +66,14 @@ class Parser {
     raptor_parser* parser;
     raptor_world*  world;
     raptor_uri*    base;
+    std::string    error;
 
     std::function<void(const rdf::Statement&)> stmt_handler;
     std::function<void(const rdf::Namespace&)> ns_handler;
 
     static void raptor_stmt_handler(void* user_data, raptor_statement* statement);
     static void raptor_ns_handler(void* user_data, raptor_namespace *nspace);
+    static void raptor_error_handler(void *user_data, raptor_log_message* message);
 };
 
 class ParseError : std::exception {

http://git-wip-us.apache.org/repos/asf/marmotta/blob/a165b8e4/libraries/ostrich/backend/persistence/marmotta_updatedb.cc
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/persistence/marmotta_updatedb.cc b/libraries/ostrich/backend/persistence/marmotta_updatedb.cc
index b26b019..f29bef9 100644
--- a/libraries/ostrich/backend/persistence/marmotta_updatedb.cc
+++ b/libraries/ostrich/backend/persistence/marmotta_updatedb.cc
@@ -118,17 +118,7 @@ class MarmottaClient {
     }
 
     int64_t size() {
-        /*
-        ClientContext context;
-        google::protobuf::Int64Value result;
-
-        Status status = stub_->Size(&context, r, &result);
-        if (status.ok()) {
-            return result.value();
-        } else {
-            return -1;
-        }
-         */
+        return db->Size();
     }
  private:
     marmotta::persistence::LevelDBPersistence* db;

http://git-wip-us.apache.org/repos/asf/marmotta/blob/a165b8e4/libraries/ostrich/backend/serializer/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/serializer/CMakeLists.txt b/libraries/ostrich/backend/serializer/CMakeLists.txt
index 0fe9c4c..b050fb9 100644
--- a/libraries/ostrich/backend/serializer/CMakeLists.txt
+++ b/libraries/ostrich/backend/serializer/CMakeLists.txt
@@ -1,4 +1,10 @@
 include_directories(.. ${CMAKE_CURRENT_BINARY_DIR}/..)
 
-add_library(marmotta_serializer serializer_raptor.h serializer_raptor.cc serializer_raptor.cc serializer_proto.cc serializer_proto.h serializer_base.cc serializer_base.h serializer.cc serializer.h)
-target_link_libraries(marmotta_serializer marmotta_model ${CMAKE_THREAD_LIBS_INIT} ${RAPTOR_LIBRARY})
\ No newline at end of file
+add_library(marmotta_serializer
+        serializer_raptor.h serializer_raptor.cc
+        serializer_proto.cc serializer_proto.h
+        serializer_base.cc serializer_base.h
+        serializer.cc serializer.h)
+target_link_libraries(marmotta_serializer
+        marmotta_model marmotta_raptor_util
+        ${CMAKE_THREAD_LIBS_INIT} ${RAPTOR_LIBRARY})
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/marmotta/blob/a165b8e4/libraries/ostrich/backend/serializer/serializer_base.cc
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/serializer/serializer_base.cc b/libraries/ostrich/backend/serializer/serializer_base.cc
index 4b3e86d..c168dae 100644
--- a/libraries/ostrich/backend/serializer/serializer_base.cc
+++ b/libraries/ostrich/backend/serializer/serializer_base.cc
@@ -21,6 +21,14 @@ namespace marmotta {
 namespace serializer {
 
 namespace {
+
+const std::map<std::string, rdf::URI> kDefaultNamespaces = {
+        {"skos", "http://www.w3.org/2004/02/skos/core#"},
+        {"rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"},
+        {"rdfs", "http://www.w3.org/2000/01/rdf-schema#"},
+        {"owl", "http://www.w3.org/2002/07/owl#"},
+};
+
 static std::map<std::string, rdf::URI> namespacesMap(std::vector<rdf::Namespace> list) {
     std::map<std::string, rdf::URI> result;
     for (auto it = list.cbegin(); it != list.cend(); it++) {
@@ -54,10 +62,14 @@ Format FormatFromString(const std::string &name) {
 }
 
 SerializerBase::SerializerBase(const rdf::URI& baseUri, Format format, std::vector<rdf::Namespace> namespaces)
-        : baseUri(baseUri), format(format), namespaces(namespacesMap(namespaces)) { }
+        : baseUri(baseUri), format(format), namespaces(namespacesMap(namespaces)) {
+    this->namespaces.insert(kDefaultNamespaces.cbegin(), kDefaultNamespaces.cend());
+}
 
 SerializerBase::SerializerBase(const rdf::URI& baseUri, Format format, std::map<std::string, rdf::URI> namespaces)
-        : baseUri(baseUri), format(format), namespaces(namespaces) { }
+        : baseUri(baseUri), format(format), namespaces(namespaces) {
+    this->namespaces.insert(kDefaultNamespaces.cbegin(), kDefaultNamespaces.cend());
+}
 
 
 }  // namespace serializer

http://git-wip-us.apache.org/repos/asf/marmotta/blob/a165b8e4/libraries/ostrich/backend/serializer/serializer_raptor.cc
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/serializer/serializer_raptor.cc b/libraries/ostrich/backend/serializer/serializer_raptor.cc
index ff37691..f7788fb 100644
--- a/libraries/ostrich/backend/serializer/serializer_raptor.cc
+++ b/libraries/ostrich/backend/serializer/serializer_raptor.cc
@@ -16,6 +16,11 @@
  * limitations under the License.
  */
 #include "serializer_raptor.h"
+#include <raptor2/raptor2.h>
+#include <util/raptor_util.h>
+
+#define STR(s) (const unsigned char*)s.c_str()
+#define CPSTR(s) (const unsigned char*)strdup(s.c_str())
 
 namespace marmotta {
 namespace serializer {
@@ -97,7 +102,7 @@ RaptorSerializer::RaptorSerializer(const rdf::URI& baseUri, Format format)
         : SerializerBase(baseUri, format) {
 
     world = raptor_new_world();
-    base  = raptor_new_uri(world, (unsigned char const *) baseUri.getUri().c_str());
+    base  = raptor_new_uri(world, STR(baseUri.getUri()));
     initRaptor();
 }
 
@@ -105,7 +110,7 @@ RaptorSerializer::RaptorSerializer(const rdf::URI& baseUri, Format format, std::
         : SerializerBase(baseUri, format, namespaces) {
 
     world = raptor_new_world();
-    base  = raptor_new_uri(world, (unsigned char const *) baseUri.getUri().c_str());
+    base  = raptor_new_uri(world, STR(baseUri.getUri()));
     initRaptor();
 }
 
@@ -113,77 +118,30 @@ RaptorSerializer::RaptorSerializer(const rdf::URI& baseUri, Format format, std::
         : SerializerBase(baseUri, format, namespaces) {
 
     world = raptor_new_world();
-    base  = raptor_new_uri(world, (unsigned char const *) baseUri.getUri().c_str());
+    base  = raptor_new_uri(world, STR(baseUri.getUri()));
     initRaptor();
 }
 
 
 RaptorSerializer::~RaptorSerializer() {
     // check for NULL in case a move operation has set the fields to a null pointer
-    if(serializer != NULL)
+    if(serializer != nullptr)
         raptor_free_serializer(serializer);
 
-    if(base != NULL)
+    if(base != nullptr)
         raptor_free_uri(base);
 
-    if(world != NULL)
+    if(world != nullptr)
         raptor_free_world(world);
 
 }
 
-/*
-RaptorSerializer::RaptorSerializer(const RaptorSerializer &other) {
-    format = other.format;
-    namespaces = other.namespaces;
-
-    world = raptor_new_world();
-    base  = raptor_new_uri(world, raptor_uri_as_string(other.base));
-    initRaptor();
-}
-
-RaptorSerializer::RaptorSerializer(RaptorSerializer &&other) {
-    format = other.format;
-    namespaces = other.namespaces;
-    base = other.base;
-    world = other.world;
-    serializer = other.serializer;
-
-    other.serializer = NULL;
-    other.base = NULL;
-    other.world = NULL;
-}
-
-RaptorSerializer &RaptorSerializer::operator=(const RaptorSerializer &other) {
-    format = other.format;
-    namespaces = other.namespaces;
-
-    world = raptor_new_world();
-    base  = raptor_new_uri(world, raptor_uri_as_string(other.base));
-    initRaptor();
-
-    return *this;
-}
-
-RaptorSerializer &RaptorSerializer::operator=(RaptorSerializer &&other) {
-    format = other.format;
-    namespaces = other.namespaces;
-    serializer = other.serializer;
-    base = other.base;
-    world = other.world;
-
-    other.serializer = NULL;
-    other.base = NULL;
-    other.world = NULL;
-
-    return *this;
-}
-*/
 
 void RaptorSerializer::initRaptor() {
     serializer = raptor_new_serializer(world, raptorFormat(format).c_str());
     for(const auto &e : namespaces) {
-        raptor_uri* uri = raptor_new_uri(world, (unsigned char const *) e.second.getUri().c_str());
-        raptor_serializer_set_namespace(serializer, uri, (unsigned char const *) e.first.c_str());
+        raptor_uri* uri = raptor_new_uri(world, STR(e.second.getUri()));
+        raptor_serializer_set_namespace(serializer, uri, CPSTR(e.first));
     }
     raptor_world_set_log_handler(world, this, [](void *user_data, raptor_log_message* message){
         std::cerr << message->level << ": " << message->text << std::endl;
@@ -198,59 +156,10 @@ void RaptorSerializer::prepare(std::ostream &out) {
 void RaptorSerializer::serialize(const rdf::Statement &stmt) {
     raptor_statement* triple = raptor_new_statement(world);
 
-    if (stmt.getMessage().subject().has_uri()) {
-        triple->subject = raptor_new_term_from_uri_string(
-                world, (unsigned char const *) stmt.getMessage().subject().uri().uri().c_str());
-    } else if (stmt.getMessage().subject().has_bnode()) {
-        triple->subject = raptor_new_term_from_blank(
-                world, (unsigned char const *) stmt.getMessage().subject().bnode().id().c_str());
-    } else {
-        throw SerializationError("invalid subject type");
-    }
-
-    triple->predicate = raptor_new_term_from_uri_string(
-            world,  (unsigned char const *) stmt.getMessage().predicate().uri().c_str());
-
-    if (stmt.getMessage().object().has_resource()) {
-        const marmotta::rdf::proto::Resource& r = stmt.getMessage().object().resource();
-        if (r.has_uri()) {
-            triple->object = raptor_new_term_from_uri_string(
-                    world, (unsigned char const *) r.uri().uri().c_str());
-        } else if(r.has_bnode()) {
-            triple->object = raptor_new_term_from_blank(
-                    world, (unsigned char const *) r.bnode().id().c_str());
-        } else {
-            throw SerializationError("invalid object resource type");
-        }
-    } else if (stmt.getMessage().object().has_literal()) {
-        const marmotta::rdf::proto::Literal& l = stmt.getMessage().object().literal();
-        if (l.has_stringliteral()) {
-            triple->object = raptor_new_term_from_counted_literal(
-                    world,
-                    (unsigned char const *) l.stringliteral().content().c_str(), l.stringliteral().content().size(), NULL,
-                    (unsigned char const *) l.stringliteral().language().c_str(), l.stringliteral().language().size());
-        } else if(l.has_dataliteral()) {
-            triple->object = raptor_new_term_from_counted_literal(
-                    world,
-                    (unsigned char const *) l.dataliteral().content().c_str(), l.dataliteral().content().size(),
-                    raptor_new_uri(world, (unsigned char const *) l.dataliteral().datatype().uri().c_str()),
-                    (unsigned char const *) "", 0);
-        } else {
-            throw SerializationError("invalid object literal type");
-        }
-    } else {
-        throw SerializationError("invalid object type");
-    }
-
-    if (stmt.getMessage().context().has_uri()) {
-        triple->graph = raptor_new_term_from_uri_string(
-                world,  (unsigned char const *) stmt.getMessage().context().uri().uri().c_str());
-    } else if (stmt.getMessage().context().has_bnode()) {
-        triple->graph = raptor_new_term_from_blank(
-                world, (unsigned char const *) stmt.getMessage().context().bnode().id().c_str());
-    } else {
-        triple->graph = nullptr;
-    }
+    triple->subject   = util::raptor::AsTerm(world, stmt.getSubject());
+    triple->predicate = util::raptor::AsTerm(world, stmt.getPredicate());
+    triple->object    = util::raptor::AsTerm(world, stmt.getObject());
+    triple->graph     = util::raptor::AsTerm(world, stmt.getContext());
 
     raptor_serializer_serialize_statement(serializer, triple);
 

http://git-wip-us.apache.org/repos/asf/marmotta/blob/a165b8e4/libraries/ostrich/backend/util/raptor_util.cc
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/util/raptor_util.cc b/libraries/ostrich/backend/util/raptor_util.cc
index bbeaecd..e20b265 100644
--- a/libraries/ostrich/backend/util/raptor_util.cc
+++ b/libraries/ostrich/backend/util/raptor_util.cc
@@ -109,6 +109,70 @@ rdf::Statement ConvertStatement(raptor_statement *triple) {
 
     }
 }
+
+namespace {
+raptor_term *AsStringLiteral(raptor_world* world, const rdf::Value &v) {
+    rdf::StringLiteral l(v.getMessage().literal().stringliteral());
+
+    return raptor_new_term_from_counted_literal(
+            world,
+            STR(l.getContent()), l.getContent().size(),
+            nullptr,
+            STR(l.getLanguage()), l.getLanguage().size());
+}
+
+raptor_term *AsDatatypeLiteral(raptor_world* world, const rdf::Value &v) {
+    rdf::DatatypeLiteral l(v.getMessage().literal().dataliteral());
+
+    return raptor_new_term_from_counted_literal(
+            world,
+            STR(l.getContent()), l.getContent().size(),
+            raptor_new_uri(world, STR(l.getDatatype().getUri())),
+            (unsigned char const *) "", 0);
+}
+}  // namespace
+
+
+/*
+ * Convert a Marmotta Resource into a raptor term.
+ */
+raptor_term* AsTerm(raptor_world* world, const rdf::Resource& r) {
+    switch (r.type) {
+        case rdf::Resource::URI:
+            return raptor_new_term_from_uri_string(world, STR(r.stringValue()));
+        case rdf::Resource::BNODE:
+            return raptor_new_term_from_blank(world, STR(r.stringValue()));
+        default:
+            return nullptr;
+    }
+}
+
+/*
+ * Convert a Marmotta Value into a raptor term.
+ */
+raptor_term* AsTerm(raptor_world* world, const rdf::Value& v) {
+    switch (v.type) {
+        case rdf::Value::URI:
+            return raptor_new_term_from_uri_string(world, STR(v.stringValue()));
+        case rdf::Value::BNODE:
+            return raptor_new_term_from_blank(world, STR(v.stringValue()));
+        case rdf::Value::STRING_LITERAL:
+            return AsStringLiteral(world, v);
+        case rdf::Value::DATATYPE_LITERAL:
+            return AsDatatypeLiteral(world, v);
+        default:
+            return nullptr;
+    }
+
+}
+
+/*
+ * Convert a Marmotta URI into a raptor term.
+ */
+raptor_term* AsTerm(raptor_world* world, const rdf::URI& u) {
+    return raptor_new_term_from_uri_string(world, STR(u.stringValue()));
+}
+
 }  // namespace raptor
 }  // namespace util
 }  // namespace marmotta

http://git-wip-us.apache.org/repos/asf/marmotta/blob/a165b8e4/libraries/ostrich/backend/util/raptor_util.h
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/util/raptor_util.h b/libraries/ostrich/backend/util/raptor_util.h
index 1899235..445d61e 100644
--- a/libraries/ostrich/backend/util/raptor_util.h
+++ b/libraries/ostrich/backend/util/raptor_util.h
@@ -54,17 +54,17 @@ rdf::Statement ConvertStatement(raptor_statement* triple);
 /*
  * Convert a Marmotta Resource into a raptor term.
  */
-raptor_term* AsLiteral(raptor_world* world, const rdf::Resource& r);
+raptor_term* AsTerm(raptor_world* world, const rdf::Resource& r);
 
 /*
  * Convert a Marmotta Value into a raptor term.
  */
-raptor_term* AsLiteral(raptor_world* world, const rdf::Value& v);
+raptor_term* AsTerm(raptor_world* world, const rdf::Value& v);
 
 /*
  * Convert a Marmotta URI into a raptor term.
  */
-raptor_term* AsLiteral(raptor_world* world, const rdf::URI& u);
+raptor_term* AsTerm(raptor_world* world, const rdf::URI& u);
 
 }  // namespace raptor
 }  // namespace util