获取DBPedia信息框类别

Pau*_*aul 7 rdf sparql dbpedia

我目前正在寻找一种通过SPARQL端点查询DBPedia的Infobox Onyology数据库的方法,以获取类的列表,所选类的子类以及给定类的属性.据我所知,您要么需要知道您正在寻找的属性,要么搜索特定的内容 - 我发现的所有示例似乎都基于您想要搜索特定内容的想法(比如某个高度以上的城市人口等),而我想建立一些可以有效"浏览"类别的东西.例如,从此类层次结构图上的"owl:Thing"的子类列表开始,向用户显示所选子类的子类列表.似乎可以通过映射wiki浏览这样的东西,但最好直接查询SPARQL端点.

是否有一些简单的SPARQL查询会返回这些类的可用类和属性?

更新: 通过迭代查询,我想出了一种方法来获得类层次结构:

SELECT ?subject WHERE {
     ?subject rdfs:subClassOf owl:Thing
}
Run Code Online (Sandbox Code Playgroud)

这返回了owl的子类列表:Thing,如果我用其中一个子类替换owl:Thing,我得到它的子类列表,直到没有子类,此时我可以选择所有的资源由所选子类给出的类型.不过,我仍然不太确定如何获得子类共有的所有属性.

更新2 现在就越来越近了.此查询为我提供了所有属性(dbpedia:property的子项),它们也是一个国家/地区,以及它们的标题:

SELECT DISTINCT ?prop ?title WHERE {
     ?country ?prop ?value.
     ?country a <http://dbpedia.org/ontology/Country>.
     ?prop rdf:type rdf:Property.
     ?prop rdfs:label ?title
}
Run Code Online (Sandbox Code Playgroud)

这实际上是我真正要求的.我现在要做的最后一件事是尝试按照它们出现的页数来排序(可能最常见的属性是最感兴趣的属性).

Pau*_*aul 7

好的,所以我实际上已经或多或少地想出了如何做到这一点,所以我提交这个作为答案而不仅仅是编辑.什么似乎给我正是我正在寻找的是从使用此查询迭代类heirarchy开始:

SELECT ?class ?label WHERE {
     ?class rdfs:subClassOf owl:Thing.
     ?class rdfs:label ?label. 
     FILTER(lang(?label) = "en")
}
Run Code Online (Sandbox Code Playgroud)

将所选结果送入查询而不是猫头鹰:每次都是.

一旦用户选择了他们想要的最低级别的类,要显示属性列表,按照它们出现的条目数的降序排列,我使用此查询:

SELECT ?prop ?title WHERE {
     ?country ?prop [].
     ?country a <http://dbpedia.org/ontology/Country>.
     ?prop rdf:type rdf:Property.
     ?prop rdfs:label ?title
} ORDER BY DESC(COUNT(DISTINCT ?country))
Run Code Online (Sandbox Code Playgroud)

当然,如果你真的看看那些结果,那里有一些时髦的属性,没有非常具有描述性的标签("s"?什么?),但这至少是我首先要寻找的东西.