.. _program_listing_file_src_rdf4cpp_namespaces_RDF.cpp: Program Listing for File RDF.cpp ================================ |exhale_lsh| :ref:`Return to documentation for file ` (``src/rdf4cpp/namespaces/RDF.cpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "RDF.hpp" #include namespace rdf4cpp::namespaces { RDF::RDF(storage::DynNodeStoragePtr node_storage) : ClosedNamespace{prefix, suffixes, node_storage} {} IRI RDF::operator+(std::string_view suffix) const { if (suffix.starts_with('_')) { size_t id; auto from_chars_result = std::from_chars(suffix.data() + 1, suffix.data() + suffix.size(), id); if (from_chars_result.ec == std::errc() and from_chars_result.ptr == suffix.data() + suffix.size()) { std::string normalized_suffix = std::string{"_"} + std::to_string(id); return Namespace::operator+(normalized_suffix); // add rdf:_ which is also a valid member of this namespace } else { std::ostringstream oss; oss << "Resource " << suffix << " does not exist within the vocabulary " << namespace_iri_ << '.'; throw std::runtime_error{oss.str()}; } } return ClosedNamespace::operator+(suffix); } } // namespace rdf4cpp::namespaces