除了XML外,SPARQLWrapper不能使CONSTRUCT查询返回

renyuneyun

我正在使用SPARQLWrapper查询本地SPARQL端点(使用apache-jena-fuseki),我的一些查询是CONSTRUCT查询。

该查询将在基于Web的SPARQL界面(例如yasgui)上给我有效的结果。使用SPARQLWrapper时,默认查询方法将给我以下错误:

Response:
b'Error 400: Failed to write output in RDF/XML: Only well-formed absolute URIrefs can be included in RDF/XML output: <arcp://uuid,00000000-0000-0000-0000-000000000000/> Code: 28/NOT_DNS_NAME in HOST: The host component did not meet the restrictions on DNS names.\n'

(我已将UUID替换为0。)

我找到了这个帖子不幸的是,源数据超出了我的控制范围,因此我无法轻松更改其内容-它是CWL-Prov,其标准要求它使用此表示形式。因此,我需要使用其他返回格式。我在yasgui上尝试了N-Triples和Turtle格式,它们在那里工作。

但是,在SPARQLWrapper上设置返回格式时,会出现问题。如果将其设置为以外的任何其他值SPARQLWrapper.XML,它将返回此错误(以N3为例):

Response:
b"Error 400: Can't determine output content type: n3\n"

(CONSTRUCT查询不支持JSON。)

如果我使用给定字符串以外的其他自定义字符串,它将自动回退到XML(如其文档中所述)。

该错误是由fuseki产生的,所以我相信也许我做错了什么。有人遇到这种情况,如何解决?


我用来执行查询的代码段:

import SPARQLWrapper

sparql = SPARQLWrapper.SPARQLWrapper('http://localhost:3030/prov')
#query = '' # The CONSTRUCT query here
sparql.setQuery(query)
sparql.setReturnFormat(SPARQLWrapper.N3)
return sparql.query().convert()

正如@AndyS所建议的那样,我用Turtle替换了N3,但是仍然出现错误。用-v运行fuseki,这是我得到的:

[2020-11-04 17:02:22] Fuseki     INFO  [1]   => User-Agent:          sparqlwrapper 1.8.5 (rdflib.github.io/sparqlwrapper)
[2020-11-04 17:02:22] Fuseki     INFO  [1]   => Connection:          close
[2020-11-04 17:02:22] Fuseki     INFO  [1]   => Host:                127.0.0.1:3030
[2020-11-04 17:02:22] Fuseki     INFO  [1]   => Accept-Encoding:     identity
[2020-11-04 17:02:22] Fuseki     INFO  [1]   => Accept:              application/turtle,text/turtle
[2020-11-04 17:02:22] Fuseki     WARN  SPARQL Query: Unrecognize request parameter (ignored): results
[2020-11-04 17:02:22] Fuseki     INFO  [1] Query = 

MY-ORIGINAL-QUERY-OMITTED

[2020-11-04 17:02:22] Fuseki     INFO  [1]   <= Vary:                Accept,Accept-Encoding,Accept-Charset
[2020-11-04 17:02:22] Fuseki     INFO  [1] 400 Can't determine output content type: turtle (165 ms)

我复制了打印的查询,并且它在YASGUI上有效。还有一些关于URI / IRI方案违规的错误,我在这里省略。

我在查询URL的末尾看到了这些额外的查询参数:

&format=turtle&output=turtle&results=turtle

也许它们与错误有关?但是,为什么funki既不抱怨formatoutput(如results)又不打印它们(如query)?

安迪斯

SPARQLWrapper默认为添加

&format=turtle&output=turtle&results=turtle

的要求。

SPARQLWrapper的一种方法setOnlyConneg可以关闭其他查询字符串部分的添加。

  1. WARN SPARQL Query: Unrecognize request parameter (ignored): results发生这种情况是因为Fuseki确实了解results并记录了有关此的警告。这只是一个警告。

  2. format是一种覆盖适当的HTTP内容协商机制的机制,因为在某些情况下很难设置HTTP标头。这不适用于正确设置的SPARQLWrapper Accept:

  3. format=turtle不在CONSTRUCT查询的名称列表中。ttl是。(为了完整起见,可以将turtle添加到Fuseki的未来版本中)。

最好的方法是不要使非标准查询字符串参数带有setOnlyConnegSPARQLWrapper在请求中正确设置了“ Accept:”标头,Fuseki进行了内容协商,并将与该标头一起使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

除了Float和Fixnum外,还有其他不能使用* .new创建的对象吗?

来自分类Dev

不能使用'LIKE%'|| 我的查询未按预期返回所有行

来自分类Dev

Jenkins 在目录外时不能使用 adb

来自分类Dev

查询无效。您不能使用多个“ in”过滤器

来自分类Dev

为什么我的查询不能使用 ActiveRecord?

来自分类Dev

为什么返回引用时不能使用const?

来自分类Dev

为什么不能使用内联if语句返回?

来自分类Dev

为什么虚拟函数不能使用返回类型推导?

来自分类Dev

不明白这不能使用函数返回错误

来自分类Dev

为什么不能使用匿名函数返回颜色值?

来自分类Dev

为什么返回引用时不能使用const?

来自分类Dev

不能使用ctrl +单击preventDefault并返回false

来自分类Dev

为什么 lambda 不能使封闭函数返回?

来自分类Dev

XML:为什么不能使用其他名称空间?

来自分类Dev

XML:为什么不能使用其他名称空间?

来自分类Dev

除了 $event 之外,不能使用任何其他变量名称来接收 Angular 中发出的数字

来自分类Dev

使用不能使用 JOIN 重写的子查询编写的查询示例?

来自分类Dev

我在SQL语句中不能使用JOIN来处理外键,该怎么办?

来自分类Dev

从SQL查询返回xml数据

来自分类Dev

Linq to XML查询返回null

来自分类Dev

不能使用Runnable

来自分类Dev

Ubuntu,不能使用@

来自分类Dev

不能使用Ubuntu

来自分类Dev

不能使用 QUrl

来自分类Dev

不能使用 FloatingActionButton?

来自分类Dev

我不能使功能

来自分类Dev

为什么这种类似于作用域的查询方法不能使用拒绝?

来自分类Dev

SQL查询不能使用别名,但可以用于索引

来自分类Dev

Django:ValueError:预取查询集不能使用raw(),values()和values_list()

Related 相关文章

热门标签

归档