Search code examples
sparqlwikidata

Why variable + Label is not working in SPARQL


In the examples of the SPARQL of Wikidata, we have this one:

    SELECT ?h ?date 
WHERE 
{
    ?h wdt:P31 wd:Q5 .
    ?h wdt:P569 ?date .
    OPTIONAL {?h wdt:P570 ?d } 
    FILTER (?date > "1880-01-01T00:00:00Z"^^xsd:dateTime)
    FILTER (!bound(?d))
}
LIMIT 1000

I understand that if you put Label after the name of a variable it shows the label. So, I don't understand why this shows no output:

    SELECT ?h ?hLabel ?date ...

Thank you in advance!


Solution

  • I am not aware of that specific feature for Label after the variable name.

    However, for rdfs:label, you can to inculde the rdfs:label in your query. Add the following line: ?h rdfs:label ?hLabel.:

    SELECT ?h ?hLabel ?date WHERE 
    {
        ?h wdt:P31 wd:Q5 .
        ?h wdt:P569 ?date .      
        ?h rdfs:label ?hLabel. 
        OPTIONAL {?h wdt:P570 ?d } 
        FILTER (?date > "1880-01-01T00:00:00Z"^^xsd:dateTime)
        FILTER (!bound(?d))
    }
    LIMIT 1000
    

    If you want labels in a specific language, e.g. for English add FILTER (langMatches( lang(?hLabel), "EN" ) )

    Here is a stackoverflow intersting answer about labels.