Python Sparql, запрашивающий локальный файл - PullRequest
4 голосов
/ 26 марта 2012

У меня есть следующий код Python. В основном он возвращает некоторые элементы RDF из онлайн-ресурса с использованием SPARQL.

Я хочу запросить и вернуть что-то из одного из моих локальных файлов. Я пытался отредактировать его, но ничего не смог вернуть.

Что я должен изменить, чтобы делать запросы внутри моего локального вместо http://dbpedia.org/resource?

from SPARQLWrapper import SPARQLWrapper, JSON

# wrap the dbpedia SPARQL end-point
endpoint = SPARQLWrapper("http://dbpedia.org/sparql")

# set the query string
endpoint.setQuery("""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpr: <http://dbpedia.org/resource/>
SELECT ?label
WHERE { dbpr:Asturias rdfs:label ?label }
""")

# select the retur format (e.g. XML, JSON etc...)
endpoint.setReturnFormat(JSON)

# execute the query and convert into Python objects
# Note: The JSON returned by the SPARQL endpoint is converted to nested Python dictionaries, so additional parsing is not required.
results = endpoint.query().convert()

# interpret the results: 
for res in results["results"]["bindings"] :
    print res['label']['value']

Спасибо!

Ответы [ 2 ]

5 голосов
/ 06 июня 2012

Вы можете запросить rdflib.graph.Graph () с помощью:

filename = "path/to/fileneme" #replace with something interesting
uri = "uri_of_interest" #replace with something interesting

import rdflib
import rdfextras
rdfextras.registerplugins() # so we can Graph.query()

g=rdflib.Graph()
g.parse(filename)
results = g.query("""
SELECT ?p ?o
WHERE {
<%s> ?p ?o.
}
ORDER BY (?p)
""" % uri) #get every predicate and object about the uri
5 голосов
/ 27 марта 2012

SPARQLWrapper предназначен для использования только с удаленными или локальными конечными точками SPARQL. У вас есть два варианта:

(a) Поместите свой локальный RDF-файл в локальный тройной магазин и укажите свой код на localhost. (б) Или используйте rdflib и используйте InMemory хранилище:

import rdflib.graph as g
graph = g.Graph()
graph.parse('filename.rdf', format='rdf')
print graph.serialize(format='pretty-xml')
...