Elart
Elart

Reputation: 1

query in Wikidata: how to retrieve the labels for instances

I'm trying to get info e.g. for Belgium for aerodromes or stations with having the label of all instances for each item (e.g. Brussels South Charleroi Airpor can be an airport, business, etc..) I've written two separate queries but struggling to join them

    SELECT DISTINCT ?poi ?itemLabel_nl ?itemLabel_fr ?itemLabel_en ?itemLabel_wa ?itemLabel_vls
WHERE {
  ?poi p:P17 ?statement0.
      ?statement0 (ps:P17/(wdt:P279*)) wd:Q31.
      {
        ?poi p:P31 ?statement1.
        ?statement1 (ps:P31/(wdt:P279*)) wd:Q62447.
      }
      UNION
      {
        ?poi p:P31 ?statement2.
        ?statement2 (ps:P31/(wdt:P279*)) wd:Q12819564.
      }
  OPTIONAL { ?poi rdfs:label ?itemLabel_nl filter (lang(?itemLabel_nl) = "nl") . }
  OPTIONAL { ?poi rdfs:label ?itemLabel_fr filter (lang(?itemLabel_fr) = "fr") . }
  OPTIONAL { ?poi rdfs:label ?itemLabel_en filter (lang(?itemLabel_en) = "en") . }
  OPTIONAL { ?poi rdfs:label ?itemLabel_wa filter (lang(?itemLabel_wa) = "wa") . }
  OPTIONAL { ?poi rdfs:label ?itemLabel_vls filter (lang(?itemLabel_vls) = "vls") . }
}

and the second part to get labels for the exact item (e.g. Brussels South Charleroi Airpor):

    SELECT ?instance ?instanceLabel
WHERE
{
     wd:Q1431012 p:P31 ?statement.
     ?statement ps:P31 ?instance.
     SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY ?instanceLabel

any thought here? :)

Upvotes: 0

Views: 40

Answers (0)

Related Questions