如何构建不区分大小写的SPARQL过滤器?

如何构建不区分大小写的SPARQL过滤器?,sparql,Sparql,我试图通过标签字段构建一些SPARQL搜索查询,而不需要区分大小写 我从这个查询开始,它可以很好地工作: SELECT distinct ?concepto, ?objeto, ?label WHERE {?concepto rdfs:comment ?objeto. ?concepto rdfs:label ?label. FILTER (lang(?label) = 'es' && ?label='Francisco de Quevedo'@es && (la

我试图通过标签字段构建一些SPARQL搜索查询,而不需要区分大小写

我从这个查询开始,它可以很好地工作:

SELECT distinct ?concepto, ?objeto, ?label WHERE {?concepto rdfs:comment ?objeto. ?concepto rdfs:label ?label. FILTER (lang(?label) = 'es' && ?label='Francisco de Quevedo'@es && (lang(?objeto) = 'es' || lang(?objeto) = 'en'))} LIMIT 100
但是,如果我尝试添加过滤器约束以使查询不区分大小写,它将不起作用:

SELECT distinct ?concepto, ?objeto, ?label WHERE {?concepto rdfs:comment ?objeto. ?concepto rdfs:label ?label. FILTER (lang(?label) = 'es' && lcase(str(?label))='francisco de quevedo'@es && (lang(?objeto) = 'es' || lang(?objeto) = 'en'))} LIMIT 100
通过标签进行查询搜索的不同选项搜索一般概念(即:银河、山脉、弗朗西斯科·德奎维多)。我只需要标识一个包含此主题的对象,之前我不知道标签是用小写还是大写注册的

下一个代码不起作用(这是一个繁重的查询,并获取包含单词Galaxy的所有对象:

SELECT distinct ?concepto ?objeto ?label WHERE {?concepto rdfs:comment ?objeto. ?concepto rdfs:label ?label FILTER (lang(?label) = 'es' && (lang(?objeto) = 'es' || lang(?objeto) = 'en') && regex(?label, "Galaxia","i"))} LIMIT 100
这段代码运行良好,我获得了正确的对象,但我需要确切地知道它是如何写入的(大写或小写):

最后一个虽然性能还可以,但是得到了很多结果,我只需要通过西班牙语标签获得目标星系搜索:

SELECT distinct ?concepto ?objeto ?label WHERE {?concepto rdfs:comment ?objeto. ?concepto rdfs:label ?label. ?label bif:contains '"Galaxia"' FILTER (lang(?label) = 'es' && (lang(?objeto) = 'es' || lang(?objeto) = 'en'))} LIMIT 100

应用
STR(?label)
将删除语言标记,因此从比较对象的字符串中删除
@es

应用
STR(?label)
将删除语言标记,因此从比较对象的字符串中删除
@es

lcase(STR(?label))
删除语言标记并生成一个纯字符串,因此它无法与文本
'francisco de quevedo'@es
匹配。此外,不要忘记web界面中的超时,即它将返回在给定超时之前找到的任何内容。请使用Virtuoso的全文索引,您的查询将必须扫描所有标签和进行字符串比较-这太慢了:
选择不同的?concepto?objeto?label,其中{concepto rdfs:comment?objeto。?concepto rdfs:label?label?label。?label bif:包含“francisco de quevedo”过滤器(lang(?label)=“es”&(lang(?objeto)=“es”| lang objeto)=“en”)}限制100
lcase(str label))
删除语言标记并生成一个纯字符串,因此它无法与文本
'francisco de quevedo'@es
匹配。此外,不要忘记web界面中的超时,即它将返回在给定超时之前找到的任何内容。请使用Virtuoso的全文索引,您的查询将必须扫描所有标签和进行字符串比较-这太慢了:
选择不同的?concepto?objeto?label,其中{concepto rdfs:comment?objeto。?concepto rdfs:label?label?label。?label bif:包含“francisco de quevedo”过滤器(lang(?label)=“es”&(lang(?objeto)=“es”| lang objeto)=“en”)}限制100
SELECT distinct ?concepto ?objeto ?label WHERE {?concepto rdfs:comment ?objeto. ?concepto rdfs:label ?label. ?label bif:contains '"Galaxia"' FILTER (lang(?label) = 'es' && (lang(?objeto) = 'es' || lang(?objeto) = 'en'))} LIMIT 100