python - 在 python 中的 SPARQLwrapper 中使用 Levenstein 距离
问题描述
我很想知道是否有任何方法可以在 SPARQL 查询中使用 Levenstein 距离。假设我只想选择 Levenstein 距离 < 3 的对象。我使用下面的代码,但它返回错误: sparql.setQuery(""" TypeError: can only concatenate str (not "function") to str
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 中连接一个 custon 函数呢?
解决方案
推荐阅读
- angular - 将 OneSignal 与 Angular 集成不要注册
- javascript - 同时计算多个集合中的文档
- css - 具有行和列全高的引导容器
- powershell - 如何从PowerShell中的GET-TIMEZONE函数响应中读取时区ID
- firebase - 我应该使用 Cloud Functions 制作 RESTful API 还是在应用程序中调用 Firebase 和 Firestore?
- python - Python中使用OLS的线性多元回归不起作用
- java - 构建 Geonetwork 时 Maven 构建失败
- java - Netbeans 12.0 Java 提示和亮点不起作用
- linux - 更改 struct spi_device 后“不同意符号的版本”
- c++ - 预期不是标准库的一部分