gpt4 book ai didi

sparql - Virtuoso SRARQL 结果中的 double 值被截断(四舍五入)

转载 作者:行者123 更新时间:2023-12-05 03:11:18 28 4
gpt4 key购买 nike

我正在使用 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 .

如果我执行以下简单的 SPARQL 查询

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> 
PREFIX ap: <http://vocab.linkeddata.es/datosabiertos/def/urbanismo-infraestructuras/alumbrado-publico#>
select ?farola ?lat ?long where {
?farola a ap:PuntoDeAlumbrado; geo:lat ?lat; geo:long ?long .
}

我得到以下结果。请注意,纬度和经度的值四舍五入为不太精确的值

+-------------------------------------------------+----------+----------+
| farola | lat | long |
+-------------------------------------------------+----------+----------+
| http://linkeddata.es/resource/farolas/lapalma/0 | 28.6058 | -17.7742 |
+-------------------------------------------------+----------+----------+

当我将结果格式设置为 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 ] ] .

问题是当我使用 Apache Jena [v3.1.0] 进行查询时,我得到了四舍五入的结果。我猜,它要求 application/sparql-results+json 作为第一选择。让 Virtuoso 在结果中返回非截断值的最佳方法是什么(配置 Virtuoso 或 Jena)?

这种行为在 DBpedia SPARQL 端点中是相同的,因为它可以在 HTML Result 中看到。与 Turtle Result 相比用于查询

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 .
}

关于sparql - Virtuoso SRARQL 结果中的 double 值被截断(四舍五入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37380338/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com