我正在构建一个集成系统,该系统对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)
从doc我需要找到摘要,所以使用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 感谢所有
答案 0 :(得分: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"))
}