From aa7ff987debe835e218809d8a5b37bcbe21685be Mon Sep 17 00:00:00 2001 From: Alexander Bigerl Date: Wed, 9 Jul 2025 10:16:18 +0200 Subject: [PATCH 1/3] Update LICENSE --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 93bcc65b..0510a70e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2025 Data Science Group at Paderborn University, Germany +Copyright (c) 2025 Tentris GmbH Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 3f9b176b36bd82cf773685adeca63e5779d45af6 Mon Sep 17 00:00:00 2001 From: mcb5637 <28106698+mcb5637@users.noreply.github.com> Date: Thu, 10 Jul 2025 16:48:21 +0200 Subject: [PATCH 2/3] Fix: static analyzer (#396) --- src/rdf4cpp/Literal.cpp | 6 +++++- tests/CMakeLists.txt | 2 +- tests/nodes/tests_Literal.cpp | 7 ++++++- tests/nodes/tests_Node.cpp | 5 ++++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/rdf4cpp/Literal.cpp b/src/rdf4cpp/Literal.cpp index d3d1ed40..24052db7 100644 --- a/src/rdf4cpp/Literal.cpp +++ b/src/rdf4cpp/Literal.cpp @@ -467,6 +467,10 @@ Literal Literal::as_datatype_eq(Literal const &other, storage::DynNodeStoragePtr } IRI Literal::datatype() const noexcept { + if (null()) { + return IRI::make_null(); + } + if (this->is_fixed()) { return IRI{storage::identifier::datatype_iri_handle_for_fixed_lit_handle(handle_)}; } @@ -1083,7 +1087,7 @@ Literal Literal::numeric_unop_impl(OpSelect op_select, storage::DynNodeStoragePt auto const [operand_entry, value] = [&]() noexcept { if (this_entry->numeric_ops->is_stub()) { - auto const impl_converter = DatatypeRegistry::get_numeric_op_impl_conversion(*this_entry); + auto const &impl_converter = DatatypeRegistry::get_numeric_op_impl_conversion(*this_entry); auto const target_num_ops = DatatypeRegistry::get_entry(impl_converter.target_type_id); return std::make_pair(target_num_ops, impl_converter.convert(this->value())); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2bcaae10..548eb1d8 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -355,7 +355,7 @@ target_link_libraries(tests_Serialization add_test(NAME tests_Serialization COMMAND tests_Serialization) if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/test_swdf/swdf.nt") - file(DOWNLOAD "https://files.dice-research.org/datasets/ISWC2020_Tentris/swdf.zip" "${CMAKE_CURRENT_BINARY_DIR}/test_swdf/swdf.zip") + file(DOWNLOAD "https://files.tentris.dev/swdf.zip" "${CMAKE_CURRENT_BINARY_DIR}/test_swdf/swdf.zip") execute_process(COMMAND unzip "${CMAKE_CURRENT_BINARY_DIR}/test_swdf/swdf.zip" -d "${CMAKE_CURRENT_BINARY_DIR}/test_swdf") file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/test_swdf/swdf.zip") endif () diff --git a/tests/nodes/tests_Literal.cpp b/tests/nodes/tests_Literal.cpp index b3325f01..271ff583 100644 --- a/tests/nodes/tests_Literal.cpp +++ b/tests/nodes/tests_Literal.cpp @@ -15,6 +15,7 @@ int main(int argc, char **argv) { reference_node_storage::SyncReferenceNodeStorage syncns{}; default_node_storage = syncns; auto ret = doctest::Context{argc, argv}.run(); + default_node_storage = nullptr; if (ret != 0) { return ret; } @@ -23,7 +24,9 @@ int main(int argc, char **argv) { { reference_node_storage::UnsyncReferenceNodeStorage unsyncns{}; default_node_storage = unsyncns; - return doctest::Context{argc, argv}.run(); + auto ret = doctest::Context{argc, argv}.run(); + default_node_storage = nullptr; + return ret; } } @@ -44,6 +47,8 @@ TEST_CASE("Literal - Check for only lexical form") { CHECK_EQ(lit1.datatype(), iri); CHECK_EQ(lit1.language_tag(), ""); CHECK_EQ(std::string(lit1), "\"Bunny\""); + + CHECK_EQ(Literal::make_null().datatype(), Literal::make_null()); } TEST_CASE("Literal - Check for lexical form with IRI") { diff --git a/tests/nodes/tests_Node.cpp b/tests/nodes/tests_Node.cpp index 3e65aeaa..302e30f5 100644 --- a/tests/nodes/tests_Node.cpp +++ b/tests/nodes/tests_Node.cpp @@ -20,12 +20,15 @@ int main(int argc, char **argv) { if (ret != 0) { return ret; } + default_node_storage = nullptr; } { reference_node_storage::UnsyncReferenceNodeStorage unsyncns{}; default_node_storage = unsyncns; - return doctest::Context{argc, argv}.run(); + auto ret = doctest::Context{argc, argv}.run(); + default_node_storage = nullptr; + return ret; } } From a32631ecdd14257aa34130cf2571bcab8f7dc7db Mon Sep 17 00:00:00 2001 From: Liss Heidrich <31625940+liss-h@users.noreply.github.com> Date: Thu, 10 Jul 2025 16:58:07 +0200 Subject: [PATCH 3/3] version bump --- CMakeLists.txt | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7567fa15..703e2953 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.22) -project(rdf4cpp VERSION 0.1.3) +project(rdf4cpp VERSION 0.1.4) set(POBR_VERSION 3) # Persisted Object Binary Representation include(cmake/boilerplate_init.cmake) diff --git a/README.md b/README.md index d946015e..b91ed1ca 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ To use _rdf4cpp_, add it to your `conanfile.txt`: ``` [requires] -rdf4cpp/0.1.3 +rdf4cpp/0.1.4 ``` For getting started how to use rdf4cpp, check out the [examples](./examples) directory and refer to our documentation.