从 DBpedia 列出国家
List countries from DBpedia
尝试在 DBpedia 中查询包含 dbo:longName
属性 和每个国家首都的所有国家的列表,但返回 0 个结果。看不出查询有什么问题。
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
SELECT ?country ?capital
WHERE {
?country a dbo:longName ;
dbo:capital ?capital .
}
缺少什么?
您遗漏了 ?country
的 rdf:type
为 dbo:Country
而不是 dbo:longName
。正确的查询应该是:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
SELECT ?country ?capital
WHERE {
?x a dbo:Country.
?x dbo:longName ?country.
?x dbp:capital ?capital
}
更新
根据您的评论,您需要国家/地区及其首都的 URI。因此,您不需要 dbo:longName
,因为您不需要国家/地区标签名称。您将 select 个实例:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
SELECT ?country ?capital
WHERE {
?country a dbo:Country.
?country dbo:capital ?capital
}
请注意,结果将带来灭绝的国家。如果你想过滤已经结束的国家,你应该得到这个结果:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
SELECT ?country ?capital
WHERE {
?country a dbo:Country.
?country dbo:capital ?capital.
FILTER NOT EXISTS { ?country dbo:dissolutionYear ?yearEnd }
}
尝试在 DBpedia 中查询包含 dbo:longName
属性 和每个国家首都的所有国家的列表,但返回 0 个结果。看不出查询有什么问题。
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
SELECT ?country ?capital
WHERE {
?country a dbo:longName ;
dbo:capital ?capital .
}
缺少什么?
您遗漏了 ?country
的 rdf:type
为 dbo:Country
而不是 dbo:longName
。正确的查询应该是:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
SELECT ?country ?capital
WHERE {
?x a dbo:Country.
?x dbo:longName ?country.
?x dbp:capital ?capital
}
更新
根据您的评论,您需要国家/地区及其首都的 URI。因此,您不需要 dbo:longName
,因为您不需要国家/地区标签名称。您将 select 个实例:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
SELECT ?country ?capital
WHERE {
?country a dbo:Country.
?country dbo:capital ?capital
}
请注意,结果将带来灭绝的国家。如果你想过滤已经结束的国家,你应该得到这个结果:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
SELECT ?country ?capital
WHERE {
?country a dbo:Country.
?country dbo:capital ?capital.
FILTER NOT EXISTS { ?country dbo:dissolutionYear ?yearEnd }
}