我正在尝试收集每个国家/地区维基百科中列出的地标列表,例如US Landmarks。但是这个父类别只包括子类别,并且不清楚需要多少层才能获得实际数据。有没有办法对这样的事情进行SPARQL查询?还是有其他办法吗?
像这样的简单查询不会返回任何内容
SELECT DISTINCT ?namedEnt WHERE {?namedEnt <http://purl.org/dc/terms/subject> <http://dbpedia.org/resource/Category:Category:Landmarks_in_the_United_States_by_state>} limit 10
答案 0 :(得分:3)
似乎使用DBpedia中的skos:broader
来表示sucategory与其父类别之间的关系。如果将其与表示谓词的一个或多个应用程序的*
组合,则查询将变为:
PREFIX cat: <http://dbpedia.org/resource/Category:>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT DISTINCT ?page
WHERE {
?subcat skos:broader* cat:Landmarks_in_the_United_States_by_state.
?page dcterms:subject ?subcat
}
或者您可以使用/
缩短它:
SELECT DISTINCT ?page
WHERE {
?page dcterms:subject/skos:broader* cat:Landmarks_in_the_United_States_by_state
}