2

我正在尝试在OWL中为国家和城市构建一个本体(如果已经存在这样的实现,请指出我)

为了获取数据,我尝试将 sparql 与以下代码一起使用:

SELECT ?c WHERE {
   ?c rdfs:label ?name .
   ?c dbpedia-owl:country <http://dbpedia.org/resource/Country> .
}

我是 sparql 和 dbpedia 的新手。上面的代码并没有返回我所有的城市和他们所在的国家。我真的需要使用 dbpedia 来实现这一点。

有什么建议吗?

4

2 回答 2

7

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或其他类。所以上面的查询可能不会产生你想要的所有城市。

另外:要构建本体,您不需要“数据”。例如,本体定义所有城市都是人口稠密的地方,所有人口稠密的地方都是地方。要能这么说,你不需要知道爱丁堡在英国。

于 2013-03-26T17:54:55.723 回答
1

在https://dbpedia.org/sparql上使用以下代码

SELECT DISTINCT ?city ?country 
WHERE { ?city rdf:type dbo:City ; 
        rdfs:label ?label ; 
        dbo:country ?country 
     }
于 2017-06-05T06:39:20.950 回答