簡體   English   中英

SPARQL字符串RANGE

[英]SPARQL string RANGE

我試圖通過使用索引號提取字符串的一部分。 當有

"OEIUFHWOIEFWNFOPQWJFHQWOIHFEB..."

我需要從5:10 (FHWOIE)字符串我發現它不可能通過REGEX,因為它只返回布爾而不是組。 但是,我沒有設法通過位置找到字符串上的區域選擇。 現在我想知道是否有?

我發現部分可能通過......

BIND(REPLACE(?sequence, '^.{100}', "") AS ?sequencestrip1)

但不是

BIND(REPLACE(?sequence, '^.{?start}', "") AS ?sequencestrip1)

我認為這適用於任何有興趣的人:

BIND(REPLACE(?sequence, "^.{"+str(?start)+"}", "") AS ?sequencestrip1)

當然要刪除你感興趣的區域

BIND(REPLACE(?region, ".{"+str(strlen(?region)-10)+"}$", "") AS ?upstream)

RDF的第一個SPARQL查詢語言中 ,這將是相當困難的,因為沒有很多字符串操作函數。 但是,在您的問題中,您使用了SPARQL 1.1查詢語言中出現的replace 這對你有好處,因為除了replace ,SPARQL 1.1還包含更多的字符串操作函數。 其中之一, substr ,完全符合您的需求。 例如,這是一個查詢,其中?string綁定到您提到的字符串, substr用於提取您正在尋找的子字符串並將其綁定為?substring

select * where { 
  values ?string { "OEIUFHWOIEFWNFOPQWJFHQWOIHFEB..." }
  bind( substr( ?string, 5, 6 ) as ?substring )
}

結果是:

--------------------------------------------------
| string                             | substring |
==================================================
| "OEIUFHWOIEFWNFOPQWJFHQWOIHFEB..." | "FHWOIE"  |
--------------------------------------------------

請注意, substr的第二個參數是起始位置(第一個索引為1),第三個參數是子字符串的長度 ,而不是最終位置。 你想要一個子字符串FHWOIE ,它有六個字符,第三個參數是6。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM