【问题标题】:Order SPARQL query results by length of a string?按字符串长度排序 SPARQL 查询结果?
【发布时间】:2016-02-12 17:40:04
【问题描述】:

我正在尝试使用 DBpedia 中的术语自动完成用户在输入中写入的内容,类似于this jsFiddle example。尝试在该 jsFiddle 的输入中写 dog,您将在建议中看到“Dog”一词。

我有以下代码,问题是我得到的 10 项列表不包含“狗”替代项。因此,如果我可以按 ?concept 的(字符串表示形式)的长度对列表进行排序,那么我可以得到该术语。这可能吗?

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

【问题讨论】:

    标签: sparql dbpedia


    【解决方案1】:

    因此,如果我可以按 ? 概念的长度对列表进行排序,则可以得到该术语。但我找不到正确的说法来做到这一点。有可能吗?

    听起来您正在寻找 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 results

    也就是说,如果您只是检查字符串成员资格,则不需要正则表达式的所有功能,可能使用 contains 更有效strong> 和 lcase 来检查小写的 ?concept 是否包含带有 filter"dog",例如:

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

    SPARQL 规范中的目录有一个很大的函数列表,您可以浏览这些函数。特别是,您需要查看17.4 Function Definitions 的小节。

    【讨论】:

      猜你喜欢
      • 2014-01-26
      • 2011-04-06
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      相关资源
      最近更新 更多