簡體   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