如何检索DBpedia资源的摘要?

use*_*973 1 sparql dbpedia

我需要找到他们的摘要包含特定单词的所有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)

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

Jos*_*lor 5

既然您已经知道如何在字符串中搜索文本内容,那么这个问题就是如何获取摘要.如果您在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)

SPARQL结果

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

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

SPARQL结果

这也清楚地表明你想要的属性是http://dbpedia.org/ontology/abstract.如果您有一个可用于提取任意数据的实时查询界面,则可以非常轻松地找到所需数据的哪些部分.只需先拉下比你想要的更多,然后改进以获得你想要的东西.

  • 你需要最后的`/`(我在评论中错过了它):`prefix dbpedia-owl: <http://dbpedia.org/ontology/>`。之后,属性是`http://dbpedia.org/ontology/abstract`,而不是`http://dbpedia.org/ontologyabstract`。Web 界面上列出的所有前缀。转到 http://dbpedia.org/sparql 并查看顶部的 [命名空间前缀](http://dbpedia.org/sparql?nsdecl) 链接。这些是您使用 Web 界面时自动使用的所有前缀。但是,从程序化查询中,您需要包括您使用的任何查询。 (2认同)