summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/tracker/grl-tracker-utils.c23
-rw-r--r--src/tracker/grl-tracker-utils.h1
2 files changed, 18 insertions, 6 deletions
diff --git a/src/tracker/grl-tracker-utils.c b/src/tracker/grl-tracker-utils.c
index 87cfe30..47dff05 100644
--- a/src/tracker/grl-tracker-utils.c
+++ b/src/tracker/grl-tracker-utils.c
@@ -126,12 +126,13 @@ insert_key_mapping (GrlKeyID grl_key,
GRLKEYID_TO_POINTER (grl_key));
gchar *canon_name = g_strdup (GRL_METADATA_KEY_GET_NAME (grl_key));
- assoc->grl_key = grl_key;
- assoc->sparql_key_name = build_flavored_key (canon_name,
- sparql_key_flavor);
- assoc->sparql_key_attr = sparql_key_attr;
- assoc->sparql_key_attr_call = sparql_key_attr_call;
- assoc->sparql_key_flavor = sparql_key_flavor;
+ assoc->grl_key = grl_key;
+ assoc->sparql_key_name = build_flavored_key (canon_name,
+ sparql_key_flavor);
+ assoc->sparql_key_name_canon = g_strdup (canon_name);
+ assoc->sparql_key_attr = sparql_key_attr;
+ assoc->sparql_key_attr_call = sparql_key_attr_call;
+ assoc->sparql_key_flavor = sparql_key_flavor;
assoc_list = g_list_append (assoc_list, assoc);
@@ -145,6 +146,16 @@ insert_key_mapping (GrlKeyID grl_key,
(gpointer) GRL_METADATA_KEY_GET_NAME (grl_key),
assoc);
+ /* Grilo maps key names to SPARQL variables. Key names can contain dashes,
+ * however SPARQL does not allow dashes in variable names. So use the to
+ * underscores converted canon_name as additional mapping.
+ */
+ if (g_strrstr (assoc->sparql_key_name_canon, "_")) {
+ g_hash_table_insert (sparql_to_grl_mapping,
+ (gpointer) assoc->sparql_key_name_canon,
+ assoc);
+ }
+
g_free (canon_name);
return assoc;
diff --git a/src/tracker/grl-tracker-utils.h b/src/tracker/grl-tracker-utils.h
index 430be88..41bd232 100644
--- a/src/tracker/grl-tracker-utils.h
+++ b/src/tracker/grl-tracker-utils.h
@@ -53,6 +53,7 @@ typedef void (*tracker_grl_sparql_setter_cb_t) (TrackerSparqlCursor *cursor,
typedef struct {
GrlKeyID grl_key;
const gchar *sparql_key_name;
+ const gchar *sparql_key_name_canon;
const gchar *sparql_key_attr;
const gchar *sparql_key_attr_call;
const gchar *sparql_key_flavor;