如何从 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 对返回的结果数量有上限。因此,正如上述问题的答案一样,您可以使用带有 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
,依此类推。
如何从 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
.
要同时获得 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 对返回的结果数量有上限。因此,正如上述问题的答案一样,您可以使用带有 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
,依此类推。