activerdf 1.6.1 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ == activerdf (1.6.2) Fri, 03 Aug 2007 14:07:54 +0100
2
+ * initial support for FILTERs in SPARQL
3
+
1
4
  == activerdf (1.6.1) Thu, 19 Apr 2007 22:57:01 +0100
2
5
  * fix bug 107280: add support for full query options (including context) in dynamic finders
3
6
 
@@ -6,7 +6,8 @@ require 'federation/federation_manager'
6
6
  # data source. In all clauses symbols represent variables:
7
7
  # Query.new.select(:s).where(:s,:p,:o).
8
8
  class Query
9
- attr_reader :select_clauses, :where_clauses, :sort_clauses, :keywords, :limits, :offsets, :reverse_sort_clauses
9
+ attr_reader :select_clauses, :where_clauses, :sort_clauses, :keywords, :limits, :offsets, :reverse_sort_clauses, :filter_clauses
10
+
10
11
  bool_accessor :distinct, :ask, :select, :count, :keyword, :reasoning
11
12
 
12
13
  def initialize
@@ -16,6 +17,7 @@ class Query
16
17
  @select_clauses = []
17
18
  @where_clauses = []
18
19
  @sort_clauses = []
20
+ @filter_clauses = []
19
21
  @keywords = {}
20
22
  @reasoning = true
21
23
  @reverse_sort_clauses = []
@@ -67,6 +69,34 @@ class Query
67
69
  self
68
70
  end
69
71
 
72
+ # adds one or more generic filters
73
+ # NOTE: you have to use SPARQL syntax for variables, eg. regex(?s, 'abc')
74
+ def filter *s
75
+ # add filter clauses
76
+ @filter_clauses << s
77
+ @filter_clauses.uniq!
78
+
79
+ self
80
+ end
81
+
82
+ # adds regular expression filter on one variable
83
+ # variable is Ruby symbol that appears in select/where clause, regex is Ruby
84
+ # regular expression
85
+ def filter_regexp(variable, regexp)
86
+ raise(ActiveRdfError, "variable must be a symbol") unless variable.is_a? Symbol
87
+ raise(ActiveRdfError, "regexp must be a ruby regexp") unless regexp.is_a? Regexp
88
+
89
+ filter "regex(?#{variable}, #{regexp.inspect.gsub('/','"')})"
90
+ end
91
+ alias :filter_regex :filter_regexp
92
+
93
+ def filter_operator(variable, operator, operand)
94
+ raise(ActiveRdfError, "variable must be a Symbol") unless variable.is_a? Symbol
95
+
96
+ filter "(?#{variable} #{operator} #{operand}"
97
+ end
98
+
99
+
70
100
  # adds reverse sorting predicates
71
101
  def reverse_sort *s
72
102
  # add sort clauses without duplicates
@@ -10,7 +10,7 @@ class Query2SPARQL
10
10
  select_clauses = query.select_clauses.collect{|s| construct_clause(s)}
11
11
 
12
12
  str << "SELECT #{distinct}#{select_clauses.join(' ')} "
13
- str << "WHERE { #{where_clauses(query)} }"
13
+ str << "WHERE { #{where_clauses(query)} #{filter_clauses(query)}}"
14
14
  elsif query.ask?
15
15
  str << "ASK { #{where_clauses(query)} }"
16
16
  end
@@ -18,6 +18,11 @@ class Query2SPARQL
18
18
  return str
19
19
  end
20
20
 
21
+ # concatenate filters in query
22
+ def self.filter_clauses(query)
23
+ "FILTER #{query.filter_clauses.join(" ")}" unless query.filter_clauses.empty?
24
+ end
25
+
21
26
  # concatenate each where clause using space (e.g. 's p o')
22
27
  # and concatenate the clauses using dot, e.g. 's p o . s2 p2 o2 .'
23
28
  def self.where_clauses(query)
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.2
2
+ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: activerdf
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.6.1
7
- date: 2007-04-19 00:00:00 +01:00
6
+ version: 1.6.2
7
+ date: 2007-08-03 00:00:00 +01:00
8
8
  summary: Offers object-oriented access to RDF (with adapters to several datastores).
9
9
  require_paths:
10
10
  - lib
@@ -33,43 +33,43 @@ files:
33
33
  - README
34
34
  - CHANGELOG
35
35
  - test/federation
36
- - test/objectmanager
37
- - test/queryengine
38
- - test/common.rb
39
- - test/test_adapters.rb
40
- - test/test_person_data.nt
41
- - test/small-one.nt
42
- - test/small-two.nt
43
36
  - test/federation/test_federation_manager.rb
44
37
  - test/federation/test_connection_pool.rb
38
+ - test/objectmanager
45
39
  - test/objectmanager/test_resource_reading.rb
46
40
  - test/objectmanager/test_literal.rb
47
41
  - test/objectmanager/test_namespace.rb
48
42
  - test/objectmanager/test_object_manager.rb
49
43
  - test/objectmanager/test_resource_writing.rb
44
+ - test/queryengine
50
45
  - test/queryengine/test_ntriples_parser.rb
51
46
  - test/queryengine/test_query.rb
52
47
  - test/queryengine/test_query2jars2.rb
53
48
  - test/queryengine/test_query2sparql.rb
54
49
  - test/queryengine/test_query_engine.rb
50
+ - test/common.rb
51
+ - test/test_adapters.rb
52
+ - test/test_person_data.nt
53
+ - test/small-one.nt
54
+ - test/small-two.nt
55
55
  - lib/active_rdf
56
- - lib/active_rdf.rb
57
- - lib/active_rdf_log.rb
58
- - lib/active_rdf_helpers.rb
59
56
  - lib/active_rdf/federation
60
- - lib/active_rdf/objectmanager
61
- - lib/active_rdf/queryengine
62
57
  - lib/active_rdf/federation/connection_pool.rb
63
58
  - lib/active_rdf/federation/federation_manager.rb
64
59
  - lib/active_rdf/federation/active_rdf_adapter.rb
60
+ - lib/active_rdf/objectmanager
65
61
  - lib/active_rdf/objectmanager/resource.rb
66
62
  - lib/active_rdf/objectmanager/namespace.rb
67
63
  - lib/active_rdf/objectmanager/literal.rb
68
64
  - lib/active_rdf/objectmanager/object_manager.rb
65
+ - lib/active_rdf/queryengine
69
66
  - lib/active_rdf/queryengine/query.rb
70
67
  - lib/active_rdf/queryengine/query2sparql.rb
71
68
  - lib/active_rdf/queryengine/ntriples_parser.rb
72
69
  - lib/active_rdf/queryengine/query2jars2.rb
70
+ - lib/active_rdf.rb
71
+ - lib/active_rdf_log.rb
72
+ - lib/active_rdf_helpers.rb
73
73
  test_files: []
74
74
 
75
75
  rdoc_options: []