Запрос SPARQL к нескольким файлам RDF

У меня есть некоторые основы программирования, но я совершенно не знаком с RDF или Sparql, поэтому надеюсь, что дальше буду понятен. Я пытаюсь загрузить некоторые данные, доступные по адресу http://data.camera.it/data/en/datasets/, и все данные организованы в формате rdf-xml в виде онтологии.

Я заметил, что на этом веб-сайте есть онлайн-редактор запросов SPARQL (http://dati.camera.it/sparql). ), и, используя некоторые из их примеров, я смог получить и преобразовать некоторые данные, которые мне нужны, с помощью Python. Я использовал следующий код и запрос, используя SparqlWrapper

from SPARQLWrapper import SPARQLWrapper, JSON
sparql = SPARQLWrapper("http://dati.camera.it/sparql")
sparql.setQuery(
    '''
    SELECT distinct ?deputatoId ?cognome ?nome ?data ?argomento titoloSeduta ?testo 
    WHERE {
    ?dibattito a ocd:dibattito; ocd:rif_leg <http://dati.camera.it/ocd/legislatura.rdf/repubblica_17>.

    ?dibattito ocd:rif_discussione ?discussione.
    ?discussione ocd:rif_seduta ?seduta.
    ?seduta dc:date ?data; dc:title ?titoloSeduta.
    ?seduta ocd:rif_assemblea ?assemblea.

    ?discussione rdfs:label ?argomento.

    ?discussione ocd:rif_intervento ?intervento.
    ?intervento ocd:rif_deputato ?deputatoId; dc:relation ?testo. 
    ?deputatoId foaf:firstName ?nome; foaf:surname ?cognome .
    }

    ORDER BY ?data ?cognome ?nome
    LIMIT 100
    '''
)
sparql.setReturnFormat(JSON)
results_raw = sparql.query().convert()

Однако у меня есть проблема, потому что веб-сайт позволяет загружать только 10 000 значений. Насколько я понял, этот лимит изменить нельзя. Поэтому я решил загрузить наборы данных на свой компьютер. Пробовал работать со всеми этими rdf файлами, но не знаю как это сделать, так как, насколько мне известно, SparqlWrapper не работает с локальными файлами.

Итак, мои вопросы:

  1. Как мне создать набор данных, содержащий все файлы RDF, чтобы я мог работать с ними, как если бы это был один объект?
  2. Как мне запросить такой объект, чтобы получить нужную мне информацию? Это возможно?
  3. Является ли этот способ рассуждения правильным подходом?

Любое предложение о том, как решить проблему, приветствуется. Спасибо!


person mgiom    schedule 25.10.2018    source источник


Ответы (1)


  1. Загрузите все файлы RDF/XML из их области загрузки и загрузите их в локальный экземпляр из Virtuoso (это механизм, который они используют для общедоступной конечной точки SPARQL). У вас будет преимущество запуска гораздо более новой версии (v7.2.5.1 или более поздней), независимо от того, Open Source или Enterprise Edition, чем тот, который у них есть (Открытый исходный код v7.1.0, от марта 2014 г.!).

  2. Используйте новую локальную конечную точку SPARQL, которая по умолчанию находится по адресу http://localhost:8890/sparql. Вы можете настроить его так, чтобы он не имел ограничений на размеры наборов результатов, время выполнения запросов или что-то еще.

  3. Кажется вероятным.

(P.S. Вы можете призвать людей на dati.camera.it ([email protected]) обновить свой экземпляр Virtuoso. Ожидаются существенные улучшения производительности и функций!)

person TallTed    schedule 25.10.2018