diff options
-rw-r--r-- | src/tracker/grl-tracker-utils.c | 23 | ||||
-rw-r--r-- | src/tracker/grl-tracker-utils.h | 1 |
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; |