如何从DBPedia获得所有组织?

时间:2016-04-25 10:10:16

标签: sparql dbpedia

如何从DBpedia获取所有组织的列表? “组织”是指任何类型的实体,它是organisation或任何组织的子类。

我发现了问题 How to get all companies from DBPedia?,但这在当前的DBpedia SPARQL网络版中无效,我无法调整查询。

2 个答案:

答案 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对返回的结果数量设置了上限。因此,正如在上述问题的答案中一样,您可以使用带有LIMITOFFSET的子查询来获取块中的所有结果:

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