如何通过SPARQL正则表达式从Turtle文件过滤指定三元组?
修正后的SPARQL查询方案
要精准提取符合要求的列表类资源rdfs:label三元组,你可以通过两个过滤条件组合实现:
- 过滤掉包含
terms路径的资源URI - 确保资源URI以数字结尾
以下是修正后的查询语句:
SELECT ?list ?label WHERE { ?list rdfs:label ?label . # 排除含"terms"路径的资源 FILTER (!CONTAINS(STR(?list), "terms")) # 只保留URI末尾为数字的资源 FILTER (REGEX(STR(?list), "[0-9]$")) }
关键过滤逻辑说明
!CONTAINS(STR(?list), "terms"):将资源URI转换为字符串后,筛选出不包含"terms"的条目,直接排除术语类资源。REGEX(STR(?list), "[0-9]$"):通过正则表达式匹配URI字符串的最后一位是否为0-9的数字,确保仅保留列表类资源。
如果之前的查询失效,大概率是过滤逻辑写反(比如用了CONTAINS而非!CONTAINS),或者正则未精准匹配URI末尾的数字。
内容的提问来源于stack exchange,提问作者rshar
相关产品推荐
相关产品推荐

