使用SPARQL比较两个字符串 [英] Comparing two strings with SPARQL

查看:22
本文介绍了使用SPARQL比较两个字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在SPARQL中使用regex函数。 有没有一个函数可以找到距离另一个字符串最小的字符串? 我的意思是,我需要一个函数,它能给出与另一个单词最相似的单词。 实际上,我传递了两个变量(这些变量从两个不同的数据集获取值),并仅考虑到这些不区分大小写的情况进行比较。所以我需要一个可以比较两个变量的函数。有人知道什么吗?

推荐答案

标准SPARQL中没有这样的功能。但是,SPARQL是可扩展的,因此您可以根据需要添加自己的函数(当然,代价是失去查询的可移植性)。例如,请参见tutorial on how to do this in Sesame's SPARQL engine

我还设想一些扩展了全文搜索支持的三元组(如OWLIM或Virtuoso)可能内置了对这类内容的支持,但我不确定这一点。

编辑

假设您想要Levenshtein距离之类的内容,您可以有一个函数ex:ldistance(?string1, ?string2),该函数给定两个字符串输出距离。因此ex:ldistance("room", "root")将返回1,ex:ldistance("room", "door")将返回2,依此类推。然后,您可以使用它来查询给定的距离,例如,获取所有比2更接近"room"的字符串:

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中,因此您需要自己创建它作为扩展。

这篇关于使用SPARQL比较两个字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆