我是 SPARQL 的初学者,我正在处理这个端点http://spcdata.digitpa.gov.it:8899/sparql。我想加入来自 DBpedia 图表的数据。我正在使用该属性owl:sameAs
来引用 DBpedia 资源。
我想获取属于定义值的类的所有城市的名称和人口pa:Comune
值dbp:populationTotal
。这是我的查询:
PREFIX pa: <http://spcdata.digitpa.gov.it/>
PREFIX rdf: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbp: <http://dbpedia.org/ontology/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT ?label ?populationTotal WHERE {
?s a pa:Comune .
?s rdf:label ?label .
?s owl:sameAs ?sameAs .
?sameAs dbp:populationTotal ?populationTotal .
}
ORDER BY ?label
不幸的是,虽然结果是正确的,但我只得到了其中的一小部分。我已经检查过,还有更多的城市在 DBpedia 上有一个参考,其中包含 property 的值dbp:populationTotal
。我尝试了所有不同的海绵值,但结果仍然相同。我想问题可能是我正在从另一个图表中获取数据,但我不知道该怎么做。
编辑:在 Ian Dickinson 的建议下,我尝试了这个查询,它有效!
PREFIX pa: <http://spcdata.digitpa.gov.it/>
PREFIX rdf: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbp: <http://dbpedia.org/ontology/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT DISTINCT ?label ?sameAs ?populationTotal WHERE {
?s a pa:Comune .
?s rdf:label ?label .
?s owl:sameAs ?sameAs .
FILTER (REGEX(STR(?sameAs), "dbpedia", "i")).
SERVICE <http://dbpedia.org/sparql>
{
?sameAs dbp:populationTotal ?populationTotal .
}
} LIMIT 1700
不幸的是,意大利有 8000 多个自治市,所以我不得不限制结果(因此限制 1700,这是我可以在没有超时的情况下获得的更多点击数。)。