diff options
Diffstat (limited to 'src/libtracker-data/tracker-sparql.c')
-rw-r--r-- | src/libtracker-data/tracker-sparql.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c index c085d6e1d..1961e6dad 100644 --- a/src/libtracker-data/tracker-sparql.c +++ b/src/libtracker-data/tracker-sparql.c @@ -4093,14 +4093,26 @@ static gboolean translate_PathEltOrInverse (TrackerSparql *sparql, GError **error) { + TrackerToken old_object, old_subject, *old_token; + /* PathEltOrInverse ::= PathElt | '^' PathElt */ + old_object = sparql->current_state.object; + old_subject = sparql->current_state.subject; + old_token = sparql->current_state.token; + if (_accept (sparql, RULE_TYPE_LITERAL, LITERAL_PATH_INVERSE)) { - _unimplemented ("Property paths"); + sparql->current_state.object = old_subject; + sparql->current_state.subject = old_object; + sparql->current_state.token = &sparql->current_state.subject; } _call_rule (sparql, NAMED_RULE_PathElt, error); + sparql->current_state.subject = old_subject; + sparql->current_state.object = old_object; + sparql->current_state.token = old_token; + return TRUE; } |