繁体   English   中英

按字符串长度排序SPARQL查询结果?

[英]Order SPARQL query results by length of a string?

我正在尝试使用DBpedia中的术语自动完成用户在输入中写入的内容,类似于此jsFiddle示例 尝试在jsFiddle的输入中写 ,你会在建议中看到'狗'一词。

我有以下代码,问题是我得到的10个术语列表不包含“狗”替代品。 所以,如果我可以按照(字符串表示) ?概念的长度来排序列表,那么我就可以得到那个术语。 这可能吗?

SELECT DISTINCT ?concept
WHERE {
  ?concept a skos:Concept . 
  FILTER regex(str(?concept), "dog", "i")
}
ORDER BY ASC(?concept) LIMIT 10

所以,如果我可以按照概念的长度订购列表,那么就可以获得该术语。 但我找不到合适的陈述。 可能吗?

听起来你正在寻找strlen

order by strlen(str(?concept))

例如,

select distinct ?concept where {
  ?concept a skos:Concept . 
  filter regex(str(?concept), "dog", "i")
}
order by strlen(str(?concept))
limit 10

SPARQL结果

也就是说,如果您只是检查字符串成员资格,那么您不需要正则表达式的所有功能,并且使用containslcase来检查小写的概念是否包含带有类似过滤器的 “dog” 可能更有效:

filter contains(lcase(str(?concept)), "dog")

SPARQL规范中的目录包含大量可以浏览的函数。 特别是,您需要查看17.4函数定义的小节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM