如何检索DBpedia资源的摘要?

时间:2014-06-04 13:14:11

标签: sparql dbpedia

我需要找到他们的摘要包含特定单词的所有DBpedia类别和文章。 我知道如何编写查询标签的SPARQL查询,如下所示:

SELECT ?uri ?txt  WHERE {
  ?uri rdfs:label ?txt .
  ?txt bif:contains "Machine" .
}

但我还没想出如何搜索摘要。 我尝试过以下但似乎不正确。

SELECT ?uri ?txt  WHERE {
  ?uri owl:abstract ?txt .
  ?txt bif:contains "Machine" .
}

如何检索摘要以查询其文本?

1 个答案:

答案 0 :(得分:5)

由于您已经知道如何在字符串中搜索文本内容,因此这个问题实际上就是如何获取摘要。如果您在网络浏览器中检索任何DBpedia资源,例如http://dbpedia.org/resource/Mount_Monadnock(将重定向到http://dbpedia.org/page/Mount_Monadnock),您可以看到它是主题或谓词的三元组。在这种情况下,您会看到该属性为dbpedia-owl:abstract。因此,你可以做像

这样的事情
select * where { 
  ?s dbpedia-owl:abstract ?abstract .
  ?abstract bif:contains "Monadnock" .
  filter langMatches(lang(?abstract),"en")
}
limit 10

SPARQL results

您可以简单地检索主题的所有三元组,并查看哪些与其摘要相关,而不是访问资源的页面,而不是端点将支持的页面。既然你知道抽象是一个文字,你甚至可以将它限制为三元组,其中对象是文字,也许是你想要的语言。例如,

select ?p ?o where { 
  dbpedia:Mount_Monadnock ?p ?o .
  filter ( isLiteral(?o) && langMatches(lang(?o),'en') )
}

SPARQL results

这也清楚地表明您想要的属性是http://dbpedia.org/ontology/abstract。如果您有一个可用于下拉任意数据的实时查询界面,则很容易找到所需数据的哪些部分。只需先将更多拉下来,然后再进行优化以获得您想要的效果。