| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Since we no longer pass the string directly, we must also avoid the
escaping of the strftime format modifiers. Those aren't any longer at
risk of being mistaken for printf ones.
|
|
|
|
|
|
| |
Recent GLib changed the hashtable hashing, thus changing the order in which
the contents are iterated by a GHashTableIter. Avoid doing that in the one
place we used to (also used to happen in previous vala code).
|
|
|
|
| |
Inverse and sequence paths are tested thus far.
|
| |
|
|
|
|
| |
There's now partial support of property paths, so better be specific.
|
|
|
|
|
|
| |
"?a :foo/:bar ?b" is equivalent to "?a :foo ?gen . ?gen :bar ?b",
make the parser make up those generated variables before processing
the current predicate property.
|
|
|
|
|
| |
"?a ^:foo ?b" is equivalent to "?b :foo ?a", invert the subject/predicate
in order to handle this.
|
|
|
|
|
|
|
| |
Property paths may introduce intermediate anonymous resources, or
shuffle subject/object. We still do the bulk of the job while parsing
the predicate, so prepare for the predicate being pre-filled, and
the Path grammar element to alter the next parsed token.
|
|
|
|
|
| |
This query form was broken in the previous parser, add a test for it
now that it is supported.
|
|
|
|
|
| |
Some of those combinations were broken in the previous parser, now
that they are handled properly, add tests for them.
|
|
|
|
|
| |
This should eventually be implemented in the bus backend as well, but not
yet.
|
|
|
|
| |
This uses an internal TrackerSparql to hold the query.
|
|
|
|
|
| |
This object can hold a long lived query, in which parameters may be changed
prior to execution.
|
|
|
|
|
| |
Those relate to PARAMETERIZED_VAR, and allow binding values through it at
query preparation time.
|
|
|
|
|
|
| |
These variables (with "~var" syntax) will be bound through API,
providing a decent protection against injections. They can be used
in every place a boolean/numeric/string literal is allowed.
|
|
|
|
|
| |
This function takes a generic GValue, and uses the right sqlite3_bind*
function underneath, or transforms to a string.
|
| |
|
|
|
|
| |
From now on, TrackerSparql will be used for handling SPARQL queries.
|
|
|
|
|
|
| |
Once we are past the variable limit (Currently hardcoded to 999, matching
SQLite limits) resort to appending literals in SQL directly. This used to
happen in the older parser, and unbreaks 02-sparql-bugs which tests this.
|
|
|
|
|
| |
This is a tracker extension that allows INSERT OR REPLACE to also delete
values.
|
|
|
|
|
|
|
| |
In a quite unstandard way, this function takes the list of strings
to join surrounded by parentheses, eg. fn:string-join(('a', 'b'), '|').
Handle this through allowing nesting of ArgList for this case, it will
error out in every other case.
|
| |
|
| |
|
|
|
|
| |
This is a tracker extension present in previous SPARQL parser.
|
| |
|
|
|
|
| |
This is a Tracker extension to SPARQL.
|
|
|
|
| |
This is a Tracker SPARQL extension present in the previous parser.
|
|
|
|
| |
This is a Tracker extension to SPARQL.
|
|
|
|
| |
This is a tracker extension to SPARQL.
|
|
|
|
| |
This is syntax traditionally allowed by Tracker.
|
|
|
|
| |
This is a Tracker extension to the SPARQL1.1 syntax.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
For sequential property paths it will be more convenient to have the
ObjectList node available before processing the property path, so we
can explode those properly into intermediate blank nodes.
|
|
|
|
| |
Use the equivalent EXCEPT sqlite syntax.
|
|
|
|
| |
If glib >= 2.51.0 is available, we can implement this.
|
|
|
|
| |
This is a syntax extension we used to accept, so bring it back.
|
|
|
|
|
| |
Tracker used to accept SubSelect in BrackettedExpression, bring
that back.
|
|
|
|
|
| |
Tracker used to accept plain Expression in SelectClause, i.e.
no parentheses, and "AS ?var" being optional. Bring that back.
|
|
|
|
| |
So the sparql parser can defer optional arguments to it.
|
| |
|
|
|
|
|
|
|
|
| |
This is somewhat similar to GString, except it allows for adding
extension points at random places that allow for inserting stuff
mid-string without relocating the whole thing.
It is expected that SQL query construction will use this facility.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This struct takes the query text and a root rule that will work as the
starting point to generate the expression tree that represents the query.
This expression tree has a virtually identical structure to the formed
by the rules themselves, with the only difference that ?/+/* rules may
have none or many nodes representing a single rule.
The parser does not do anything beyond a syntactic interpretation of the
query, the expression tree nodes contain a pointer to the rule that
generated them, plus start/end points of the text in the query, so an
upper layer can do the actual ontology validations, and generate the SQL.
The two entry points are tracker_sparql_parse_query/update, that correspond
to the QueryUnit/UpdateUnit entry points defined in the SPARQL grammar.
|
|
|
|
|
|
| |
The grammar rules are based on
https://www.w3.org/TR/2013/REC-sparql11-query-20130321/#sparqlGrammar
and reflect all of the Sparql 1.1 syntax, supported by Tracker or not.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| | |
The previous change did not leave the expected .0 symlinks.
'soversion' is the actual version linked against. To match the scheme
used by libtool, we need to give the libraries a 'version' as well.
|
|/
|
|
|
|
|
| |
Export those in tracker-sparql.pc, so users may find out the install
details.
Related: https://gitlab.gnome.org/GNOME/tracker-miners/issues/19
|
|\ |
|