【问题标题】:Sparql Insert Exception : SPARQLWrapper.SPARQLExceptions.QueryBadFormedSparql 插入异常:SPARQLWrapper.SPARQLExceptions.QueryBadFormed
【发布时间】:2013-12-17 13:56:27
【问题描述】:

我一直有这个奇怪的问题,我正在尝试使用 python 中的 SPARQLWrapper 库插入一个大师图。 我可以通过基于浏览器的端点在 localhost:8890\sparql 插入三元组,但是当我通过我的 python SparqlWrapper 尝试相同的查询时,它会引发以下错误:

SPARQLWrapper.SPARQLExceptions.QueryBadFormed:QueryBadFormed:不好 请求已发送到端点,可能 sparql 查询是 格式不好。

感觉配置端有问题,但没能识别出来。

PREFIX dbpedia: <http://dbpedia.org/resource/> Insert Data  { GRAPH <test> { <http://dbpedia.org/resource/life> <http://umbel.org/umbel/rc/Artist> '2' . } }
Traceback (most recent call last):
  File "test.py", line 33, in <module>
    sys.exit(process.run("1"))
  File "test.py", line 27, in run
    result = self.sparql.query().convert()
  File "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SPARQLWrapper/Wrapper.py", line 390, in query
    return QueryResult(self._query())
  File "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SPARQLWrapper/Wrapper.py", line 363, in _query
    raise QueryBadFormed()
SPARQLWrapper.SPARQLExceptions.QueryBadFormed: QueryBadFormed: a bad request has been sent to the endpoint, probably the sparql query is bad formed.

【问题讨论】:

  • 是否有查询,或者您使用的是空字符串? ;) 请显示您的 SPARQL 查询。顺便说一下,sparql.org 有查询验证器,您可以使用它来检查您的查询是否格式正确。但请包含查询,因为“有关您编写的代码问题的问题必须描述具体问题 - 并包含重现问题的有效代码 - 在问题本身中。”
  • 抱歉,已添加查询!

标签: python sparql semantic-web sparqlwrapper


【解决方案1】:

如果你把它带到 sparql.org 的SPARQL update validator,它会立即告诉你这是错误的,语法错误在哪里:

输入:

  1 PREFIX xsd:     <http://www.w3.org/2001/XMLSchema#>
  2 PREFIX rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
  3 PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>
  4 PREFIX owl:     <http://www.w3.org/2002/07/owl#>
  5 PREFIX fn:      <http://www.w3.org/2005/xpath-functions#>
  6 PREFIX apf:     <http://jena.hpl.hp.com/ARQ/property#>
  7 
  8 PREFIX dbpedia: <http://dbpedia.org/resource/>
  9 Insert Data Into GRAPH <test> {
 10   <http://dbpedia.org/resource/life> <http://umbel.org/umbel/rc/Artist> '2'^^xsd:integer .
 11 }

语法错误:

Encountered " "into" "Into "" at line 9, column 13.
Was expecting:
    "{" ...

当然,要了解如何执行您想要执行的操作,您需要查看规范。 SPARQL 1.1 Update 是查看的地方,虽然我建议您浏览一下以了解其中的内容,但一个示例足以说明您需要编写的内容:

示例 2:

此 SPARQL 1.1 更新请求添加了三元组以提供 书。与前面的示例相反,它影响了默认值 图,请求的更改发生在由标识的命名图中 IRI http://example/bookStore.

PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX ns: <http://example.org/ns#>
INSERT DATA
{ GRAPH <http://example/bookStore> { <http://example/book1>  ns:price  42 } }

您的查询需要是

PREFIX dbpedia: <http://dbpedia.org/resource/>
Insert Data 
{ GRAPH <test> { <http://dbpedia.org/resource/life> <http://umbel.org/umbel/rc/Artist> '2'^^xsd:integer . } }

【讨论】:

  • Josh 有些还是一样的错误,我也分别用两个版本的 virtuoso 6 和 7 尝试了相同的代码,令我惊讶的是,我的旧代码在 7.x 版本上运行良好,但抛出了6.x 出现上述错误
  • PREFIX dbpedia: dbpedia.org/resource> 插入数据 { GRAPH { dbpedia.org/resource/life> umbel.org/umbel/rc/Artist> '2' 。 }} Traceback(最近一次调用最后一次):文件“test.py”,第 37 行,在 sys.exit(process.run("1")) 文件“test.py”,第 31 行,在运行结果中= self.sparql.query().convert() 文件“/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SPARQLWrapper/Wrapper .py",第 390 行,查询中
  • return QueryResult(self._query()) 文件 "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site- packages/SPARQLWrapper/Wrapper.py",第 363 行,在 _query 中引发 QueryBadFormed() SPARQLWrapper.SPARQLExceptions.QueryBadFormed:QueryBadFormed:错误请求已发送到端点,可能是 sparql 查询格式错误。
  • @AnkitSolanki 在 cmets 中读取代码几乎是不可能的。请将此作为您问题的更新发布。另外,我非常怀疑这是 same 错误。例如,我看到PREFIX dbpedia: &lt;dbpedia.org/resource/&gt;; 的最后一个分号(在我发布的查询中是not)不属于那里。您可能会遇到相同的 local 错误,但这是因为语法错误不同。
  • @AnkitSolanki 正如我所说,我发布的代码中有错误,但我现在已经更新了。请注意,SPARQL 更新是后续 SPARQL 修订版 (1.1) 的一部分。看起来 Virtuoso 7 中添加了 SPARQL Update 1.1 支持(请参阅 [此公告](openlinksw.com/dataspace/doc/dav/wiki/Main/#2013-08-05:新 VOS 7.0.0 发布)),因此如果它在早期版本中不起作用也就不足为奇了。
【解决方案2】:

我整天都在与这个问题作斗争。我终于找到了解决我这个问题的版本:

确保您的空格实际上是空格,而不仅仅是换行符“\n”。编辑们对此没意见,SPARQLWrapper 不喜欢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    相关资源
    最近更新 更多