簡體   English   中英

SPARQL-無法按國家/地區過濾

[英]SPARQL - Unable to filter by country

我知道這是一個容易回答的問題,但是我已經搜索了幾個小時而沒有成功。 為什么在http://dbpedia.org/snorql/中輸入以下SPARQL不會返回任何內容?

prefix dbo: <http://dbpedia.org/ontology/>

SELECT ?country ?city ?city_name ?country_name
WHERE {
?city rdf:type dbo:City .
?city foaf:name ?city_name .
?city dbo:country ?country .
FILTER(?country=dbpedia:Canada).
?country foaf:name ?country_name .
}
LIMIT 200

我也嘗試過-結果相同(即沒有)

prefix dbo: <http://dbpedia.org/ontology/>

SELECT ?country ?city ?city_name
WHERE {
?city rdf:type dbo:City .
?city foaf:name ?city_name .
?city dbo:country ?country .
?country foaf:name ?country_name .
FILTER(langMatches(lang(?country_name),"EN") && ?country_name="Canada")
}
LIMIT 200

無需過濾器即可獲得相等性。

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

SELECT ?country ?city ?city_name
WHERE {
    ?city rdf:type dbo:City ;
          foaf:name ?city_name ;
          dbo:country ?country .

    ?country foaf:name "Canada"@en .

    FILTER(langMatches(lang(?city_name), "en"))
}
ORDER BY ?city_name
LIMIT 100

測試: http : //linkedwiki.com/query/Filter_cities_by_country_with_DBpedia

進一步挖掘了一下。

為了進行第一個查詢挖掘,我使用了錯誤的前綴。 我需要使用<http://dbpedia.org/Resource>而不是本體。 這是在snorql中預定義的-但實際上沒有前綴。 但隨着一些擺弄,以下工作。

prefix dbo: <http://dbpedia.org/ontology/>

SELECT ?country ?city ?city_name ?country_name
WHERE {
?city rdf:type dbo:City .
?city foaf:name ?city_name .
?city dbo:country ?country .
FILTER(?country=:Canada).
?country foaf:name ?country_name .    
}
LIMIT 200

至於名稱匹配,顯然在使用foaf時不能僅匹配文字。 您需要添加語言標簽:

prefix dbo: <http://dbpedia.org/ontology/>

SELECT ?country ?city ?city_name
WHERE {
?city rdf:type dbo:City .
?city foaf:name ?city_name .
?city dbo:country ?country .
?country foaf:name ?country_name .
FILTER(langMatches(lang(?country_name),"EN") && ?country_name="Canada"@en)
}
LIMIT 200

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM