我正在尝试使用DBpedia中的术语自动完成用户在输入中写入的内容,类似于此jsFiddle示例.尝试在jsFiddle的输入中写狗,你会在建议中看到'狗'一词.
我有以下代码,问题是我得到的10个术语列表不包含"狗"替代品.所以,如果我可以按照(字符串表示)?概念的长度来排序列表,那么我就可以得到那个术语.这可能吗?
SELECT DISTINCT ?concept
WHERE {
?concept a skos:Concept .
FILTER regex(str(?concept), "dog", "i")
}
ORDER BY ASC(?concept) LIMIT 10
Run Code Online (Sandbox Code Playgroud)
Jos*_*lor 10
所以,如果我可以按照概念的长度订购列表,那么就可以获得该术语.但我找不到合适的陈述.可能吗?
听起来你正在寻找strlen.
order by strlen(str(?concept))
Run Code Online (Sandbox Code Playgroud)
例如,
select distinct ?concept where {
?concept a skos:Concept .
filter regex(str(?concept), "dog", "i")
}
order by strlen(str(?concept))
limit 10
Run Code Online (Sandbox Code Playgroud)
这就是说,如果你只是检查字符串的成员,你不需要正则表达式的所有功能,而且它可能是更有效地使用含有和LCASE检查是否小写?概念包含"狗"与过滤器像:
filter contains(lcase(str(?concept)), "dog")
Run Code Online (Sandbox Code Playgroud)
SPARQL规范中的目录包含大量可以浏览的函数.特别是,您需要查看17.4函数定义的小节.
| 归档时间: |
|
| 查看次数: |
1625 次 |
| 最近记录: |