我使用的是SPARQL正则表达式的功能。 有哪些发现有来自另一个最小距离字符串的函数? 我的意思是,我需要一个函数,它给了我最相似的字用另一个比较。 其实我通过两个变量(这些变量的取值形成两种不同的数据集),并比较仅考虑这些不区分大小写。 所以我需要一个可以比较两个变量的函数。 是否anybosy知道什么?
Answer 1:
有标准SPARQL没有这种功能。 然而,SPARQL是可扩展的,所以你可以添加自己的功能,如果你想(当然,在失去您的查询的便携性的价格)。 例如,看到这个关于如何做到这一点芝麻的SPARQL引擎教程 。
我还想像有些triplestores带有扩展支持全文搜索(如OWLIM,或炫技)可能有这种事情一些内置的支持,但我不知道这是肯定的。
编辑
假设你想要的东西,像Levenshtein距离,你可以有一个功能, ex:ldistance(?string1, ?string2)
给定两个字符串输出的距离。 因此, ex:ldistance("room", "root")
将返回1, ex:ldistance("room", "door")
将返回2,依此类推。 然后,您可以使用它来查询了一定距离,例如,若要取得2比“房间”更紧密的所有字符串:
SELECT ?x ?string1
WHERE {
?x rdfsl:abel ?string1
FILTER(ex:ldistance("room", ?string1) < 2)
}
或通过返回的距离下令所有匹配的字符串:
SELECT ?x ?string1 ?ldistance
WHERE {
?x rdfsl:abel ?string1
BIND ( ex:ldistance("room", ?string1) as ?ldistance)
}
ORDER BY ?ldistance
但是,正如所说,功能ex:ldistance
实际上并不存在于SPARQL,所以你需要自己创建它,作为一个扩展。
文章来源: Comparing two strings with SPARQL