Found my answer !!! had to go back to the SPARQL Tutorial page and re-read the
section on FILTER
<https://www.wikidata.org/wiki/Wikidata:SPARQL_tutorial#FILTER>
...specifically...
The label service is very useful if you just want to display the label of a
> variable. *But if you want to do stuff with the label* ...
yes, I do want to have an expression about a label..., in fact, 95% of the
time that's what I want to do...so why doesn't the darn label service help
me do that better?
The reason why this doesn’t work is that the label service adds its
> variables very late during query evaluation; at the point where we try to
> filter on ?humanLabel, the label service hasn’t created that variable yet.
> Fortunately, the label service isn’t the only way to get an item’s label.
> Labels are also stored as regular triples, using the predicate rdfs:label.
> Of course, this means all labels, not just English ones; if we only want
> English labels, we’ll have to filter on the language of the label:
AH ! label service does things AFTER the query returns results.
So this works, and is how you actually handle label filtering *without*
using the label service, and instead getting the label stored as a triple
(and it's twice as fast as well)...
SELECT ?publisher ?label
WHERE
{
?publisher wdt:P31 wd:Q2085381;
rdfs:label ?label.
FILTER(LANG(?label) = "[AUTO_LANGUAGE]").
FILTER CONTAINS(LCASE(?label), "simon").
}
Thad
https://www.linkedin.com/in/thadguidry/
_______________________________________________
Wikidata mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikidata