问题描述
我很想知道是否有任何方法可以在 SPARQL 查询中使用 Levenstein 距离。假设我只想选择 Levenstein 距离
def distance(s,t):
m,n = len(s),len(t)
d = [range(n + 1)]
d += [[i] for i in range(1,m + 1)]
for i in range(0,m):
for j in range(0,n):
cost = 1
if s[i] == t[j]: cost = 0
d[i + 1].append(min(d[i][j + 1] + 1,# deletion
d[i + 1][j] + 1,# insertion
d[i][j] + cost) # substitution
)
return d[m][n]
def search_based_candidate(mention):
sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setQuery("""
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
SELECT disTINCT ?candidate where {
?candidate rdfs:label ?itemLabel
FILTER (LANG(?itemLabel)= 'en')
FILTER (str("""+distance+""""(str(itemLabel),"""+mention+""")) < 3)
}
""")
sparql.setReturnFormat(JSON)
try:
candidates = sparql.query().convert()
except:
candidates = "no result"
return candidates
那么我如何在 sparqlwrapper 中连接自定义函数?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)