【问题标题】:Querying DBPedia for entities having a given set of properties查询具有给定属性集的实体的 DBPedia
【发布时间】:2014-02-12 13:19:06
【问题描述】:

我有一个列表,其中包含 5 到 100 个属性,并且想要查询具有这些属性(对值不感兴趣)的任何实体,范围为大多数匹配项。如何使用 SPARQL 查询来实现这一点?例如,假设我有以下属性:

dbpedia-owl:country
dbpedia-owl:elevation
dbpedia-owl:leader
dbpprop:area
dbpprop:flag
dbpprop:name
…

查询应返回具有所有这些属性的值的所有资源,以及仅匹配某些属性的资源。结果将包括许多城市和国家,但还应包括,例如,具有领导者和名称的组织,但没有旗帜、地区或海拔。

【问题讨论】:

标签: java rdf sparql semantic-web dbpedia


【解决方案1】:

这是一个昂贵的查询,但它非常简单。你需要这样的东西:

select ?subject (count(?property) as ?numProperties) where {
  values ?property {
    dbpedia-owl:country dbpedia-owl:elevation
    dbpedia-owl:leader dbpprop:area dbpprop:flag
    dbpprop:name
  }
  ?subject ?property ?object 
}
group by ?subject 
order by desc(?numProperties)
limit 10

SPARQL results

这表示要找到具有您枚举的任何属性的三元组,并且对于每个 ?subject,计算有值的属性的数量并将其命名为 ?numProperties,并显示按 @ 排序的结果987654328@(属性数量最多的优先)。

这些数字看起来相当高,但这是因为这些列表页面有很多 为某些属性定义的值。例如,List of Advanced Dungeons & Dragons 2nd edition monsters 确实有一大堆 dbpprop:name 值:

select (count(distinct ?name) as ?numNames) where { 
  <http://dbpedia.org/resource/List_of_Advanced_Dungeons_&_Dragons_2nd_edition_monsters> 
    dbpprop:name ?name
}

1971

SPARQL results

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    相关资源
    最近更新 更多