我需要找到他们的摘要包含特定单词的所有DBpedia类别和文章.我知道如何编写查询标签的SPARQL查询,如下所示:
SELECT ?uri ?txt WHERE {
?uri rdfs:label ?txt .
?txt bif:contains "Machine" .
}
Run Code Online (Sandbox Code Playgroud)
但我还没想出如何搜索摘要.我尝试了以下但似乎不正确.
SELECT ?uri ?txt WHERE {
?uri owl:abstract ?txt .
?txt bif:contains "Machine" .
}
Run Code Online (Sandbox Code Playgroud)
如何检索摘要以查询其文本?
既然您已经知道如何在字符串中搜索文本内容,那么这个问题就是如何获取摘要.如果您在Web浏览器中检索任何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
Run Code Online (Sandbox Code Playgroud)
您可以简单地检索主题的所有三元组,并查看哪些与其摘要相关,而不是访问非端点将支持的资源的页面.既然你知道抽象是一个文字,你甚至可以将它限制为三元组,其中对象是文字,也许是你想要的语言.例如,
select ?p ?o where {
dbpedia:Mount_Monadnock ?p ?o .
filter ( isLiteral(?o) && langMatches(lang(?o),'en') )
}
Run Code Online (Sandbox Code Playgroud)
这也清楚地表明你想要的属性是http://dbpedia.org/ontology/abstract.如果您有一个可用于提取任意数据的实时查询界面,则可以非常轻松地找到所需数据的哪些部分.只需先拉下比你想要的更多,然后改进以获得你想要的东西.