如何在Wikidata SPARQL中获取电影成本货币?

如何在Wikidata SPARQL中获取电影成本货币?,sparql,wikidata,Sparql,Wikidata,我知道如何获得指定电影的成本: PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT ?item (GROUP_CONCAT( ?_cost; SEPARATOR = "~~~") AS ?budget) WHERE { VALUES ?selectedMovies { wd:Q24515019 wd:Q20762698 } ?item wdt:P31/wdt:P279* wd:Q11424 filter (?item = ?

我知道如何获得指定电影的成本:

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?item (GROUP_CONCAT( ?_cost; SEPARATOR = "~~~") AS ?budget) 
WHERE {
VALUES ?selectedMovies { wd:Q24515019 wd:Q20762698 }
?item wdt:P31/wdt:P279* wd:Q11424 filter (?item = ?selectedMovies).
OPTIONAL {
?item wdt:P2130 ?_cost.
}
}
GROUP BY ?item
前缀xsd:
选择项目(组成本(?成本;分隔符=“~~”)作为预算)
在哪里{
值?选择的移动{wd:Q24515019 wd:Q20762698}
?项目wdt:P31/wdt:P279*wd:Q11424过滤器(?项目=?所选视频)。
可选的{
?项目wdt:P2130?\u成本。
}
}
按项目分组
但当我试图以成本换取货币时,我一无所获:

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?item (GROUP_CONCAT( ?_cost; SEPARATOR = "~~~") AS ?budget) 
(GROUP_CONCAT( ?_currency; SEPARATOR = "~~~") AS ?_currency)
WHERE {
VALUES ?selectedMovies { wd:Q24515019 wd:Q20762698 }
?item wdt:P31/wdt:P279* wd:Q11424 filter (?item = ?selectedMovies).
OPTIONAL {
?item wdt:P2130 ?_cost.
?_cost wdt:P2237 ?_currency.
}
}
GROUP BY ?item
前缀xsd:
选择项目(组成本(?成本;分隔符=“~~”)作为预算)
(集团货币(?货币;分隔符=“~~”)作为?货币)
在哪里{
值?选择的移动{wd:Q24515019 wd:Q20762698}
?项目wdt:P31/wdt:P279*wd:Q11424过滤器(?项目=?所选视频)。
可选的{
?项目wdt:P2130?\u成本。
?单位成本wdt:P2237?单位货币。
}
}
按项目分组
我检查了一下,在这些电影的页面上,成本货币是存在的


那么,我怎样才能得到货币呢?

好吧,这有点复杂,因为你需要单位的属性:

前缀xsd:
选择项目(组成本(不同的成本,带有单位分隔符=“~~”)作为预算)
在哪里{
值?选择的移动{wd:Q24515019 wd:Q20762698}
?项目wdt:P31/wdt:P279*wd:Q11424过滤器(?项目=?所选视频)。
可选的{
?项目wdt:P2130?\u成本。
#获取成本报表的节点
?p项:P2130?STM节点。
#然后是它的值节点
?stmnode psv:P2130?valuenode。
#然后是其单位,即作为实体的货币
?valuenode wikibase:quantityUnit?单位。
#最后,它的标签
?单位rdfs:标签?单位标签。
过滤器(LANGMATCHES(LANG(?unitLabel),'en'))
#把所有的东西放在一起
绑定(CONCAT(str(?u cost),“”,str(?unitLabel))作为?cost_与_单位)
}
}
按项目分组
更新 要获取装置的ISO 4217代码,请更换

# then finally, its label 
?unit rdfs:label ?unitLabel.
FILTER(LANGMATCHES(LANG(?unitLabel), 'en'))


当你问单位的属性时,它有点复杂:

前缀xsd:
选择项目(组成本(不同的成本,带有单位分隔符=“~~”)作为预算)
在哪里{
值?选择的移动{wd:Q24515019 wd:Q20762698}
?项目wdt:P31/wdt:P279*wd:Q11424过滤器(?项目=?所选视频)。
可选的{
?项目wdt:P2130?\u成本。
#获取成本报表的节点
?p项:P2130?STM节点。
#然后是它的值节点
?stmnode psv:P2130?valuenode。
#然后是其单位,即作为实体的货币
?valuenode wikibase:quantityUnit?单位。
#最后,它的标签
?单位rdfs:标签?单位标签。
过滤器(LANGMATCHES(LANG(?unitLabel),'en'))
#把所有的东西放在一起
绑定(CONCAT(str(?u cost),“”,str(?unitLabel))作为?cost_与_单位)
}
}
按项目分组
更新 要获取装置的ISO 4217代码,请更换

# then finally, its label 
?unit rdfs:label ?unitLabel.
FILTER(LANGMATCHES(LANG(?unitLabel), 'en'))


嘿,非常感谢,真的很有帮助。修改此查询以获取ISO 4217代码(例如“USD”)是否困难?我试过了,但仍然没有运气,维基数据中包含的所有内容都可以检索。看看我最新的答案,你是最棒的!我想我昨天试过了,但没用。现在一切都是我想要的!嘿,非常感谢,真的很有帮助。修改此查询以获取ISO 4217代码(例如“USD”)是否困难?我试过了,但仍然没有运气,维基数据中包含的所有内容都可以检索。看看我最新的答案,你是最棒的!我想我昨天试过了,但没用。现在一切都是我想要的!