使用Python的SPARQLwrapp通过SPARQL查询获取HTTP错误500到DBPedia端点

2024-04-26 00:29:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试接收标签包含特定字符串的所有属性。我使用以下查询:

    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

当通过公共DBPedia端点@http://dbpedia.org/sparql发出查询时,它起作用,并返回我想要的结果。但是,当我在Python脚本中通过SPARQLWrapper执行相同操作时,我会不断得到:

^{pr2}$

我尝试过不同的查询,有无计数和排序,有无限制。我一直在获取http500s,我不认为端点不稳定,因为我对同一脚本中的其他查询没有问题,它只在这个查询中停止。在

类似的检索对象的查询可以正常工作(在公共端点和通过我的脚本一样):

    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 

知道是什么原因造成的吗?或者知道我怎样才能找回一个更具体的错误吗?提前谢谢。在


Tags: org脚本httpaswwwcountrdffilter
2条回答

我认为这是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

再试一次。在

尝试使用以下python脚本:

^{pr2}$

COUNT表达式应该是(count(?p) as ?count),带括号。在

不确定这就是问题所在,但我想我应该指出。在

相关问题 更多 >