diff 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
line wrap: on
line diff
--- a/rdf/SimpleSPARQLQuery.h	Fri Nov 21 14:25:33 2008 +0000
+++ b/rdf/SimpleSPARQLQuery.h	Fri Nov 21 16:12:29 2008 +0000
@@ -37,9 +37,16 @@
     typedef std::map<QString, Value> KeyValueMap;
     typedef std::vector<KeyValueMap> ResultList;
 
-    SimpleSPARQLQuery(QString fromUri, QString query);
+    enum QueryType {
+        QueryFromModel,
+        QueryFromSingleSource
+    };
+
+    SimpleSPARQLQuery(QueryType type, QString query);
     ~SimpleSPARQLQuery();
 
+    static bool addSourceToModel(QString sourceUri);
+
     void setProgressReporter(ProgressReporter *reporter);
     bool wasCancelled() const;
     
@@ -50,21 +57,10 @@
 
     // Do a query and return the value for the given binding, from the
     // first result that has a value for it
-    static Value singleResultQuery(QString fromUri,
+    static Value singleResultQuery(QueryType type,
                                    QString query,
                                    QString binding);
 
-    enum BackEndPreference {
-        AutoSelectBackEnd,   // pick based on likely speed of available storage
-        DirectParserBackEnd, // use rasqal (simpler if seldom used)
-        DatastoreBackEnd,    // use redland (faster if version not too old)
-    };
-    /**
-     * Select the preferred query back end.  This should be called
-     * before any queries are made.  The default is AutoSelectBackEnd.
-     */
-    static void setBackEnd(BackEndPreference);
-
 protected:
     class Impl;
     Impl *m_impl;