对多个RDF文件的SPARQL查询

时间:2018-10-25 19:54:15

标签: python sparql rdf ontology sparqlwrapper

我有一些编程基础知识,但是我对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. 这种推理方法正确吗?

任何有关如何解决该问题的建议都值得赞赏。 谢谢!

1 个答案:

答案 0 :(得分:1)

  1. 从它们的下载区域以及load them into a local instance中的Virtuoso下载所有RDF / XML文件(恰好是它们用于公共SPARQL端点的引擎)。无论是Open Source还是Enterprise Edition,您都可以运行比其现有版本(开放源v7.1.0,自3月开始)更新得多的版本(v7.2.5.1或更高版本)。 ,2014!)。

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

  3. 似乎可能。

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