首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在MarkLogic中处理不区分大小写的SPARQL数据

如何在MarkLogic中处理不区分大小写的SPARQL数据
EN

Stack Overflow用户
提问于 2014-12-02 17:30:59
回答 1查看 7.7K关注 0票数 11

我试图了解如何最好地处理Marklogic数据中的文字,这些数据在任何情况下都可能是。我希望能够进行不区分大小写的搜索,但我相信语义查询是不可能的。对于一个简单的例子,我想要:

代码语言:javascript
运行
复制
SELECT *
WHERE { ?s ?p "Red"}

代码语言:javascript
运行
复制
SELECT *
WHERE { ?s ?p "red"}

返回所有值,无论对象是“红色”、“红色”、“红色”还是"Red“。

我的数据来自另一个有可变大写规则的来源。目前,我唯一能想到的就是添加一个额外的三元组,它总是以小写的形式包含文本,所以我总是可以搜索这个值。或者,在MarkLogic中使用不区分大小写的排序规则创建一些新的范围查询(如果在三重数据上可能的话),是否有意义?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-02 18:25:24

你可以用一个忽略大小写的过滤器。

代码语言:javascript
运行
复制
select * where {
  ?s ?p ?o
  FILTER (lcase(str(?o)) = "red")
}

基于对另一个问题的回答

编辑:我向MarkLogic的PM Steve Buxton询问语义特性,他建议如下:

代码语言:javascript
运行
复制
let $store := sem:store( (), cts:element-value-query(xs:QName("sem:object"), "red", "case-insensitive") )
return
  sem:sparql('
    SELECT ?o
    WHERE {
      ?s ?p ?o
      FILTER (lcase(str(?o)) = "red")
    }', (), (), $store
 )

商店是一个MarkLogic 8(现在可以通过早期存取获得)函数,它可以选择一组三元组。然后,SPARQL查询在精简集上运行,限制了需要过滤的三元组数。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27255449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档