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 +3 -0
- data/lib/active_rdf/queryengine/query.rb +31 -1
- data/lib/active_rdf/queryengine/query2sparql.rb +6 -1
- metadata +15 -15
data/CHANGELOG
CHANGED
@@ -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
|
+
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.
|
7
|
-
date: 2007-
|
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: []
|