Запрос Sparql из Dbpedia и другого графика возвращает меньше результатов, чем ожидалось

Я новичок в 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 со стоимостью имущества 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 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 человек, поэтому мне пришлось ограничить результаты (следовательно, LIMIT 1700, то есть большее число попаданий, которое я могу получить без тайм-аута).

1 ответ

Решение

Мне не ясно, к какому источнику данных подключена ваша конечная точка 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,

Другие вопросы по тегам