2013-05-28 2 views
0

Я начинаю работать в SPARQL, и я работаю над этой конечной точкой http://spcdata.digitpa.gov.it:8899/sparql. Я хотел бы присоединиться к данным из графика DBpedia. Я использую свойство owl:sameAs для ссылки на ресурсы DBpedia.Запрос Sparql от 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. Я пробовал со всеми различными значениями губки, но результаты все те же. Я думаю, проблема может быть в том, что я получаю данные с другого графика, но я не знаю, что делать.


EDIT: я попробовал этот запрос после предложения Яна Дикинсона, и это работает!

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

ответ

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.

+0

К этой же информации к этой базе подключена конечная точка: http://spcdata.digitpa.gov.it/dataIPA.html (извините, это только на итальянском языке). Я был убежден, что могу ссылаться на данные DbPedia, но, похоже, он загружается частично, как вы предложили. Я также пробовал ключевое слово SERVICE, но без успеха. Вы предлагаете использовать только DbPedia? Мне трудно найти класс для муниципалитетов. –

+1

Федеративные запросы могут быть сложными. Есть ли что-то особенное в 28 муниципалитетах, которые загружаются в конечную точку 'spcdata.digitpa.gov.it'? (Вы правы - я не могу читать итальянца, я боюсь). Эта ссылка может помочь с использованием ключевого слова service с реализацией Virtuoso SPARQL: http://boards.openlinksw.com/phpBB3/viewtopic.php?f=12&t=1709 –

+0

Я не мог сказать! Кажется, что эти 28 записей не имеют ничего особенного. Я попытался с вашим предложением, и это сработало достаточно хорошо, спасибо! проверьте мое редактирование. –