微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过SPARQLWrapper获取Fuseki API以正确报告详细的错误消息?

如何解决如何通过SPARQLWrapper获取Fuseki API以正确报告详细的错误消息?

概述:在

https://github.com/WolfgangFahl/DgraphAndWeaviateTest/blob/master/storage/sparql.py

https://github.com/WolfgangFahl/DgraphAndWeaviateTest/blob/master/tests/testSPARQL.py

我试图允许在字典的python列表和基于Jena / SPARQL的存储之间进行“往返”操作。

方法在我的用例中效果很好,在尝试了一段时间后,我进入了更多需要解决的细节。

stackoverflow问题listOfDict to RDF conversion in python targeting Apache Jena Fuseki解决了最初的问题,https://github.com/WolfgangFahl/DgraphAndWeaviateTest/issues?q=is%3Aissue+is%3Aclosed问题2-5显示了一些已经解决的详细问题。

现在我正在处理约180000条记录,我想从6个不同的数据源中导入,每个数据源似乎都有新的奇异记录 导致方法失败。

例如一批记录给了我以下日志:

read 45601 events in   0.6 s
storing 45601 events to sparql
  batch for         1 -      2000 of     45601 cr:Event in    0.6 s ->    0.6 s
  batch for      2001 -      4000 of     45601 cr:Event in    0.5 s ->    1.1 s
  batch for      4001 -      6000 of     45601 cr:Event in    0.5 s ->    1.6 s
  batch for      6001 -      8000 of     45601 cr:Event in    0.5 s ->    2.1 s
  batch for      8001 -     10000 of     45601 cr:Event in    0.5 s ->    2.6 s
  batch for     10001 -     12000 of     45601 cr:Event in    0.7 s ->    3.2 s
======================================================================
ERROR: testCrossref (tests.test_Crossref.TestCrossref)
test loading crossref data
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/wf/Library/Python/3.8/lib/python/site-packages/SPARQLWrapper/Wrapper.py",line 1073,in _query
    response = urlopener(request)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py",line 222,in urlopen
    return opener.open(url,data,timeout)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py",line 531,in open
    response = meth(req,response)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py",line 640,in http_response
    response = self.parent.error(
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py",line 569,in error
    return self._call_chain(*args)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py",line 502,in _call_chain
    result = func(*args)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py",line 649,in http_error_default
    raise HTTPError(req.full_url,code,msg,hdrs,fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request

SPARQLWrapper.SPARQLExceptions.QueryBadFormed: QueryBadFormed: a bad request has been sent to the endpoint,probably the sparql query is bad formed.

Response:
b'Error 400: Bad Request\n'

现在,由于我没有任何问题的详细信息,因此我正在使用二进制搜索。上面的错误我只知道问题 的记录的batchIndex在12000和14000之间,所以我是。将限制设置为14000并将batchSize设置为100即可。

 batch for     13301 -     13400 of     14000 cr:Event in    0.0 s ->    4.3 s

现在是最后一个成功的批次。所以我正在使用二进制搜索:13450失败,13425失败,13412 ok,13418 ok,13422失败,13420 ok,13421 ok 因此记录13422是元凶,我打开调试模式以查看为该记录创建的INSERT数据:

  cr:Event__102140gtm20003 cr:Event_name "Higher local fields".
  cr:Event__102140gtm20003 cr:Event_location "M\\"unster,Germany".
  cr:Event__102140gtm20003 cr:Event_source "crossref".
  cr:Event__102140gtm20003 cr:Event_eventId "10.2140/gtm.2000.3".
  cr:Event__102140gtm20003 cr:Event_title "Invitation to higher local fields".
  cr:Event__102140gtm20003 cr:Event_startDate "1999-08-29"^^<http://www.w3.org/2001/XMLSchema#date>.
  cr:Event__102140gtm20003 cr:Event_year 1999.
  cr:Event__102140gtm20003 cr:Event_month 9.
  cr:Event__102140gtm20003 cr:Event_endDate "1999-09-05"^^<http://www.w3.org/2001/XMLSchema#date>.

因此,“Münster”位置中的Umlaut编码“ \ u”是这里的罪魁祸首。我将解决此问题。真正的问题是:

我如何通过SPARQLWrapper获取Fuseki API以正确报告详细的错误消息 *

例如像

error in line # cr:Event__102140gtm20003 cr:Event_location "M\\"unster,Germany". is  not a valid triple?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?