获取DBPedia信息框类别

我目前正在寻找一种通过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
}
这实际上是我真正要求的。我现在要做的最后一件事是尝试按照它们出现的页数来排序(可能最常见的属性是最感兴趣的属性)。     
已邀请:
好的,所以我实际上已经或多或少地想出了如何做到这一点,所以我提交这个作为答案而不仅仅是编辑。什么似乎给我正是我正在寻找的是从使用此查询迭代类heirarchy开始:
SELECT ?class ?label WHERE {
     ?class rdfs:subClassOf owl:Thing.
     ?class rdfs:label ?label. 
     FILTER(lang(?label) = "en")
}
将所选结果送入查询而不是猫头鹰:每次都是。 一旦用户选择了他们想要的最低级别的类,要显示属性列表,按照它们出现的条目数的降序排列,我使用此查询:
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))
当然,如果你真的看看那些结果,那里有一些时髦的属性,没有非常具有描述性的标签(“s”?什么?),但这至少是我首先要寻找的东西。     
(1)查询所有现有类:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?class
WHERE {
  ?s rdf:type ?class .
}
(2)查询C类任何实例中使用的所有属性:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?property
WHERE {
  ?s rdf:type <C> .
  ?s ?property ?o
}
    
这将为您提供所有
rdfs:domain
SpaceMission
s的房产:
select ?property where {
    ?property rdfs:domain <http://dbpedia.org/ontology/SpaceMission>
}
这些属性都接受
SpaceMission
作为主题。 请注意,在RDF(S)中,不需要为每个属性都有明确的
rdfs:domain
语句,因为使用属性可以隐含
rdfs:domain
s。因此,您可能会发现此查询将为您提供已使用
SpaceMission
域定义的所有属性的列表,但不会为您提供实际用于所有
SpaceMission
实例的所有属性的列表。     
很可能某些属性实际上并未如此定义: ?p rdf:财产。 但根据定义,中间位置的任何术语都是属性。所以你可能会得到更多结果: SELECT?prop?title WHERE {      ?country a&lt; http://dbpedia.org/ontology/Country>。      ?country?prop []。      ?prop rdfs:label?title。 } ORDER BY DESC(COUNT(DISTINCT?country)) (稍微重新排序,在开始时有选择性可能会提高性能)     

要回复问题请先登录注册