对多个 RDF 文件的 SPARQL 查询

SPARQL query on multiple RDF files

我有一些编程基础,但我对 RDF 或 Sparql 完全陌生,所以我希望在接下来的内容中能够清楚。 我正在尝试下载 http://data.camera.it/data/en/datasets/ 上可用的一些数据,所有数据都以 rdf-xml 格式组织,格式为 ontology.

我注意到这个网站有一个在线 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. 这种推理方式是否正确?

如有任何关于如何解决问题的建议,我们将不胜感激。 谢谢!

  1. 从他们的下载区下载所有 RDF/XML 文件,比他们现有的 load them into a local instance of Virtuoso (which happens to be the engine they are using for their public SPARQL endpoint). You will have the advantage of running a much more recent version (v7.2.5.1 or later), whether Open Source or Enterprise Edition(开源 v7.1.0,从 2014 年 3 月开始!) .

  2. 使用新的本地 SPARQL 端点,默认情况下位于 http://localhost:8890/sparql。您可以将其配置为对结果集大小、查询运行时间或其他方面没有限制。

  3. 很有可能。

(P.S。您可能会鼓励 dati.camera.it (assistenza-dati@camera.it) 的人们升级他们的 Virtuoso 实例。有大量的性能和功能增强等待着!)