3#include <kDB/Forward.h>
5#include <QExplicitlySharedDataPointer>
7#include <knowCore/ConstrainedValue.h>
8#include <knowCore/UriList.h>
10#include <kDB/Repository/Connection.h>
14namespace kDB::Repository::RDF
24 static cres_qresult<void> initialise(
const Connection& _connection);
53 static cres_qresult<FocusNodeCollection>
70 static cres_qresult<knowCore::UriList>
76 static cres_qresult<knowCore::UriList>
80 static cres_qresult<void>
112 cres_qresult<std::size_t>
count()
const;
129 cres_qresult<QList<FocusNode>>
all()
const;
137 OperatorOptions(
double _intersectsPrecision) : intersectsPrecision(_intersectsPrecision) {}
138 double intersectsPrecision;
147 cres_qresult<QList<FocusNode>>
149 const QList<QPair<knowCore::Uri, knowCore::ConstrainedValue>>& _constraints,
159 QExplicitlySharedDataPointer<Private> d;
165 static void clearCache();
168 template<
typename _TDerive_>
171 template<
typename _TDerive_>
175 using Derive = _TDerive_;
187 return cres_success(c);
199 cres_try(c.m_focus_node_collection,
201 Derive::containedTypes()));
202 return cres_success(c);
213 cres_try(c.m_focus_node_collection,
215 Derive::containedTypes()));
216 clog_debug_vn(c.isValid(), c.uri());
217 return cres_success(c);
220 bool operator==(
const Derive& _rhs)
const
222 return m_focus_node_collection == _rhs.m_focus_node_collection;
244 cres_qresult<std::size_t>
count()
const
246 return m_focus_node_collection.
count(Derive::primaryType());
251 cres_qresult<QList<ValueType>>
all()
const
257 cres_try(ValueType ds, ValueType::fromFocusNode(node));
260 return cres_success(
all);
262 static cres_qresult<void>
265 return FocusNodeCollection::registerCollection(_connection, Derive::allFocusNodesView(),
266 Derive::collectionType(),
267 Derive::containedTypes());
270 operator Derive()
const {
return Derive(*
this); }
271 cres_qresult<ValueType> focusNode(
const knowCore::Uri& _uri)
const
274 cres_try(ValueType vt, ValueType::fromFocusNode(fn));
275 return cres_success(vt);
277 cres_qresult<bool> hasFocusNode(
const knowCore::Uri& _focusNodeUri,
280 return m_focus_node_collection.
hasFocusNode(_focusNodeUri, _typeUri);
282 cres_qresult<QList<ValueType>>
283 focusNodes(
const QList<QPair<knowCore::Uri, knowCore::ConstrainedValue>>& _constraints,
286 cres_try(
knowCore::UriList default_datatypes, Derive::defaultDatatypes(_constraints));
287 return focusNodes(default_datatypes, _constraints, _operatorOptions);
289 template<
typename... _TArgs_>
290 cres_qresult<QList<ValueType>> focusNodes(
const knowCore::Uri& _uri,
292 const _TArgs_&... _args)
const
296 buildFocusNodeConstraints(&constraints, &operatorOptions, _uri, _constraint, _args...);
297 cres_try(
knowCore::UriList default_datatypes, Derive::defaultDatatypes(constraints));
298 return focusNodes(default_datatypes, constraints, operatorOptions);
301 cres_qresult<ValueType> createFocusNode(
const knowCore::Uri& _typeUri,
306 m_focus_node_collection.
createFocusNode(_typeUri, _properties, _focusNodeUri));
307 return ValueType::fromFocusNode(fn);
312 cres_qresult<QList<ValueType>>
314 const QList<QPair<knowCore::Uri, knowCore::ConstrainedValue>>& _constraints,
318 _default_datatypes, _constraints, _operatorOptions));
322 cres_try(ValueType vt, ValueType::fromFocusNode(node));
325 return cres_success(rs);
328 template<
typename... _TArgs_>
329 void buildFocusNodeConstraints(
330 QList<QPair<knowCore::Uri, knowCore::ConstrainedValue>>* _constraints,
334 _constraints->append({_uri, _constraint});
335 buildFocusNodeConstraints(_constraints, _operatorOptions, _args...);
339 buildFocusNodeConstraints(
QList<QPair<knowCore::Uri, knowCore::ConstrainedValue>>*,
343 *_out_oo = _operatorOptions;
346 void buildFocusNodeConstraints(
QList<QPair<knowCore::Uri, knowCore::ConstrainedValue>>*,
Definition Connection.h:26
Definition QueryConnectionInfo.h:8
Definition FocusNodeCollection.h:173
bool isReadOnly() const
Definition FocusNodeCollection.h:232
static cres_qresult< Derive > getOrCreate(const kDB::Repository::Connection &_connection, const knowCore::Uri &_graph)
Definition FocusNodeCollection.h:209
static cres_qresult< Derive > get(const kDB::Repository::Connection &_connection, const knowCore::Uri &_graph)
Definition FocusNodeCollection.h:182
static cres_qresult< Derive > create(const kDB::Repository::Connection &_connection, const knowCore::Uri &_graph)
Definition FocusNodeCollection.h:195
kDB::Repository::Connection connection() const
Definition FocusNodeCollection.h:240
knowCore::Uri uri() const
Definition FocusNodeCollection.h:236
cres_qresult< std::size_t > count() const
Definition FocusNodeCollection.h:244
bool isValid() const
Definition FocusNodeCollection.h:228
cres_qresult< QList< ValueType > > all() const
Definition FocusNodeCollection.h:251
Definition FocusNodeCollection.h:21
bool isReadOnly() const
Definition FocusNodeCollection.cpp:298
static cres_qresult< knowCore::UriList > allCollectionUris(const kDB::Repository::QueryConnectionInfo &_connection, const knowCore::Uri &_focus_node_type)
Definition FocusNodeCollection.cpp:210
cres_qresult< std::size_t > count() const
Definition FocusNodeCollection.cpp:320
cres_qresult< QList< FocusNode > > all() const
Definition FocusNodeCollection.cpp:390
static cres_qresult< FocusNodeCollection > getOrCreate(const kDB::Repository::Connection &_connection, const knowCore::Uri &_graph, const knowCore::Uri &_collection_type, const knowCore::UriList &_contained_types)
Definition FocusNodeCollection.cpp:164
cres_qresult< FocusNode > focusNode(const knowCore::Uri &_focusNodeUri) const
Definition FocusNodeCollection.cpp:351
cres_qresult< QList< FocusNode > > focusNodes(const knowCore::UriList &_default_datatypes, const QList< QPair< knowCore::Uri, knowCore::ConstrainedValue > > &_constraints, const OperatorOptions &_operatorOptions=OperatorOptions()) const
Definition FocusNodeCollection.cpp:438
cres_qresult< FocusNode > createFocusNode(const knowCore::Uri &_typeUri, const knowCore::ValueHash &_properties, const knowCore::Uri &_focusNodeUri)
Definition FocusNodeCollection.cpp:522
kDB::Repository::Connection connection() const
Definition FocusNodeCollection.cpp:312
static cres_qresult< FocusNodeCollection > get(const kDB::Repository::Connection &_connection, const knowCore::Uri &_collection_uri)
Definition FocusNodeCollection.cpp:90
static FocusNodeCollection allCollections(const kDB::Repository::Connection &_connection)
Definition FocusNodeCollection.cpp:190
cres_qresult< bool > hasFocusNode(const knowCore::Uri &_focusNodeUri, const knowCore::Uri &_typeUri) const
Definition FocusNodeCollection.cpp:375
static FocusNodeCollection allFocusNodes(const kDB::Repository::Connection &_connection)
Definition FocusNodeCollection.cpp:200
cres_qresult< knowCore::Uri > collectionType() const
Definition FocusNodeCollection.cpp:305
static cres_qresult< FocusNodeCollection > create(const kDB::Repository::Connection &_connection, const knowCore::Uri &_graph, const knowCore::Uri &_collection_type, const knowCore::UriList &_contained_types)
Definition FocusNodeCollection.cpp:110
cres_qresult< knowCore::UriList > containedTypes() const
Definition FocusNodeCollection.cpp:300
knowCore::Uri uri() const
Definition FocusNodeCollection.cpp:310
bool isValid() const
Definition FocusNodeCollection.cpp:286
static cres_qresult< knowCore::UriList > allCollectionUrisWith(const kDB::Repository::QueryConnectionInfo &_connection, const knowCore::Uri &_focus_node)
Definition FocusNodeCollection.cpp:231
Definition FocusNode.h:34
Definition ConstrainedValue.h:15
Definition ValueHash.h:13
Definition FocusNodeCollection.cpp:32
Definition FocusNodeCollection.h:169
Definition FocusNodeCollection.h:135