sparqlwikidatablazegraph

SPARQL: Querying Wikidata labels for more than one language


I am trying to get labels in multiple languages from Wikidata's SPARQL endpoint. The following example is given here:

SELECT ?country ?country_EN ?country_DE ?country_FR
   WHERE {
     ?country wdt:P31 wd:Q185441. # member state of the European Union
     SERVICE wikibase:label { bd:serviceParam wikibase:language "en".
            ?country rdfs:label ?country_EN.
     }
     SERVICE wikibase:label { bd:serviceParam wikibase:language "de".
            ?country rdfs:label ?country_DE.
     }
     SERVICE wikibase:label { bd:serviceParam wikibase:language "fr".
            ?country rdfs:label ?country_FR.
     }
}

Try it here

However, this returns the following error:

Unknown error: there can be only one "run last" join in any group

Is there a solution to get labels in more than one language?


Solution

  • rdfs:label can be used directly without the wikibase:label service:

    SELECT ?country ?country_en ?country_de ?country_fr
       WHERE {
         ?country wdt:P31 wd:Q185441. # member state of the European Union
         OPTIONAL {?country rdfs:label ?country_en filter (lang(?country_en) = "en")}.
         OPTIONAL {?country rdfs:label ?country_de filter (lang(?country_de) = "de")}.
         OPTIONAL {?country rdfs:label ?country_fr filter (lang(?country_fr) = "fr")}.
    }
    

    Try it here