Sparql 双精度值在Virtuoso SRARQL结果中被截断(四舍五入)

Sparql 双精度值在Virtuoso SRARQL结果中被截断(四舍五入),sparql,virtuoso,linked-data,rounding,Sparql,Virtuoso,Linked Data,Rounding,我使用的是Virtuoso Opensource 7.2.4,有一个由一些数据组成的数据集,例如: @prefix xsd: <http://www.w3.org/2001/XMLSchema#> @prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> . @prefix ap: <http://vocab.linkeddata.es/datosabiertos/def/urbanismo-infraestru

我使用的是Virtuoso Opensource 7.2.4,有一个由一些数据组成的数据集,例如:

@prefix xsd: <http://www.w3.org/2001/XMLSchema#>
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .
@prefix ap: <http://vocab.linkeddata.es/datosabiertos/def/urbanismo-infraestructuras/alumbrado-publico#> .


<http://linkeddata.es/resource/farolas/lapalma/0> a ap:PuntoDeAlumbrado ;
    geo:long "-17.774237421604201614"^^xsd:double ;
    geo:lat "28.60580329136699973"^^xsd:double . 
当我将结果格式设置为HTML、XML、JSON等时,就会发生这种情况。如果我以Turtle格式请求结果,我可以以正确的精度获取结果

@prefix res: <http://www.w3.org/2005/sparql-results#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
_:_ a res:ResultSet .
_:_ res:resultVariable "farola" , "lat" , "long" .
@prefix xsd:    <http://www.w3.org/2001/XMLSchema#> .
_:_ res:solution [
      res:binding [ res:variable "farola" ; res:value <http://linkeddata.es/resource/farolas/lapalma/0> ] ;
      res:binding [ res:variable "lat" ; res:value 28.60580329136699973 ] ;
      res:binding [ res:variable "long" ; res:value -17.774237421604201614 ] ] .
@前缀res:。
@前缀rdf:。
_:ua res:ResultSet。
_:uures:resultVariable“farola”、“lat”、“long”。
@前缀xsd:。
_:ures:解决方案[
res:binding[res:variable“farola”;res:value];
res:binding[res:variable“lat”;res:value 28.60580329136699973];
res:binding[res:variable“long”;res:value-17.774237421604201614]]。
问题是,当我使用ApacheJena[v3.1.0]进行查询时,我得到了四舍五入的结果。我猜,它要求将application/sparql结果+json作为第一个首选项。让Virtuoso在结果中返回非截断值的最佳方法是什么(配置Virtuoso或Jena)

这种行为在dbpediasparql端点中与在查询的vs中看到的行为相同

prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> 
select ?lat ?long where {
 <http://dbpedia.org/resource/Liberty_Tower_(Manhattan)>  geo:long ?long; geo:lat ?lat .
}
前缀geo:
选择?横向?纵向在哪里{
geo:long?long;geo:lat?lat。
}

作为一种解决方法,您可以在查询中将值转换为字符串:

prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> 
select (str(?lat) as ?lat) (str(?long) as ?long) where {
  <http://dbpedia.org/resource/Liberty_Tower_(Manhattan)>  geo:long ?long; geo:lat ?lat .
}
前缀geo:
选择(str(?lat)作为?lat)(str(?long)作为?long),其中{
geo:long?long;geo:lat?lat。
}

org.apache.jena.sparql.engine.http.QueryEngineHttp::setSelectContentType(“海龟”)
谢谢!显然,只有“应用程序/sparql结果+xml”、“应用程序/sparql结果+json”、“文本/选项卡分隔值”、“文本/csv”是sparql 1.1中定义的标准结果格式。由于Jena检查有效格式(即使没有,也不知道如何解析它们),因此无法发送其他类型。我想知道这是否可以在Virtuoso.TSV的服务器端修复——它作为SPARQL结果格式是无损的。这是海龟术语,每个结果行写一行,实际上是“海龟结果”。好吧,我错过了。在这种情况下,
WebContent.contentTypeTextTSV
。谢谢@AndyS AKSW。我试过了,但Jena未能解析来自Virtuoso的响应,结果异常:TSV结果格式不正确,不是一个变量:“farola”。代码段:异常:TSV:
prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> 
select ?lat ?long where {
 <http://dbpedia.org/resource/Liberty_Tower_(Manhattan)>  geo:long ?long; geo:lat ?lat .
}
prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> 
select (str(?lat) as ?lat) (str(?long) as ?long) where {
  <http://dbpedia.org/resource/Liberty_Tower_(Manhattan)>  geo:long ?long; geo:lat ?lat .
}