比较两个字符串与SPARQL(Comparing two strings with SPARQL)

2019-10-18 22:07发布

我使用的是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
标签: rdf sparql