1

我一直有这个奇怪的问题,我正在尝试使用 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.
4

2 回答 2

3

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

输入:

  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 更新是值得一看的地方,虽然我建议您浏览一下以了解其中的内容,但一个示例足以说明您需要编写的内容:

示例 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 . } }
于 2013-12-17T15:50:54.960 回答
0

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

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

于 2021-10-29T03:12:42.777 回答