我需要找到他们的摘要包含特定单词的所有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" .
}
如何检索摘要以查询其文本?
答案 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
您可以简单地检索主题的所有三元组,并查看哪些与其摘要相关,而不是访问资源的页面,而不是端点将支持的页面。既然你知道抽象是一个文字,你甚至可以将它限制为三元组,其中对象是文字,也许是你想要的语言。例如,
select ?p ?o where {
dbpedia:Mount_Monadnock ?p ?o .
filter ( isLiteral(?o) && langMatches(lang(?o),'en') )
}
这也清楚地表明您想要的属性是http://dbpedia.org/ontology/abstract。如果您有一个可用于下拉任意数据的实时查询界面,则很容易找到所需数据的哪些部分。只需先将更多拉下来,然后再进行优化以获得您想要的效果。