knowrob  2.1.0
A Knowledge Base System for Cognition-enabled Robots
QueryableStorage.h
Go to the documentation of this file.
1 /*
2  * This file is part of KnowRob, please consult
3  * https://github.com/knowrob/knowrob for license details.
4  */
5 
6 #ifndef KNOWROB_QUERYABLE_STORAGE_H
7 #define KNOWROB_QUERYABLE_STORAGE_H
8 
9 #include <knowrob/semweb/TripleFormat.h>
10 
11 #include "knowrob/queries/TokenBuffer.h"
12 #include "Storage.h"
13 #include "knowrob/queries/Answer.h"
14 #include "knowrob/semweb/GraphPathQuery.h"
15 #include "knowrob/queries/AnswerYes.h"
16 #include "knowrob/queries/AnswerNo.h"
17 #include "knowrob/semweb/GraphConnective.h"
18 #include "knowrob/semweb/GraphQueryExpansion.h"
19 #include "VersionedOrigin.h"
20 
21 namespace knowrob {
22  using ResourceCounter = std::function<void(std::string_view, uint64_t)>;
23 
27  class QueryableStorage : public Storage {
28  public:
29  static AtomPtr versionProperty;
30 
32 
33  ~QueryableStorage() override = default;
34 
38  virtual bool isPersistent() const = 0;
39 
45  virtual void foreach(const TripleVisitor &visitor) const;
46 
52  virtual void batch(const TripleHandler &callback) const = 0;
53 
60  virtual void batchOrigin(std::string_view origin, const TripleHandler &callback) = 0;
61 
66  virtual bool contains(const Triple &triple);
67 
72  virtual void match(const TriplePattern &query, const TripleVisitor &visitor);
73 
79  virtual void query(const GraphQueryPtr &query, const BindingsHandler &callback) = 0;
80 
84  virtual void count(const ResourceCounter &callback) const = 0;
85 
92  bool exportTo(const std::string &filename,
94 
98  std::vector<VersionedOriginPtr> getOrigins();
99 
104  std::optional<std::string> getVersionOfOrigin(std::string_view origin);
105 
111  void setVersionOfOrigin(std::string_view origin, std::string_view version);
112 
117 
124 
132  static std::shared_ptr<AnswerYes> yes(const GraphPathQueryPtr &original,
133  const GraphQueryExpansionPtr &expansion,
134  const BindingsPtr &bindings);
135 
141  static std::shared_ptr<AnswerNo> no(const GraphPathQueryPtr &q);
142  };
143 
144  using QueryableBackendPtr = std::shared_ptr<QueryableStorage>;
145 }
146 
147 #endif //KNOWROB_QUERYABLE_STORAGE_H
std::optional< std::string > getVersionOfOrigin(std::string_view origin)
virtual bool isPersistent() const =0
GraphQueryExpansionPtr expand(const GraphQueryPtr &q)
virtual void count(const ResourceCounter &callback) const =0
~QueryableStorage() override=default
static std::shared_ptr< AnswerYes > yes(const GraphPathQueryPtr &original, const GraphQueryExpansionPtr &expansion, const BindingsPtr &bindings)
virtual void batch(const TripleHandler &callback) const =0
virtual void batchOrigin(std::string_view origin, const TripleHandler &callback)=0
QueryableStorage(StorageFeatures features=StorageFeature::NothingSpecial)
virtual void match(const TriplePattern &query, const TripleVisitor &visitor)
bool exportTo(const std::string &filename, semweb::TripleFormat format=semweb::RDF_XML) const
void setVersionOfOrigin(std::string_view origin, std::string_view version)
static AtomPtr versionProperty
virtual bool contains(const Triple &triple)
virtual void query(const GraphQueryPtr &query, const BindingsHandler &callback)=0
std::vector< VersionedOriginPtr > getOrigins()
static std::shared_ptr< AnswerNo > no(const GraphPathQueryPtr &q)
FunctionRule & function()
Definition: terms.cpp:140
TermRule & string()
Definition: terms.cpp:63
std::function< void(const TriplePtr &)> TripleVisitor
StorageFeature
Definition: Storage.h:24
std::shared_ptr< GraphQueryExpansion > GraphQueryExpansionPtr
std::shared_ptr< const Bindings > BindingsPtr
Definition: Bindings.h:151
std::function< void(std::string_view, uint64_t)> ResourceCounter
std::function< void(const BindingsPtr &)> BindingsHandler
Definition: Bindings.h:152
std::shared_ptr< Atom > AtomPtr
Definition: Atom.h:69
std::function< void(const TripleContainerPtr &)> TripleHandler
std::shared_ptr< GraphQuery > GraphQueryPtr
Definition: GraphQuery.h:65
std::shared_ptr< QueryableStorage > QueryableBackendPtr
std::shared_ptr< GraphPathQuery > GraphPathQueryPtr