6#include <QSharedPointer>
11#include "RDFDataset.h"
12#include "Transaction.h"
16namespace kDB::Repository
20 friend class ::TestTripleStore;
27 enum class Option : quint32
33 Q_DECLARE_FLAGS(Options, Option)
48 QString tablename()
const;
49 Options options()
const;
50 template<
typename _ObjectType_>
52 const QString& _predicateSuffix,
const _ObjectType_& _object,
55 return insert(_subject,
knowCore::Uri(_predicateBase, _predicateSuffix), _object,
58 template<
typename _TUri_>
71 const QString& _lang = QString(),
76 template<
typename _TPredicate_0_,
typename _TObject_0_,
typename... _TPredicteObjects_>
79 const std::tuple<_TPredicate_0_, _TObject_0_, _TPredicteObjects_...>& _objects,
86 template<
typename _TObject_,
typename... _TArgs_>
90 template<
typename _TObject_,
typename... _TArgs_>
93 const knowCore::Uri& _predicate_next,
const _TArgs_&... _args);
109 const QString& _lang = QString(),
123 cres_qresult<QList<knowRDF::Triple>>
triples()
const;
144 cres_qresult<void> enableVersioning();
145 cres_qresult<void> disableVersioning();
147 cres_qresult<void> enableNotifications();
148 cres_qresult<void> disableNotifications();
150 QMetaObject::Connection listen(
const QObject* receiver,
const char* member,
151 Qt::ConnectionType _type = Qt::AutoConnection);
152 QMetaObject::Connection listen(
const std::function<
void(
const QByteArray&)>& _receiver);
154 QMetaObject::Connection listenOptionsChanged(
const QObject* receiver,
const char* member,
155 Qt::ConnectionType _type = Qt::AutoConnection);
156 QMetaObject::Connection listenOptionsChanged(
const std::function<
void()>& _receiver);
158 QMetaObject::Connection listenMetaChanged(
const QObject* receiver,
const char* member,
159 Qt::ConnectionType _type = Qt::AutoConnection);
160 QMetaObject::Connection listenMetaChanged(
const std::function<
void()>& _receiver);
162 bool unlisten(QMetaObject::Connection _connection);
181 return cres_success();
183 template<
typename _TUri_>
185 inline cres_qresult<void>
187 const _TUri_& _value,
const Transaction& _transaction)
189 return insert(_subject, _predicate,
knowCore::Uri(_value), _transaction);
192 template<
typename _TObject_,
typename... _TArgs_>
193 inline cres_qresult<void> TripleStore::insert(
const Transaction& _transaction,
196 const _TObject_& _object,
const _TArgs_&... _args)
198 cres_try(cres_ignore, insert(_subject, _predicate, _object, _transaction));
199 return insert(_transaction, _subject, _args...);
201 template<
typename _TObject_,
typename... _TArgs_>
202 inline cres_qresult<void>
204 const _TObject_& _object,
const knowCore::Uri& _predicate_next,
205 const _TArgs_&... _args)
207 Transaction t(connection());
208 cres_try(cres_ignore,
209 insert(t, _subject,
knowCore::Uri(_predicate), _object, _predicate_next, _args...));
212 template<
typename _TPredicate_0_,
typename _TObject_0_,
typename... _TPredicteObjects_>
213 cres_qresult<void> TripleStore::insert(
215 const std::tuple<_TPredicate_0_, _TObject_0_, _TPredicteObjects_...>& _objects,
216 const Transaction& _transaction)
219 cres_try(cres_ignore, insert(_subject, _predicate, bn, _transaction));
220 using IFT = cres_qresult<void> (TripleStore::*)(
const Transaction&,
const knowRDF::Subject&,
222 const _TPredicteObjects_&...);
223 return std::apply(
static_cast<IFT
>(&TripleStore::insert<_TObject_0_, _TPredicteObjects_...>),
224 std::tuple_cat(std::make_tuple(
this, _transaction, bn), _objects));
229Q_DECLARE_OPERATORS_FOR_FLAGS(kDB::Repository::TripleStore::Options)
Definition TestTripleStore.h:4
Definition Connection.h:26
Definition SQLInterface_p.h:13
Definition GraphsManager.h:10
Definition RDFDataset.h:13
Definition Transaction.h:19
Definition TripleStore.h:19
VersionControl::Manager * versionControlManager()
Definition TripleStore.cpp:452
std::size_t triplesCount() const
Definition TripleStore.cpp:349
QString generateInsertDataQuery(bool _blankNodeAsUri=false) const
Definition TripleStore.cpp:374
cres_qresult< void > clear(const Transaction &_transaction=Transaction())
Definition TripleStore.cpp:385
TripleStore detach() const
Definition TripleStore.cpp:154
cres_qresult< QList< knowRDF::Triple > > triples() const
Definition TripleStore.cpp:325
knowRDF::Triple triple(std::size_t _r) const
Definition TripleStore.cpp:357
QByteArray contentHash(const Transaction &_transaction=Transaction()) const
Definition TripleStore.cpp:463
Definition Transaction_p.h:9
Definition BlankNode.h:25
Definition TripleStore_p.h:23
Definition TripleStore_p.h:59