From 7a23f08a8aae4426a071ef46f909d51ac7b1436c Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Wed, 17 Apr 2024 17:00:02 +0200 Subject: [PATCH] add again regex filter --- lib/goo/sparql/query_builder.rb | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/goo/sparql/query_builder.rb b/lib/goo/sparql/query_builder.rb index 7ef72193e..9d8e59e2b 100644 --- a/lib/goo/sparql/query_builder.rb +++ b/lib/goo/sparql/query_builder.rb @@ -311,13 +311,18 @@ def query_filter_sparql(klass, filter, filter_patterns, filter_graphs, filter_var = inspected_patterns[filter_pattern_match] if !filter_operation.value.instance_of?(Goo::Filter) - if filter_operation.operator == :unbound || filter_operation.operator == :bound - if filter_operation.operator == :unbound - filter_operations << "!BOUND(?#{filter_var.to_s})" - else - filter_operations << "BOUND(?#{filter_var.to_s})" - end + case filter_operation.operator + when :unbound + filter_operations << "!BOUND(?#{filter_var.to_s})" + return :optional + + when :bound + filter_operations << "BOUND(?#{filter_var.to_s})" return :optional + when :regex + if filter_operation.value.is_a?(String) + filter_operations << "REGEX(STR(?#{filter_var.to_s}) , \"#{filter_operation.value.to_s}\", \"i\")" + end else value = RDF::Literal.new(filter_operation.value) if filter_operation.value.is_a? String