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!