[英]Sparql query returned value integer, cant filter it to get the int
雖然查詢返回國家名稱而不過濾人口,但我使用過濾器獲取 integer 什么都不返回。
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT DISTINCT str(?country_label) ?population
WHERE
{
?country dct:subject <http://dbpedia.org/resource/Category:Countries_in_Europe>.
?country rdfs:label ?country_label.
?country dbo:populationTotal ?population.
FILTER langMatches( lang(?country_label), "EN" )
FILTER datatype((?population) = xsd:integer )
}
我不確定你想用這個 FILTER 條件實現什么,但你的查詢返回零結果的原因是沒有一個人口值是數據類型xsd:integer
。
順便說一句,您的查詢中還有其他問題:在 SELECT 子句中使用類似str()
的 function 而不將 function 的結果綁定到新變量是不是合法as?new_var
我知道 DBPedia 端點允許它,但您應該知道,如果您在不同的 SPARQL 引擎上嘗試它,它可能會給您帶來錯誤。
如果您在沒有數據類型過濾器的情況下運行查詢:
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT DISTINCT (str(?country_label) as ?cl) ?population
WHERE
{
?country dct:subject <http://dbpedia.org/resource/Category:Countries_in_Europe>.
?country rdfs:label ?country_label.
?country dbo:populationTotal ?population.
FILTER langMatches( lang(?country_label), "EN" )
}
您將看到結果僅包含數據類型xsd:nonNegativeInteger
的值。 這是一個不同的數據類型,雖然每個非負 integer 也是一個 integer 當然是正確的,但這種形式的數據類型推斷並不是大多數 SPARQL 端點支持的。
另外:在您對人口的原始過濾條件中,括號放置錯誤。 如果您按如下方式修改查詢:
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT DISTINCT (str(?country_label) as ?cl) ?population
WHERE
{
?country dct:subject <http://dbpedia.org/resource/Category:Countries_in_Europe>.
?country rdfs:label ?country_label.
?country dbo:populationTotal ?population.
FILTER langMatches( lang(?country_label), "EN" )
FILTER ( datatype(?population) = xsd:nonNegativeInteger )
}
您將取回屬於該數據類型的所有值 - 盡管如前所述,我不確定您在這里實現了什么,因為這與您在沒有數據類型檢查的情況下獲得的結果相同,盡我所能告訴。
如果您的目標是取回數字,但表示為xsd:integer
而不是xsd:nonNegativeInteger
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT DISTINCT (str(?country_label) as ?cl) (xsd:integer(?population) as ?pop)
WHERE
{
?country dct:subject <http://dbpedia.org/resource/Category:Countries_in_Europe>.
?country rdfs:label ?country_label.
?country dbo:populationTotal ?population.
FILTER langMatches( lang(?country_label), "EN" )
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.