sovon
sovon

Reputation: 907

sparql query is not returning desired output

This is my sparql query to get all the country name with some property of that country.

SELECT distinct ?country ?capital ?currency ?lat ?long
WHERE {
  ?country rdf:type dbo:Country .
  ?country  dbo:capital ?capital .
  ?country  dbo:currency ?currency .
 ?country   geo:lat ?lat.
 ?country   geo:long ?long.
}
ORDER BY ?country

But the problem is, Some country is missing, like "Switzerland". You go to http://dbpedia.org/page/Switzerland this page you will see that it's type is country. you will also do not find exactly "Austria" rather "Austrian_Empire". Why? There is a entity called "Austria" and it is dbo:Country type.

Upvotes: 0

Views: 53

Answers (1)

svick
svick

Reputation: 245046

Switzerland does not seem to have dbo:capital, which is why it's not included in the results of your query.

If you want to get even results that do not have some of the properties, use OPTIONAL:

SELECT distinct ?country ?capital ?currency ?lat ?long
WHERE {
  ?country rdf:type dbo:Country .
  OPTIONAL
  {
    ?country  dbo:capital ?capital .
    ?country  dbo:currency ?currency .
    ?country  geo:lat ?lat.
    ?country  geo:long ?long.
  }
}
ORDER BY ?country

Though this query returns even entities that are not countries (but for some reason are dbo:Country), like Cinema of Switzerland.

Upvotes: 2

Related Questions