0

我是 SPARQL 的初学者,我正在处理这个端点http://spcdata.digitpa.gov.it:8899/sparql。我想加入来自 DBpedia 图表的数据。我正在使用该属性owl:sameAs来引用 DBpedia 资源。

我想获取属于定义值的类的所有城市的名称和人口pa:Comunedbp: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,这是我可以在没有超时的情况下获得的更多点击数。)。

4

1 回答 1

2

我不清楚您的 Virtuoso 端点连接到哪个数据源,但您的数据集中没有多少地方的人口总数。以下查询仅返回 28 个结果:

PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT distinct *  WHERE {
  ?sa dbo:populationTotal ?total
}

如您所见,针对 DbPedia SPARQL 端点运行的相同查询会返回更多结果。我只能推测您仅将一部分数据加载到您放置在的 Virtuoso 图表中http://spcdata.digitpa.gov.it:8899/sparql

于 2013-05-28T23:04:20.280 回答