我有一个问题:
我正在关注此帖子(To use iSPARQL to compare values using similarity measures)以使用SPARQL来比较使用相似性度量的值。
特别是,我使用了这段代码:
select ?city ?percent where {
?city a dbpedia-owl:City ;
rdfs:label ?label .
filter langMatches( lang(?label), 'en' )
bind( replace( concat( 'x', str(?label) ), "^x[^Londn]*([L]?)[^ondn]*([o]?)[^ndn]*([n]?)[^dn]*([d]?)[^n]*([n]?).*$", '$1$2$3$4$5' ) as ?match )
bind( xsd:float(strlen(?match))/strlen(str(?label)) as ?percent )
}
order by desc(?percent)
limit 100
我动态计算所有资源的字符串。
'x',str(?label)), “^ X [^ Londn] ([L])[^ ondn] ([O]?)[^ NDN] ([N])[^ DN] ([d])[^ N] ([N])。 $”, '$ 1 $ 2 $ 3 $ 4 $ 5'
使用优秀的PC,此查询的执行时间约为40秒。当我有一个大数据集时,这个程序是不可能使用的! 我的问题是:有没有办法优化此查询以大大减少执行时间?或者,如何在合理的时间(约1秒)内实现在DBpedia上识别这样的资源的目标?