2011-05-07 50 views
6

我想獲得描述國家羅馬尼亞由國名與此查詢的資源:檢索DBpedia中的資源通過其字符串名稱與SPARQL

PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX : <http://dbpedia.org/resource/> 

SELECT DISTINCT ?x WHERE { 
    ?x foaf:name 'Romania' 
} 

SPARQL results

但是,它並沒有獲取任何。如何通過字符串'Romania'獲得資源http://dbpedia.org/resource/Romania:Romania)。 如果我想通過我用下面的查詢全國資源的正常工作,以獲取國家的名稱:

PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX : <http://dbpedia.org/resource/> 

SELECT DISTINCT ?x WHERE { 
    :Romania foaf:name ?x 
} 

SPARQL results

回答

10

這應該做到這一點:

SELECT ?c 
WHERE { 
    ?c a dbo:Country ; 
    foaf:name "Romania"@en . 
    FILTER NOT EXISTS { ?c dbo:dissolutionYear ?y } 
} 

SPARQL results

這裏的關鍵怪癖是沒有語言標記的"Romania"不同於"Romania"@en。然後你也有一些歷史上的國家,也被稱爲羅馬尼亞,所以我們過濾出任何有多年解散的。 DBpedia的數據完整性在多年的解散過程中並不是很了不起,但至少羅馬尼亞的所有數據都是有標記的。

+0

謝謝!有效。 – 2011-05-08 15:42:52

+1

酷! (您應該將答案標記爲已接受,以表明這一點)。 – 2011-05-08 20:41:59

+0

@glennmcdonald有趣的是,幾年後,有人在羅馬尼亞頁面上使用了國家信息框模板,所以結果還包括[Commemorative_coins_of_Romania](http:// dbpedia。組織/資源/ Commemorative_coins_of_Romania)! – 2013-06-20 02:36:10