运行sparql查询以获取浮点值

时间:2016-11-24 20:19:17

标签: sparql dbpedia

嗨下面是我在https://dbpedia.org/sparql上执行的sparql查询。但是我收到一个错误“无效的浮点值转换'美国:'”,因为在grossincome中存在一些字符值,如果我将我的查询更改为str(?grossincome)为“grossincome1”,那么它会正确执行。我的问题是如何以相同的比例转换所有货币以避免此错误?

 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 PREFIX dcterms: <http://purl.org/dc/terms/>    
 PREFIX dbo: <http://dbpedia.org/ontology/>
 PREFIX dbp: <http://dbpedia.org/property/>
 PREFIX foaf: <http://xmlns.com/foaf/0.1/>
 PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

 select distinct (str(?resource) as ?movietitle) (xsd:float(?budget) as ?budget1) (xsd:float(?grossincome) as ?grossincome1) (str(?Country) as ?country1)  ?ReleaseDate where {
            ?movie foaf:name ?resource.
           ?movie dbo:budget ?budget.
           ?movie dbp:gross ?grossincome.
           ?movie dbp:country ?Country.
           ?movie dbo:releaseDate ?ReleaseDate.
           FILTER (lang(?resource) = 'en').
  }

1 个答案:

答案 0 :(得分:3)

DBpedia中的数据并不完美,因为您已经认识到它对于无类型属性dbp:gross非常不同。其中,它包含BDT 2.52 crores$34,994,648 USDAU$178,0006892098.0等值,因此几乎不可能通过SPARQL查询处理不同的货币,以便返回值以相同的货币。

我的意思是,您必须知道发生的所有不同货币和格式,然后分别处理每种货币和格式。但这更多的是应用程序逻辑的任务,而不是查询本身。

或者,您可以尝试使用数据属性http://dbpedia.org/ontology/gross,这应该与$中的值相关。至少这是它的标签“毛($)”所说的。