2014-09-13 99 views
0

我們可以使用SPARQL查詢從DBpedia中獲取美國地點列表嗎?我已經嘗試了以下查詢,但它(按設計)僅提供英文摘要。我想要美國地方的名字。我怎樣才能做到這一點?Sparql查詢到DBpedia

SELECT ?abstract 
FROM NAMED <http://dbpedia.org> 
WHERE { <http://dbpedia.org/resource/Lists_of_populated_places_in_the_United_States> <http://dbpedia.org/ontology/abstract> ?abstract. 
FILTER langMatches(lang(?abstract), 'en') } 
+0

你瀏覽過的http://dbpedia.org/page/Lists_of_populated_places_in_the_United_States的數據?它並不包含你想要的東西。你需要找到一種不同的方式來制定你的查詢。 – 2014-09-13 03:28:18

回答

2

通常情況下最簡單的方法是迭代地編寫一些這些查詢,隨着數據的發展一起探索數據。例如,在這種情況下,你可以這樣開始:

select ?place where { 
    ?place a dbpedia-owl:PopulatedPlace 
} 
limit 100 

SPARQL results

這不僅僅是在美國這樣的地方,但你可以瀏覽結果,直到你找到一個。然後你可以檢查它,看看你如何識別這些地方。在這種情況下,您可能會發現Furnace,西弗吉尼亞州,並且請注意,它的值爲dbpedia:United_States財產dbpedia-owl:國家。因此,我們可以細化查詢:

select ?place where { 
    ?place a dbpedia-owl:PopulatedPlace ; 
     dbpedia-owl:country dbpedia:United_States 
} 
limit 100 

SPARQL results

這看上去好多,但是你說你想要的地方,而不是確定他們實際虹膜的名字。基於你的過濾器,它看起來像你只是想要英文名字。然後,我們進一步細化:

select ?label where { 
    ?place a dbpedia-owl:PopulatedPlace ; 
     dbpedia-owl:country dbpedia:United_States ; 
     rdfs:label ?label 
    filter langMatches(lang(?label), 'en') 
} 
limit 100 

SPARQL results

這些名稱是語言標記文字。如果你只想要弦形部分,你可以做的是,在可變投影:

select (str(?label) as ?strLabel) where { 
    ?place a dbpedia-owl:PopulatedPlace ; 
     dbpedia-owl:country dbpedia:United_States ; 
     rdfs:label ?label 
    filter langMatches(lang(?label), 'en') 
} 
limit 100 

SPARQL results

+0

我真的很感謝這樣一個詳細的解釋,這就是我正在尋找.... – user2022416 2014-09-13 07:37:35

+0

我還有一個問題,如果我需要在Java中添加它,我只是需要將SPARQL端點添加到它嗎? – user2022416 2014-09-13 16:45:01