Mercurial > hg > svcore
comparison rdf/SimpleSPARQLQuery.h @ 489:82ab61fa9223
* Reorganise our sparql queries on the basis that Redland must be
available, not only optional. So for anything querying the pool
of data about plugins, we use a single datastore and model which
is initialised at the outset by PluginRDFIndexer and then queried
directly; for anything that "reads from a file" (e.g. loading
annotations) we query directly using Rasqal, going to the
datastore when we need additional plugin-related information.
This may improve performance, but mostly it simplifies the code
and fixes a serious issue with RDF import in the previous versions
(namely that multiple sequential RDF imports would end up sharing
the same RDF data pool!)
author | Chris Cannam |
---|---|
date | Fri, 21 Nov 2008 16:12:29 +0000 |
parents | a82645e788fc |
children | 23945cdd7161 |
comparison
equal
deleted
inserted
replaced
488:1c66e199e7d9 | 489:82ab61fa9223 |
---|---|
35 }; | 35 }; |
36 | 36 |
37 typedef std::map<QString, Value> KeyValueMap; | 37 typedef std::map<QString, Value> KeyValueMap; |
38 typedef std::vector<KeyValueMap> ResultList; | 38 typedef std::vector<KeyValueMap> ResultList; |
39 | 39 |
40 SimpleSPARQLQuery(QString fromUri, QString query); | 40 enum QueryType { |
41 QueryFromModel, | |
42 QueryFromSingleSource | |
43 }; | |
44 | |
45 SimpleSPARQLQuery(QueryType type, QString query); | |
41 ~SimpleSPARQLQuery(); | 46 ~SimpleSPARQLQuery(); |
47 | |
48 static bool addSourceToModel(QString sourceUri); | |
42 | 49 |
43 void setProgressReporter(ProgressReporter *reporter); | 50 void setProgressReporter(ProgressReporter *reporter); |
44 bool wasCancelled() const; | 51 bool wasCancelled() const; |
45 | 52 |
46 ResultList execute(); | 53 ResultList execute(); |
48 bool isOK() const; | 55 bool isOK() const; |
49 QString getErrorString() const; | 56 QString getErrorString() const; |
50 | 57 |
51 // Do a query and return the value for the given binding, from the | 58 // Do a query and return the value for the given binding, from the |
52 // first result that has a value for it | 59 // first result that has a value for it |
53 static Value singleResultQuery(QString fromUri, | 60 static Value singleResultQuery(QueryType type, |
54 QString query, | 61 QString query, |
55 QString binding); | 62 QString binding); |
56 | |
57 enum BackEndPreference { | |
58 AutoSelectBackEnd, // pick based on likely speed of available storage | |
59 DirectParserBackEnd, // use rasqal (simpler if seldom used) | |
60 DatastoreBackEnd, // use redland (faster if version not too old) | |
61 }; | |
62 /** | |
63 * Select the preferred query back end. This should be called | |
64 * before any queries are made. The default is AutoSelectBackEnd. | |
65 */ | |
66 static void setBackEnd(BackEndPreference); | |
67 | 63 |
68 protected: | 64 protected: |
69 class Impl; | 65 class Impl; |
70 Impl *m_impl; | 66 Impl *m_impl; |
71 }; | 67 }; |