使用Python';通过SPARQL查询将HTTP错误500获取到DBPedia端点;s SPARQLwrapper
我正在尝试接收其标签包含特定字符串的所有属性。我使用以下查询:使用Python';通过SPARQL查询将HTTP错误500获取到DBPedia端点;s SPARQLwrapper,python,sparql,dbpedia,Python,Sparql,Dbpedia,我正在尝试接收其标签包含特定字符串的所有属性。我使用以下查询: SELECT ?p ?l count(?p) as ?count WHERE { ?someobj ?p ?s . ?p a <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . ?p <http://www.w3.org/2000/01/rdf-schema#label> ?l . ?l b
SELECT ?p ?l count(?p) as ?count WHERE {
?someobj ?p ?s .
?p a <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
?p <http://www.w3.org/2000/01/rdf-schema#label> ?l .
?l bif:contains "string" .
FILTER (lang(?l) = 'en').
FILTER (!isLiteral(?someobj)).
} ORDER BY DESC(?count) LIMIT 5
我尝试了不同的查询方式,有无计数和排序,有无限制。我一直收到HTTP 500。我不认为端点不稳定,因为我对同一脚本中的其他查询没有问题,它只会在这个查询中停止
用于检索对象的类似查询工作正常(在公共端点和通过我的脚本):
选择?s?l计数(?s)作为?计数,其中{
有什么问题吗。
s?l。
?l bif:包含“计算机”。
过滤器(!regex(str(?s),'^http://dbpedia.org/resource/Category:')).
过滤器(!regex(str(?s),'^http://dbpedia.org/resource/List')).
过滤器(!regex(str(?s),'^http://sw.opencyc.org/')).
过滤器(lang(?l)='en')。
过滤器(!isLiteral(?someobj))。
}按描述(?计数)的订单限制20
你知道这是什么原因吗?或者知道如何检索更具体的错误吗?提前感谢。计数表达式应该是
(COUNT(?p)as?COUNT)
,带括号
我不确定这是问题所在,但我想我应该指出它。我认为dbpedia这是一个超时错误,因为它在不同的图表中查找它。当您通过dbpediaweb界面尝试它时,它总是包含您正在查询的图形的uri。因此,请尝试将其添加到查询中:
SELECT ?p ?l count(?p) as ?count FROM <http://dbpedia.org> WHERE {
?someobj ?p ?s .
?p a <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
?p <http://www.w3.org/2000/01/rdf-schema#label> ?l .
?l bif:contains "string" .
FILTER (lang(?l) = 'en').
FILTER (!isLiteral(?someobj)).
} ORDER BY DESC(?count) LIMIT 5
SELECT ?s ?l count(?s) as ?count WHERE {
?someobj ?p ?s .
?s <http://www.w3.org/2000/01/rdf-schema#label> ?l .
?l bif:contains "computer" .
FILTER (!regex(str(?s), '^http://dbpedia.org/resource/Category:')).
FILTER (!regex(str(?s), '^http://dbpedia.org/resource/List')).
FILTER (!regex(str(?s), '^http://sw.opencyc.org/')).
FILTER (lang(?l) = 'en').
FILTER (!isLiteral(?someobj)).
} ORDER BY DESC(?count) LIMIT 20
SELECT ?p ?l count(?p) as ?count FROM <http://dbpedia.org> WHERE {
?someobj ?p ?s .
?p a <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
?p <http://www.w3.org/2000/01/rdf-schema#label> ?l .
?l bif:contains "string" .
FILTER (lang(?l) = 'en').
FILTER (!isLiteral(?someobj)).
} ORDER BY DESC(?count) LIMIT 5
import sys
import urllib,urllib2
def query_e(query,epr,soft_limit=True):
try:
params = urllib.urlencode({'query': query})
opener = urllib2.build_opener(urllib2.HTTPHandler)
request = urllib2.Request(epr+'?'+params)
request.add_header('Accept', 'application/json')
request.get_method = lambda: 'GET'
url = opener.open(request)
data = url.read()
return data
except Exception, e:
traceback.print_exc(file=sys.stdout)
raise e