Today I implemented the str() function for our SPARQL engine.
This makes it possible to use a <subject> just like a string.
Let’s first insert some data into our SPARQL store.
tracker-sparql -u -q \
"INSERT { <urn:baaa> a rdfs:Resource }"
Following query doesn’t work, as variable ?s isn’t assigned with a xsd:string here, but a rdfs:Resource.
tracker-sparql -q
"SELECT ?s WHERE {
?s a rdfs:Resource .
FILTER REGEX (?s, '.*baaa', 's')
}"
This version works, because we introduce the str() function.
tracker-sparql -q
"SELECT ?s WHERE {
?s a rdfs:Resource .
FILTER REGEX (str(?s), '.*baaa', 's')
}"
urn:uuid:94baaa45-99a6-e0f4-0bd9-f83ca90a9039
urn:uuid:6e909006-a6ac-baaa-2ae4-cc01adcd5de7
urn:baaa
You can also use a direct match, of course.
tracker-sparql -q
"SELECT ?s WHERE {
?s a rdfs:Resource .
FILTER (str(?s) = 'urn:baaa')
}"
urn:baaa
By the way. Ivan made a cute tool in Python for typing in your queries:

It even does some code completion. If you type nco:[TAB] it’ll show you the NCO ontology. Nice!
