summaryrefslogtreecommitdiffstats
path: root/raul/RDFQuery.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-07-24 19:26:47 +0000
committerDavid Robillard <d@drobilla.net>2007-07-24 19:26:47 +0000
commit3b4a308ff647def75e647ac8f97e1e48b57672c3 (patch)
treea33e3a5c78f2ee7f23e151f39fe17ab39b0b81c8 /raul/RDFQuery.hpp
parentfcb302e6248527b2f1fb655f4d0a64af18f5f059 (diff)
downloadraul-3b4a308ff647def75e647ac8f97e1e48b57672c3.tar.gz
raul-3b4a308ff647def75e647ac8f97e1e48b57672c3.tar.bz2
raul-3b4a308ff647def75e647ac8f97e1e48b57672c3.zip
Consistently rename all C++ files .cpp/.hpp.
Fix (some) inclusion guard names to not clash with other libs. git-svn-id: http://svn.drobilla.net/lad/raul@613 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'raul/RDFQuery.hpp')
-rw-r--r--raul/RDFQuery.hpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/raul/RDFQuery.hpp b/raul/RDFQuery.hpp
new file mode 100644
index 0000000..76ae128
--- /dev/null
+++ b/raul/RDFQuery.hpp
@@ -0,0 +1,68 @@
+/* This file is part of Raul.
+ * Copyright (C) 2007 Dave Robillard <http://drobilla.net>
+ *
+ * Raul is free software; you can redistribute it and/or modify it under the
+ * terms of the GNU General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * Raul is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef RAUL_RDF_QUERY_HPP
+#define RAUL_RDF_QUERY_HPP
+
+#include <map>
+#include <list>
+#include <glibmm/ustring.h>
+#include <raul/RDFWorld.hpp>
+#include <raul/Namespaces.hpp>
+
+namespace Raul {
+namespace RDF {
+
+class World;
+class Model;
+
+
+/** Pretty wrapper for a SPARQL query.
+ *
+ * Automatically handles things like prepending prefixes, etc.
+ */
+class Query {
+public:
+ typedef std::map<std::string, Node> Bindings; // FIXME: order? better to use int
+ typedef std::list<Bindings> Results;
+
+ Query(const World& world, Glib::ustring query)
+ {
+ // Prepend prefix header
+ for (Namespaces::const_iterator i = world.prefixes().begin();
+ i != world.prefixes().end(); ++i) {
+ _query += "PREFIX ";
+ _query += i->first + ": <" + i->second + ">\n";
+ }
+ _query += "\n";
+ _query += query;
+ }
+
+ Results run(World& world, Model& model, const Glib::ustring base_uri="") const;
+
+ Glib::ustring string() const { return _query; };
+
+private:
+ Glib::ustring _query;
+};
+
+
+} // namespace RDF
+} // namespace Raul
+
+#endif // RAUL_RDF_QUERY_HPP
+