2015-09-11 24 views
3

我對語義網,dbpedia和SPARQL很陌生。我想找到美國所有的州和他們的首都。這就是我現在所擁有的。如何使用Dbpedia和SPARQL找到美國的所有州和他們的首都?

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX dbo: <http://dbpedia.org/ontology/> 

SELECT DISTINCT ?state_label ?capital_label 
WHERE { 
    ?state_label dct:subject dbc:States_of_the_United_States. 
    ?state_label dbo:capital ?capital_label. 
} 

我只有36個結果,而不是50個。有人可以幫忙嗎?

回答

3

在看resource for New Hampshire,我看到它的一種類型是yago:StatesOfTheUnitedStates。當我請求所有這些時,我得到了51個結果,當我請求所有這些和他們的首都時,我得到了50個。這些數字聽起來很正確,但看着數據,這有點複雜;有一個非國家結果(美國州),而新澤西州有兩個(資源特倫頓和字符串「Trenton」),而特拉華州沒有列出資本(我不知道爲什麼,但是三聯只是在DBpedia中不存在)。無論如何,如果你願意採取有資本的49,您篩選使用這樣的:

select ?state ?capital where { 
    ?state a yago:StatesOfTheUnitedStates ; 
     dbp:capital ?capital . 
    filter isIRI(?capital) 
} 

SPARQL results

1

有時候,在這種情況下,這個問題是數據,而不是在您的查詢。

還要注意的是,儘管主DBpedia數據集通常落後於維基百科,但糾正DBpedia數據的主要方式仍然是編輯維基百科。如果DBpedia似乎沒有從維基百科中提取正確的數據,那麼對tell DBpedia有幫助...

DBpedia中顯然只有5 yago:StateCapitalsInTheUnitedStates,但我們知道這不是真的關於世界,也不是關於數據的維基百科 - 所以肯定有東西要改變。

Here's a query,讓你鍵入爲yago:StatesOfTheUnitedStates與他們http://dbpedia.org/property/capital(失蹤特拉華州;加倍新澤西州)的所有資源和http://dbpedia.org/ontology/capital(失蹤多州) -

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX dbp: <http://dbpedia.org/property/> 

    SELECT ?state 
      ?dbocapital 
      ?dbpcapital 
    WHERE 
    { 
         ?state   a yago:StatesOfTheUnitedStates 
      OPTIONAL { ?state dbo:capital ?dbocapital     } 
      OPTIONAL { ?state dbp:capital ?dbpcapital     } 
    } 
ORDER BY ?state 
相關問題