2

我正在构建一个对 dbPedia 的 prefixSearch Api 进行查询的集成系统

http://lookup.dbpedia.org/api/search.asmx/PrefixSearch?QueryClass=&MaxHits=1&QueryString=KEYWORD

从这里我获得一个资源的 URI 并使用一个简单的 get 获取资源,然后我使用 nokogiri 解析它

data = Net::HTTP.get(URI.parse(url.to_s+'.rdf'))
doc = Nokogiri::XML(data)

从文档中我需要找到摘要,所以使用 xpath 我成功找到了它。

entity = doc.root.xpath("/rdf:RDF/rdf:Description[@rdf:about=\""+@uri+"\"]").map do |node|  
name = node.xpath("dbpedia-owl:abstract[@xml:lang=\"en\"]").first.content
end

问题在于,对于一​​些信息丰富的页面,例如涉及国家的页面,执行此操作将需要 15-16 秒。这在我的系统中是不可接受的。

所以我需要找到一种方法来更快地完成所有事情?有什么解决办法吗?例如使用 SPARQL 感谢大家

4

1 回答 1

3

如果您只需要有关 URI 的特定信息,那么您可能可以为这些信息编写一个 SPARQL 查询,这将使事情变得更快。

您需要详细说明您需要哪些信息,但我假设您正在根据您显示的代码查找有关 URI 的英文摘要:

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>

SELECT ?abstract
WHERE
{
  <http://dbpedia.org/resource/RESOURCE> dbpedia-owl:abstract ?abstract .
  FILTER(LANGMATCHES(LANG(?abstract), "en"))
}
于 2013-01-08T11:55:25.350 回答