【发布时间】:2013-11-15 09:23:11
【问题描述】:
我正在使用带有 SPARQL 的正则表达式函数。 是否有一个函数可以找到一个与另一个字符串有最小距离的字符串? 我的意思是,我需要一个函数,它给我的词与另一个词最相似。 实际上我传递了两个变量(这些变量取值来自两个不同的数据集)并仅考虑这些不区分大小写的情况进行比较。所以我需要一个可以比较两个变量的函数。有谁知道吗?
【问题讨论】:
-
你能澄清一下你的用例吗?我不太清楚你想做什么。 “找到与另一个字符串具有最小距离的字符串的函数”听起来像一个函数,它接受一个 single 参数并从固定集合中返回一些单词。但是“我传递了两个变量(......来自两个不同的数据集)并进行比较,只是考虑到这些不区分大小写。......我需要一个可以比较两个变量的函数。”听起来你想要
sim(?w1,?w2)之类的东西返回一个数字,这样你就可以这样做,例如order by sim(?w1,?w2)。 -
请将 cmets 作为 cmets 发布,而不是作为答案发布。您写道:“我并没有说我在 OWLIM 存储库中使用 SPARQL。我想要一个接收 2 个变量的函数,它会说明它们是否足够接近。当我说接近时,我的意思是一个词需要最少数量的更改为第二个,因此 2 个单词必须尽可能相似。就像您使用正则表达式时一样(例如 regex(?x, ?y, "i")),但比较不同。”
-
您的意思是“最少的更改”是什么意思?像
sim("root","book")这样的东西只需要更改两个字母。但是你不能说“两个”是最不重要的,除非你有别的东西可以比较。我是否正确理解您希望能够执行select ?x ?y where { ... } order by sim(?x,?y) limit 1之类的操作,以便获得编辑距离在所有?x和?ys 中最小的?x和?y?