SPARQL正则表达式过滤器
发布时间:2020-12-14 06:00:59 所属栏目:百科 来源:网络整理
导读:我试图通过使用正则表达式过滤器匹配SPARQL中的一个单词,但没有成功……:/ 我将查询发送到位于“http://dbtune.org/musicbrainz/sparql”的端点. 那么,以下查询有效: PREFIX foaf: http://xmlns.com/foaf/0.1/PREFIX rdf: http://www.w3.org/1999/02/22-rd
我试图通过使用正则表达式过滤器匹配SPARQL中的一个单词,但没有成功……:/
我将查询发送到位于“http://dbtune.org/musicbrainz/sparql”的端点. 那么,以下查询有效: PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX mo: <http://purl.org/ontology/mo/> SELECT ?artist ?name WHERE { ?artist a mo:MusicArtist . ?artist foaf:name "Switchfoot" . ?artist foaf:name ?name . FILTER(regex(str(?name),"switchfoot","i")) } 但是,如果我删除第7行(.?artist foaf:name“Switchfoot”),则以下查询不匹配: PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX mo: <http://purl.org/ontology/mo/> SELECT ?artist ?name WHERE { ?artist a mo:MusicArtist . ?artist foaf:name ?name . FILTER(regex(str(?name),"i")) } 我不知道我是做错了什么,还是端点错误…… 有人能帮助我吗? 解决方法
在第二个查询中,没有要编制索引的图形模式.查询处理器满足该查询的唯一方法是检索三元组中每个艺术家的名称,然后对每个艺术家应用正则表达式匹配.毫无疑问,您正在达到某种资源限制,无论是CPU时间还是经过时间.
如果你想进行这样的自由文本搜索,我建议将数据集下载到本地端点,并使用诸如LARQ之类的自由文本索引.您的查询会更快,您的用户会感谢您的! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |