我目前正在寻找一种通过 SPARQL 端点查询DBPedia 的 Infobox Onyology 数据库的方法,以获取类列表、所选类的子类以及给定类的属性。据我所知,您要么需要知道您正在寻找的属性,要么搜索特定的东西——我发现的所有示例似乎都基于您想要搜索特定的东西的想法(例如高于一定海拔的城市人口等),而我想构建一些可以有效“浏览”类别的东西。例如,从这个类层次图上“owl:Thing”的子类列表开始并向用户呈现所选子类的子类列表。似乎可以通过映射 wiki 浏览类似的内容,但最好直接查询 SPARQL 端点。
是否有一些简单的 SPARQL 查询可以返回这些类的可用类和属性?
更新: 我想出了一种方法来获取它看起来的类层次结构,通过迭代这个查询:
SELECT ?subject WHERE {
?subject rdfs:subClassOf owl:Thing
}
它返回 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
}
这实际上是我真正要求的。我现在要做的最后一件事是尝试按它们出现的页数对它们进行排序(大概最常见的属性将是最感兴趣的属性)。