【问题标题】:Dbpedia query takes too much time (Ruby)Dbpedia 查询需要太多时间(Ruby)
【发布时间】:2013-01-08 19:55:25
【问题描述】:

我正在构建一个对 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 谢谢大家

【问题讨论】:

    标签: ruby-on-rails ruby sparql dbpedia


    【解决方案1】:

    如果您只需要有关 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"))
    }
    

    【讨论】:

    • 它很有用,我以前没用过,因为害怕新的查询语言,但感谢你的回答,我明白它是如何工作的。现在我的页面的加载时间是 0.2 秒
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 2017-07-06
    • 1970-01-01
    相关资源
    最近更新 更多