Piotr Dabkowski
Piotr Dabkowski

Reputation: 5939

Wikidata Query misses results

I am trying to query all the countries from Wikidata (query link):

SELECT ?item WHERE { ?item wdt:P31 wd:Q6256. }

Unfortunately, the results are missing for example Switzerland (Q39):

https://www.wikidata.org/wiki/Q39

Looking at the Switzerland data, it has the triple: instance of (P31) country (Q6256). Could you help me understand why Q39 is not present in the results then?

Thanks!

Upvotes: 1

Views: 189

Answers (1)

Valerio Cocchi
Valerio Cocchi

Reputation: 1966

In WikiData, often you have what are called statements. These allow for qualifications to those statements. For instance, in the case of Switzerland being a country, the qualification is that the rank of this statement should be 'normal' instead of preferred. The preferred way to refer to Switzerland is sovereign state (wd:Q3624078), and it looks like WikiData will only have a wdt:P31 relationship between an entity and its 'preferred rank' classification only, as this query shows.

I think this could be because 'country' is a more generic concept, e.g. Wales is a country but not a sovereign state.

Fear not however, as this query:

SELECT DISTINCT ?item
WHERE { 
  ?item p:P31/ps:P31 wd:Q6256. 
}

returns wd:Q39 as well. What this query is doing is to navigate from Switzerland to Country via the statement. That is, we have in our data:

wd:Q39 p:P31 wds:Q39-fbe1ac75-4a8a-93c4-6009-81055d79f9cb .
wds:Q39-fbe1ac75-4a8a-93c4-6009-81055d79f9cb ps:P31 wd:Q6256 .

but not:

wd:Q39 wdt:P31 wd:Q6256 .

Try this:

SELECT DISTINCT *
WHERE { 
  ?item p:P31 ?y .
  ?y ps:P31 wd:Q6256 ;
     ?p ?o .
  VALUES ?item {wd:Q39}
}

to see for yourself.

Upvotes: 4

Related Questions