SPARQL接壤国家的例子

时间:2012-09-09 17:54:29

标签: sparql

有人可以向我展示任何SPARQL查询,以便从http://www4.wiwiss.fu-berlin.de/factbook/sparql获取所有国家/地区的所有国家/地区吗?

例如,阿富汗有: 事实书:陆地数据库:中国, 事实书:陆地数据库:伊朗, 事实书:陆地数据库:巴基斯坦, 事实书:陆地数据库:塔吉克斯坦, 事实书:陆地数据库:土库曼斯坦

我尝试获取数据:

SELECT ?country ?name ?neighbour
WHERE {
?country rdf:type factbook:Country .
?country rdfs:label ?name.
OPTIONAL{
  ?country factbook:landboundary ?neighbour.
 }
}

以下面的消息结束:

rethrew: de.fuberlin.wiwiss.d2rq.D2RQException: Table 'factbook.neighbors' doesn't exist: SELECT DISTINCT `T0_neighbors`.`name_encoded` FROM `bordercountries` AS `T0_bordercountries`, `neighbors` AS `T0_neighbors`, `countries` AS `T0_countries` WHERE `T0_bordercountries`.`Landboundaries_bordercountries_title` = `T0_neighbors`.`Name` AND `T0_bordercountries`.`Name` = `T0_countries`.`Name` AND `T0_countries`.`name_encoded` = 'Aruba' (E0)

我在http://answers.semanticweb.com问了同样的问题,但没有运气,所以我在这里试试运气

2 个答案:

答案 0 :(得分:1)

失败似乎是由内部系统错误引起的。您的SPARQL查询没有任何语法错误,并且您提供的谓词根据数据有效。

但是,我不明白您的查询应该如何返回某个特定国家/地区的邻居。也许你想尝试这样的事情:

SELECT DISTINCT ?neighbor
WHERE {
    ?neighbor rdf:type factbook:Country .
    ?neighbor factbook:landboundary db:Afghanistan .
}

答案 1 :(得分:0)

很久以后,也不能完全回答这个问题(目前CIA Factbook的SPARQL端点似乎已经关闭),但是WikiData给出了一些示例,该示例根据{{{ 3}}

例如如果打开示例并搜索“边界”,则会得到“与喀麦隆共有边界的国家”的查询:

#Population of countries sharing a border with Cameroon
#defaultView:LineChart
SELECT ?country ?year ?population ?countryLabel WHERE {
  {
    SELECT ?country ?year (AVG(?population) AS ?population) WHERE {
      {
        SELECT ?country (str(YEAR(?date)) AS ?year) ?population WHERE {
          ?country wdt:P47 wd:Q1009;  # shares border with Cameroon
                   p:P1082 ?populationStatement.
          ?populationStatement ps:P1082 ?population;
                               pq:P585 ?date.
        }
      }
    }
    GROUP BY ?country ?year
  }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}

要了解这一点,必须知道(或弄清楚)wd:Q1009实际上是喀麦隆。不确定如何执行此操作。  此示例还显示-imo不太有用-按年显示周围国家的人口。

一个没有多余数据的简单版本是:

SELECT ?country ?countryLabel WHERE {
  ?country wdt:P47 wd:Q1009  # shares border with Cameroon
  SERVICE wikibase:label { 
    bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en".
  }
}

SERVICE wikibase:labelhttps://query.wikidata.org/

最后,所有国家/地区的所有毗邻邻国可能都是:

SELECT ?country ?countryLabel ?neighbourLabel ?neighbour WHERE {
  ?country wdt:P31 wd:Q6256;
           wdt:P47 ?neighbour
  SERVICE wikibase:label { 
    bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en".
  }
} ORDER BY ?countryLabel ?neighbourLabel