如何从 DBPedia 获取所有组织?

How to get all organisations from DBPedia?

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

我找到了问题 How to get all companies from DBPedia? 但这在当前的 DBpedia SPARQL 网络版本中不起作用,我无法调整查询。

您可以通过这样的查询获取所有组织,并为您提供英文标签和维基百科页面以获取那些拥有它的资源:

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.

的资源,目前 return 有 350033 个结果

要同时获得 http://dbpedia.org/ontology/Organisation 子类的成员,您可以通过将 属性 变成经过零个或多个 rdfs:subClassOf 的 属性 路径来更改第一个模式]:

?orgURI  a/rdfs:subClassOf*  o:Organisation

要简单地获取属于 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,依此类推。