使用SPARQL提取dbpedia实体的层次结构

lea*_*ner 2 semantic-web sparql dbpedia

我正在尝试使用SPARQL端点为DBpedia资源提取Wikipedia类别或Yago分类的层次结构。例如,我想以实体的分层形式找出所有可能的类别和类,例如http://dbpedia.org/resource/Nokia,例如Thing→Organization→Company→...→Nokia。

Jos*_*lor 5

一个简单的SPARQL select可以检索您感兴趣的信息,尽管它不会层次排列。您对获取资源的所有类型以及rdfs:subClassOf它们之间的关系感兴趣。这是一个非常简单的诺基亚查询,可以在DBpedia SPARQL端点上运行

SELECT * WHERE {
  dbpedia:Nokia a ?c1 ; a ?c2 .
  ?c1 rdfs:subClassOf ?c2 .
}
Run Code Online (Sandbox Code Playgroud)

SPARQL结果

如果将该结果集中的每对类视为有向边并执行拓扑排序,那么您将看到诺基亚资源所属的类的层次结构。实际上,由于将其视为图可能很方便,因此可以使用SPARQL构造查询以RDF图的形式获取它。

CONSTRUCT WHERE {
  dbpedia:Nokia a ?c1 ; a ?c2 .
  ?c1 rdfs:subClassOf ?c2 .
}
Run Code Online (Sandbox Code Playgroud)

SPARQL结果

构造查询生成此图(N3格式):

@prefix rdfs:   <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dbpedia-owl:    <http://dbpedia.org/ontology/> .
@prefix owl:    <http://www.w3.org/2002/07/owl#> .
@prefix yago:   <http://dbpedia.org/class/yago/> .
@prefix rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dbpedia:    <http://dbpedia.org/resource/> .

dbpedia-owl:Agent   rdfs:subClassOf owl:Thing .
dbpedia-owl:Company rdfs:subClassOf dbpedia-owl:Organisation .
dbpedia-owl:Organisation    rdfs:subClassOf dbpedia-owl:Agent .
yago:CompaniesBasedInEspoo  rdfs:subClassOf yago:Company108058098 .
dbpedia:Nokia   rdf:type    yago:CompaniesListedOnTheHelsinkiStockExchange ,
        owl:Thing ,
        yago:CompaniesBasedInEspoo ,
        dbpedia-owl:Agent ,
        yago:DisplayTechnologyCompanies ,
        yago:ElectronicsCompaniesOfFinland ,
        dbpedia-owl:Company ,
        dbpedia-owl:Organisation ,
        yago:Company108058098 ,
        yago:CompaniesEstablishedIn1865 .
yago:CompaniesEstablishedIn1865 rdfs:subClassOf yago:Company108058098 .
yago:CompaniesListedOnTheHelsinkiStockExchange  rdfs:subClassOf yago:Company108058098 .
yago:DisplayTechnologyCompanies rdfs:subClassOf yago:Company108058098 .
yago:ElectronicsCompaniesOfFinland  rdfs:subClassOf yago:Company108058098 .
Run Code Online (Sandbox Code Playgroud)

备注

上面的查询检索rdf:type诺基亚的层次结构。在问题中,您还提到了Wikipedia类别。DBpedia资源与相应dcterms:subject属性所属的Wikipedia类别相关联。然后,这些Wikipedia类别按层次结构进行组织skos:broader。这些实际上不是针对个人的类型。例如,数据包含:

dbpedia:Nokia dcterms:subject category:Finnish_brands
category:Finnish_brands skos:broader category:Brands_by_country
Run Code Online (Sandbox Code Playgroud)

虽然它可能是有道理的说,诺基亚是一个 Finnish_brand,它使更意义上说,诺基亚是一个 Brand_by_country。