Я пытаюсь получить результаты от BNCF по адресу this endpoint.Ошибка Sparql Ошибка JSON от конечной точки BNCF
Мой запрос (с «AB» в качестве примера) является:
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT DISTINCT ?source ?label ?content
WHERE {
?source a skos:Concept;
skos:prefLabel ?label;
skos:scopeNote ?content.
FILTER regex(str(?label), "ab", "i")
}
Запрос правильно на самом деле, если вы попытаетесь запустить это работает. Но когда я пытаюсь получить результаты от моего питона это ошибка:
SyntaxError: JSON Parse error: Unexpected EOF
Это мой питон код:
__3store = "http://digitale.bncf.firenze.sbn.it/openrdf-workbench/repositories/NS_03_2014/query"
sparql = SPARQLUpdateStore(queryEndpoint=__3store)
sparql.setReturnFormat(JSON)
results = sparql.query(query_rdf).convert()
print json.dumps(result, separators=(',',':'))
Я попытался код, указанный выше в соответствии с this answer, прежде чем мой код был вот так:
__3store = "http://digitale.bncf.firenze.sbn.it/openrdf-workbench/repositories/NS_03_2014/query"
sparql = SPARQLWrapper(__3store,returnFormat="json")
sparql.setQuery(query_rdf)
result = sparql.query().convert()
print json.dumps(result, separators=(',',':'))
но оба эти же ошибки.
Кто-нибудь знает, как это исправить? Благодаря
EDIT:
Это питон код, надеюсь, что это достаточно, чтобы понять
import sys
sys.path.append ('cgi/lib')
import rdflib
from rdflib.plugins.stores.sparqlstore import SPARQLUpdateStore, SPARQLStore
import json
from SPARQLWrapper import SPARQLWrapper, JSON
#MAIN
print "Content-type: application/json"
print
prefix_SKOS = "prefix skos: <http://www.w3.org/2004/02/skos/core#>"
crlf = "\n"
query_rdf = ""
query_rdf += prefix_SKOS + crlf
query_rdf += '''
SELECT DISTINCT ?source ?title ?content
WHERE {
?source a skos:Concept;
skos:prefLabel ?title;
skos:scopeNote ?content.
FILTER regex(str(?title), "ab", "i")
}
'''
__3store = "http://digitale.bncf.firenze.sbn.it/openrdf-workbench/repositories/NS_03_2014/query"
sparql = SPARQLWrapper(__3store,returnFormat="json")
sparql.setQuery(query_rdf)
result = sparql.query().convert()
print result
Запуск этого в возвратов Python оболочки:
Content-type: application/json
Warning (from warnings module):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SPARQLWrapper-1.6.4-py2.7.egg/SPARQLWrapper/Wrapper.py", line 689
RuntimeWarning: Format requested was JSON, but XML (application/sparql-results+xml;charset=UTF-8) has been returned by the endpoint
<xml.dom.minidom.Document instance at 0x105add710>
Так что я думаю, результатом всегда является XML, если я специфицировал Json как формат возврата.
Вы можете увидеть фактический JSON, который возвращаемой? –
Кроме того, было бы неплохо, если бы вы могли предоставить минимальный пример, который мы можем запустить, чтобы воспроизвести проблему. Это не может быть намного больше, чем код, который вы на самом деле показывали. В строке запроса также содержатся необходимые префиксы? Иногда конечные точки будут определять их для интерактивного/веб-использования (хотя, похоже, это не похоже на это), но обычно не для запросов, отправленных на конечную точку. –
Нет. Я не вижу реального JSON, эта ошибка вызывается ошибкой «error:» моего вызова Ajax. Поэтому мне кажется, что он не может выполнить запрос вообще, потому что он никогда не получает «успех:». –