00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef _DATAQUAY_STORE_H_
00035 #define _DATAQUAY_STORE_H_
00036
00037 #include "Triple.h"
00038
00039 #include <QList>
00040 #include <QHash>
00041
00042 namespace Dataquay
00043 {
00044
00046 typedef QList<Triple> Triples;
00047
00049 typedef QHash<QString, Node> Dictionary;
00050
00052 typedef QList<Dictionary> ResultSet;
00053
00054 enum ChangeType { AddTriple, RemoveTriple };
00055
00057 typedef std::pair<ChangeType, Triple> Change;
00058
00060 typedef QList<Change> ChangeSet;
00061
00062
00068 class Store
00069 {
00070 public:
00078 virtual bool add(Triple t) = 0;
00079
00087 virtual bool remove(Triple t) = 0;
00088
00094 virtual void change(ChangeSet changes) = 0;
00095
00102 virtual void revert(ChangeSet changes) = 0;
00103
00110 virtual bool contains(Triple t) const = 0;
00111
00119 virtual Triples match(Triple t) const = 0;
00120
00136 virtual ResultSet query(QString sparql) const = 0;
00137
00145 virtual Triple matchFirst(Triple t) const = 0;
00146
00153 virtual Node queryFirst(QString sparql, QString bindingName) const = 0;
00154
00160 virtual QUrl getUniqueUri(QString prefix) const = 0;
00161
00168 virtual QUrl expand(QString uri) const = 0;
00169
00170 protected:
00171 virtual ~Store() { }
00172 };
00173
00174 }
00175
00176 #endif
00177