我正在尝试在OWL中为国家和城市构建一个本体(如果这样的实现已经存在,请指出给我)
要获取数据,我尝试使用sparql与以下代码:
SELECT ?c WHERE {
?c rdfs:label ?name .
?c dbpedia-owl:country <http://dbpedia.org/resource/Country> .
}
我是sparql和dbpedia的新手。上面的代码没有返回给我所有的城市和他们所在的国家。我真的需要使用dbpedia来实现这一点。
任何建议吗?
SPARQL区分大小写(因为RDF区分大小写)。DBpedia使用的约定是属性名以小写字母开头(例如dbpedia-owl:country
表示"属于X的国家是…"),类名以大写字母开头(例如dbpedia-owl:Country
)。
如果工作,我的意思是返回结果,这工作(City
而不是city
):
SELECT DISTINCT ?city ?country
WHERE { ?city rdf:type dbpedia-owl:City ;
rdfs:label ?label ;
dbpedia-owl:country ?country
}
请注意,并非所有你我称之为城市的地方都被定义为dbpedia-owl:City
——它们可能属于dbpedia-owl:Settlement
或其他类别。所以上面的查询可能不会得到你想要的所有城市。
另外:构造一个本体,你不需要"数据"。例如,本体定义所有城市都是人口稠密的地方,所有人口稠密的地方都是地方。要这样说,你不需要知道爱丁堡在英国。
在https://dbpedia.org/sparql
上使用以下代码SELECT DISTINCT ?city ?country
WHERE { ?city rdf:type dbo:City ;
rdfs:label ?label ;
dbo:country ?country
}