activerdf 1.6.10 → 1.6.11
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 +4 -0
- data/lib/active_rdf/federation/active_rdf_adapter.rb +5 -1
- data/lib/active_rdf/federation/connection_pool.rb +2 -2
- data/lib/active_rdf/objectmanager/namespace.rb +1 -1
- data/lib/active_rdf/objectmanager/resource.rb +11 -7
- data/test/federation/test_federation_manager.rb +1 -1
- data/test/objectmanager/test_object_manager.rb +7 -6
- data/test/objectmanager/test_resource_reading.rb +8 -0
- metadata +3 -3
data/CHANGELOG
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
== activerdf (1.6.11) Thu, 27 Nov 2008 11:27:24 +0100
|
2
|
+
* added support for enabling/disabling adapters (Samur Saraujo)
|
3
|
+
* RDFS::Resource accepts block (Aleksander Pohl)
|
4
|
+
|
1
5
|
== activerdf (1.6.10) Wed, 23 Apr 2008 10:43:44 +0200
|
2
6
|
* convert float <-> xsd:double (Richard Dale)
|
3
7
|
* fix #202979: superclass mismatch in literal.rb (Slava Kravchenko)
|
@@ -5,7 +5,11 @@ require 'queryengine/query2sparql'
|
|
5
5
|
|
6
6
|
class ActiveRdfAdapter
|
7
7
|
# indicate if adapter can read and write
|
8
|
-
bool_accessor :reads, :writes
|
8
|
+
bool_accessor :reads, :writes, :enabled
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@enabled = true
|
12
|
+
end
|
9
13
|
|
10
14
|
# translate a query to its string representation
|
11
15
|
def translate(query)
|
@@ -54,11 +54,11 @@ class ConnectionPool
|
|
54
54
|
|
55
55
|
# returns the set of currently registered read-access datasources
|
56
56
|
def ConnectionPool.read_adapters
|
57
|
-
@@adapter_pool.select {|adapter| adapter.reads? }
|
57
|
+
@@adapter_pool.select {|adapter| adapter.reads? && adapter.enabled?}
|
58
58
|
end
|
59
59
|
|
60
60
|
def ConnectionPool.write_adapters
|
61
|
-
@@adapter_pool.select {|adapter| adapter.writes? }
|
61
|
+
@@adapter_pool.select {|adapter| adapter.writes? && adapter.enabled?}
|
62
62
|
end
|
63
63
|
|
64
64
|
# returns adapter-instance for given parameters (either existing or new)
|
@@ -10,7 +10,7 @@ class Namespace
|
|
10
10
|
# e.g. :rdf and 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'
|
11
11
|
def self.register(prefix, fullURI)
|
12
12
|
raise ActiveRdfError, 'prefix nor uri can be empty' if (prefix.to_s.empty? or fullURI.to_s.empty?)
|
13
|
-
raise ActiveRdfError, "namespace uri should end with # or /" unless /\/|#/ =~ fullURI.to_s[-1..-1]
|
13
|
+
#raise ActiveRdfError, "namespace uri should end with # or /" unless /\/|#/ =~ fullURI.to_s[-1..-1]
|
14
14
|
$activerdflog.info "Namespace: registering #{fullURI} to #{prefix}"
|
15
15
|
@@namespaces[prefix.to_sym] = fullURI.to_s
|
16
16
|
@@inverted_namespaces[fullURI.to_s] = prefix.to_sym
|
@@ -194,7 +194,7 @@ module RDFS
|
|
194
194
|
end
|
195
195
|
|
196
196
|
# manages invocations such as eyal.age
|
197
|
-
def method_missing(method, *args)
|
197
|
+
def method_missing(method, *args,&block)
|
198
198
|
# possibilities:
|
199
199
|
# 1. eyal.age is a property of eyal (triple exists <eyal> <age> "30")
|
200
200
|
# evidence: eyal age ?a, ?a is not nil (only if value exists)
|
@@ -250,7 +250,7 @@ module RDFS
|
|
250
250
|
if update
|
251
251
|
return set_predicate(@predicates[methodname], args)
|
252
252
|
else
|
253
|
-
return get_predicate(@predicates[methodname])
|
253
|
+
return get_predicate(@predicates[methodname],false,&block)
|
254
254
|
end
|
255
255
|
end
|
256
256
|
|
@@ -263,7 +263,7 @@ module RDFS
|
|
263
263
|
|
264
264
|
# catch the invocation on the namespace
|
265
265
|
class <<namespace
|
266
|
-
def method_missing(localname, *values)
|
266
|
+
def method_missing(localname, *values,&block)
|
267
267
|
update = localname.to_s[-1..-1] == '='
|
268
268
|
predicate = if update
|
269
269
|
Namespace.lookup(@@uri, localname.to_s[0..-2])
|
@@ -274,7 +274,7 @@ module RDFS
|
|
274
274
|
if update
|
275
275
|
@@subject.set_predicate(predicate, values)
|
276
276
|
else
|
277
|
-
@@subject.get_predicate(predicate, @@flatten)
|
277
|
+
@@subject.get_predicate(predicate, @@flatten,&block)
|
278
278
|
end
|
279
279
|
end
|
280
280
|
private(:type)
|
@@ -294,7 +294,7 @@ module RDFS
|
|
294
294
|
if update
|
295
295
|
return set_predicate(pred, args)
|
296
296
|
else
|
297
|
-
return get_predicate(pred, flatten)
|
297
|
+
return get_predicate(pred, flatten,&block)
|
298
298
|
end
|
299
299
|
end
|
300
300
|
end
|
@@ -422,8 +422,12 @@ module RDFS
|
|
422
422
|
values
|
423
423
|
end
|
424
424
|
|
425
|
-
def get_predicate(predicate, flatten=false)
|
426
|
-
|
425
|
+
def get_predicate(predicate, flatten=false,&block)
|
426
|
+
query = Query.new.distinct(:o).where(self, predicate, :o)
|
427
|
+
if block_given?
|
428
|
+
yield query, :o
|
429
|
+
end
|
430
|
+
values = query.execute(:flatten => flatten)
|
427
431
|
|
428
432
|
# TODO: fix '<<' for Fixnum values etc (we cannot use values.instance_eval
|
429
433
|
# because Fixnum cannot do instace_eval, they're not normal classes)
|
@@ -140,6 +140,6 @@ class TestFederationManager < Test::Unit::TestCase
|
|
140
140
|
# in parallel for distinct data, actually gives same results as querying
|
141
141
|
# only the one set
|
142
142
|
uniq = Query.new.distinct(:s,:p,:o).where(:s,:p,:o).execute
|
143
|
-
assert_equal first, uniq
|
143
|
+
assert_equal first.sort, uniq.sort
|
144
144
|
end
|
145
145
|
end
|
@@ -82,13 +82,14 @@ class TestObjectManager < Test::Unit::TestCase
|
|
82
82
|
</rdf:Description>
|
83
83
|
</rdf:RDF>'
|
84
84
|
assert eyal.to_xml.include?(snippet)
|
85
|
-
|
86
|
-
|
87
|
-
url = 'http://
|
85
|
+
|
86
|
+
require 'net/http'
|
87
|
+
url = 'http://librdf.org/parse'
|
88
88
|
uri = URI.parse(url)
|
89
89
|
req = Net::HTTP::Post.new(url)
|
90
|
-
req.set_form_data('
|
91
|
-
res = Net::HTTP.new(uri.host,
|
92
|
-
|
90
|
+
req.set_form_data('content'=>eyal.to_xml, 'language'=>'rdfxml')
|
91
|
+
res = Net::HTTP.new(uri.host,uri.port).start {|http| http.request(req) }
|
92
|
+
result = res.body.match(/Found.*triples/)[0]
|
93
|
+
assert_equal "Found 4 triples", result, 'invalid XML generated (according to online parser at librdf.org'
|
93
94
|
end
|
94
95
|
end
|
@@ -134,4 +134,12 @@ class TestResourceReading < Test::Unit::TestCase
|
|
134
134
|
assert_equal 1, RDFS::Resource.find_by_rdf::type(RDFS::Resource, :context => one).size
|
135
135
|
assert_equal 1, RDFS::Resource.find_by_eye_and_rdf::type('blue', RDFS::Resource, :context => one).size
|
136
136
|
end
|
137
|
+
|
138
|
+
def test_reading_with_block
|
139
|
+
qs=<<EOF
|
140
|
+
SELECT DISTINCT ?o WHERE { <http://activerdf.org/test/eyal>
|
141
|
+
<http://activerdf.org/test/age> ?o . FILTER (regex(lang(?o), '^nl$'))}
|
142
|
+
EOF
|
143
|
+
@eyal.age {|query, obj| query.lang(obj, "nl"); assert_equal qs.gsub("\n",'').strip, query.to_sp.strip}
|
144
|
+
end
|
137
145
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eyal Oren
|
@@ -9,7 +9,7 @@ autorequire: active_rdf
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-11-27 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -93,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements: []
|
94
94
|
|
95
95
|
rubyforge_project:
|
96
|
-
rubygems_version: 1.
|
96
|
+
rubygems_version: 1.1.1
|
97
97
|
signing_key:
|
98
98
|
specification_version: 2
|
99
99
|
summary: Offers object-oriented access to RDF (with adapters to several datastores).
|