2011-06-16 67 views
6

有沒有辦法從dbpedia中的dcterms:subject檢索所有類別?使用SPARQL檢索dbpedia主題類別

作爲一個例子,在http://dbpedia.org/page/Eiffel_Tower我可以在DCTERMS看到:經受以下類別:

  • 類別:Former_world's_tallest_buildings
  • 類別:Places_with_restrictions_on_photography
  • 類別:Michelin_Guide_starred_restaurants_and_chefs
  • 類別:Historic_Civil_Engineering_Landmarks
  • 類別:1889_建築學
  • ...

我想檢索DBpedia中所有category:xxx值。 有沒有辦法?

+0

看到http://answers.semanticweb.com/questions/10252/retrive-dbpedia-subject-categories-with-sparql重複的問題,以獲取更多的答案 – RobV 2011-06-17 07:42:37

回答

7

如果你去一個做一個統計查詢,看看有多少類別中使用以下SPARQL查詢DBpedia中:

SELECT COUNT(DISTINCT ?category) AS ?count WHERE {?subject dcterms:subject ?category} 

你會得到DBpedia中有503788個類別。如果您查詢所有類別,端點將不會爲您提供整個503788類別,因爲它對您可以返回的結果有多少限制。但是,您可以使用LIMIT和OFFSET發出多個查詢。例如,以獲得第一類1000,你可以做以下查詢:

SELECT DISTINCT ?category WHERE {?subject dcterms:subject ?category} LIMIT 1000 OFFSET 0 

我不知道你怎麼使用這個信息,但我的建議是用遞增運行多個查詢偏移量(例如, 1000,2000,3000),並將結果緩存在您正在使用的任何存儲中。基本上可以編寫一個程序來執行查詢並將結果放入緩存中。

不過請記住,DBPedia中的類別是分層的,所以一個類別是其他幾個類別的Borader類別。

1

或者乾脆運行:

SELECT ?category WHERE { ?category a <http://www.w3.org/2004/02/skos/core#Concept> } LIMIT 1000