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 に答える