[tracker] SPARQL: Support multi-valued properties as functions
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker] SPARQL: Support multi-valued properties as functions
- Date: Fri, 16 Oct 2009 10:02:09 +0000 (UTC)
commit 680aa9c9211bd789f98badc8e6e86205bcf9d24b
Author: Jürg Billeter <j bitron ch>
Date: Fri Oct 16 11:11:23 2009 +0200
SPARQL: Support multi-valued properties as functions
Use GROUP_CONCAT(?,',') to combine multiple values.
src/libtracker-data/tracker-sparql-query.vala | 20 ++++++++++++++------
1 files changed, 14 insertions(+), 6 deletions(-)
---
diff --git a/src/libtracker-data/tracker-sparql-query.vala b/src/libtracker-data/tracker-sparql-query.vala
index 404ca78..48ed6cf 100644
--- a/src/libtracker-data/tracker-sparql-query.vala
+++ b/src/libtracker-data/tracker-sparql-query.vala
@@ -1206,17 +1206,25 @@ public class Tracker.SparqlQuery : Object {
return PropertyType.BOOLEAN;
} else {
- // support single valued properties as functions
+ // support properties as functions
var prop = Ontology.get_property_by_uri (uri);
- if (prop == null || prop.multiple_values) {
+ if (prop == null) {
throw get_error ("Unknown function");
}
- sql.append_printf ("(SELECT \"%s\" FROM \"%s\" WHERE ID = ", prop.name, prop.domain.name);
- translate_expression (sql);
- sql.append (")");
+ if (prop.multiple_values) {
+ sql.append_printf ("(SELECT GROUP_CONCAT(\"%s\",',') FROM \"%s_%s\" WHERE ID = ", prop.name, prop.domain.name, prop.name);
+ translate_expression (sql);
+ sql.append (")");
- return prop.data_type;
+ return PropertyType.STRING;
+ } else {
+ sql.append_printf ("(SELECT \"%s\" FROM \"%s\" WHERE ID = ", prop.name, prop.domain.name);
+ translate_expression (sql);
+ sql.append (")");
+
+ return prop.data_type;
+ }
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]