如何从DBpedia获取所有组织的列表? “组织”是指任何类型的实体,它是organisation或任何组织的子类。
我发现了问题 How to get all companies from DBPedia?,但这在当前的DBpedia SPARQL网络版中无效,我无法调整查询。
答案 0 :(得分:4)
简单地获取作为dbo:Organization
或其子类的实例的所有资源:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?org { ?org a/rdfs:subClassOf* dbo:Organisation . }
但是,正如您链接的问题所示,DBpedia对返回的结果数量设置了上限。因此,正如在上述问题的答案中一样,您可以使用带有LIMIT
和OFFSET
的子查询来获取块中的所有结果:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ?org {
SELECT DISTINCT ?org {
?org a/rdfs:subClassOf* dbo:Organisation .
} ORDER BY ?org
}
LIMIT 10000 OFFSET 0
这将获得前10000个结果。要获得下一个10000,只需向偏移量添加10000:LIMIT 10000 OFFSET 10000
。然后,下一个10000与OFFSET 20000
,依此类推。
答案 1 :(得分:3)
您可以通过这样的查询获得所有组织,为您提供英语标签和维基百科页面:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX o: <http://dbpedia.org/ontology/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT DISTINCT ?orgURI ?orgName ?Wikipedia_page
WHERE {
?orgURI a o:Organisation .
OPTIONAL { ?orgURI rdfs:label ?orgName .
FILTER (lang(?orgName) = "en") }
OPTIONAL { ?orgURI ^foaf:primaryTopic ?Wikipedia_page }
}
ORDER BY ?orgName
这将为归类为http://dbpedia.org/ontology/Organisation
的资源返回350033结果。
要获得http://dbpedia.org/ontology/Organisation
的子类成员,您可以通过将属性转换为零或更多rdfs:subClassOf
的属性路径来更改第一个模式:
?orgURI a/rdfs:subClassOf* o:Organisation