activerdf 1.2.1 → 1.2.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 +11 -0
- data/lib/active_rdf/federation/federation_manager.rb +6 -10
- data/lib/active_rdf/objectmanager/namespace.rb +5 -0
- data/lib/active_rdf/objectmanager/resource.rb +28 -1
- data/lib/active_rdf.rb +3 -2
- data/lib/active_rdf_log.rb +1 -0
- data/test/common.rb +1 -2
- data/test/queryengine/test_query.rb +6 -0
- metadata +16 -8
- data/Rakefile +0 -81
- data/tools/rakehelp.rb +0 -103
data/CHANGELOG
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
== activerdf (1.2.2) Tue, 13 Feb 2007 19:40:19 +0000
|
2
|
+
* gems published automatically from Rakefile
|
3
|
+
* added support for namespaced attributes:
|
4
|
+
eyal.foaf::name or eyal.foaf.name (do not require predicate lookup)
|
5
|
+
* minor changes to activerdf loader and documentation
|
6
|
+
|
7
|
+
== activerdf (1.2.1) Tue, 30 Jan 2007 19:09:59 +0000
|
8
|
+
* added ancestors when looking at domain/range in Resource#method_missing
|
9
|
+
(makes foaf.name='eyal' work without reasoning because foaf:name defined in
|
10
|
+
superclass, but does not work when reasoning enabled)
|
11
|
+
* activerdf loader uses 'gem' instead of deprecated 'require_gem'
|
@@ -52,21 +52,17 @@ class FederationManager
|
|
52
52
|
# to prevent unnecessarily nested array [[eyal],[renaud],...]
|
53
53
|
results.flatten! if q.select_clauses.size == 1 or q.ask?
|
54
54
|
|
55
|
-
#
|
55
|
+
# remove array (return single value or nil) if asked to
|
56
56
|
if options[:flatten] or q.count?
|
57
57
|
case results.size
|
58
58
|
when 0
|
59
|
-
|
59
|
+
results = nil
|
60
60
|
when 1
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
end
|
65
|
-
else
|
66
|
-
final_results = results
|
67
|
-
end
|
61
|
+
results = results.first
|
62
|
+
end
|
63
|
+
end
|
68
64
|
end
|
69
65
|
|
70
|
-
|
66
|
+
results
|
71
67
|
end
|
72
68
|
end
|
@@ -64,6 +64,11 @@ class Namespace
|
|
64
64
|
uri[delimiter+1..-1]
|
65
65
|
end
|
66
66
|
end
|
67
|
+
|
68
|
+
# returns currently registered namespace abbreviations (e.g. :foaf, :rdf)
|
69
|
+
def self.abbreviations
|
70
|
+
@@namespaces.keys
|
71
|
+
end
|
67
72
|
end
|
68
73
|
|
69
74
|
Namespace.register(:rdf, 'http://www.w3.org/1999/02/22-rdf-syntax-ns#')
|
@@ -149,6 +149,11 @@ module RDFS
|
|
149
149
|
# 5. eyal.age is registered abbreviation
|
150
150
|
# evidence: age in @predicates
|
151
151
|
# action: return object from triple (eyal, @predicates[age], ?o)
|
152
|
+
#
|
153
|
+
# 6. eyal.foaf::name, where foaf is a registered abbreviation
|
154
|
+
# evidence: foaf in Namespace.
|
155
|
+
# action: return namespace proxy that handles 'name' invocation, by
|
156
|
+
# rewriting into predicate lookup (similar to case (5)
|
152
157
|
|
153
158
|
# maybe change order in which to check these, checking (4) is probably
|
154
159
|
# cheaper than (1)-(2) but (1) and (2) are probably more probable (getting
|
@@ -172,6 +177,20 @@ module RDFS
|
|
172
177
|
return predicate_invocation(@predicates[methodname], args, update)
|
173
178
|
end
|
174
179
|
|
180
|
+
# check possibility (6)
|
181
|
+
if Namespace.abbreviations.include?(method)
|
182
|
+
namespace = Object.new
|
183
|
+
@@uri = method
|
184
|
+
@@subject = self
|
185
|
+
class <<namespace
|
186
|
+
def method_missing(localname, *args)
|
187
|
+
predicate = Namespace.lookup(@@uri, localname)
|
188
|
+
Query.new.distinct(:o).where(@@subject, predicate, :o).execute(:flatten => true)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
return namespace
|
192
|
+
end
|
193
|
+
|
175
194
|
candidates = if update
|
176
195
|
(class_level_predicates + direct_predicates).compact.uniq
|
177
196
|
else
|
@@ -241,6 +260,13 @@ module RDFS
|
|
241
260
|
end
|
242
261
|
end
|
243
262
|
|
263
|
+
# returns all rdf:type of this instance, e.g. [RDFS::Resource,
|
264
|
+
# FOAF::Person]
|
265
|
+
#
|
266
|
+
# Note: this method performs a database lookup for { self rdf:type ?o }. For
|
267
|
+
# simple type-checking (to know if you are handling an ActiveRDF object, use
|
268
|
+
# self.class, which does not do a database query, but simply returns
|
269
|
+
# RDFS::Resource.
|
244
270
|
def type
|
245
271
|
types.collect do |type|
|
246
272
|
ObjectManager.construct_class(type)
|
@@ -323,7 +349,8 @@ module RDFS
|
|
323
349
|
query.execute(:flatten => flatten_results)
|
324
350
|
end
|
325
351
|
|
326
|
-
# returns all rdf:types of this resource
|
352
|
+
# returns all rdf:types of this resource but without a conversion to
|
353
|
+
# Ruby classes (it returns an array of RDFS::Resources)
|
327
354
|
def types
|
328
355
|
type = Namespace.lookup(:rdf, :type)
|
329
356
|
|
data/lib/active_rdf.rb
CHANGED
@@ -21,8 +21,8 @@ require 'federation/active_rdf_adapter'
|
|
21
21
|
def load_adapter s
|
22
22
|
begin
|
23
23
|
require s
|
24
|
-
rescue
|
25
|
-
$activerdflog.
|
24
|
+
rescue Exception => e
|
25
|
+
$activerdflog.warn "could not load adapter #{s}: #{e}"
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -37,6 +37,7 @@ if Gem::cache.search(/^activerdf$/).empty?
|
|
37
37
|
load_adapter this_dir + '/../activerdf-redland/lib/activerdf_redland/redland'
|
38
38
|
load_adapter this_dir + '/../activerdf-sparql/lib/activerdf_sparql/sparql'
|
39
39
|
load_adapter this_dir + '/../activerdf-yars/lib/activerdf_yars/jars2'
|
40
|
+
load_adapter this_dir + '/../activerdf-sesame/lib/activerdf_sesame/sesame'
|
40
41
|
else
|
41
42
|
# we are running as a gem
|
42
43
|
require 'gem_plugin'
|
data/lib/active_rdf_log.rb
CHANGED
@@ -2,6 +2,7 @@ require 'logger'
|
|
2
2
|
|
3
3
|
# use either $ACTIVE_RDF_LOG for logging or current directory
|
4
4
|
location = ENV['ACTIVE_RDF_LOG'] || "#{Dir.pwd}/activerdf.log"
|
5
|
+
location = $stdout if location == "STDOUT"
|
5
6
|
$activerdflog = Logger.new(location, 1, 100*1024)
|
6
7
|
|
7
8
|
# if user has specified loglevel we use that, otherwise we use default level
|
data/test/common.rb
CHANGED
@@ -20,9 +20,8 @@ def get_read_only_adapter
|
|
20
20
|
if types.include?(:sparql)
|
21
21
|
ConnectionPool.add(:type => :sparql, :url => "http://m3pe.org:8080/repositories/test-people", :results => :sparql_xml)
|
22
22
|
else
|
23
|
-
raise ActiveRdfError, "no suitable read
|
23
|
+
raise ActiveRdfError, "no suitable read-only adapter found for test"
|
24
24
|
end
|
25
|
-
|
26
25
|
end
|
27
26
|
|
28
27
|
# TODO make this work with a list of existing adapters, not only one
|
@@ -45,5 +45,11 @@ class TestQuery < Test::Unit::TestCase
|
|
45
45
|
q1 = Query.new.select(:s,:a)
|
46
46
|
q2 = Query.new.select(:s).select(:a)
|
47
47
|
assert_equal Query2SPARQL.translate(q1),Query2SPARQL.translate(q2)
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_query_refuses_string_in_where_clause_subject_or_predicate
|
51
|
+
assert_raises ActiveRdfError do
|
52
|
+
Query.new.select(:s).where("http://test.org/uri",:p, :o).execute
|
53
|
+
end
|
48
54
|
end
|
49
55
|
end
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.2
|
3
3
|
specification_version: 1
|
4
4
|
name: activerdf
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.2.
|
7
|
-
date: 2007-
|
6
|
+
version: 1.2.2
|
7
|
+
date: 2007-02-13 00:00:00 +00:00
|
8
8
|
summary: Offers object-oriented access to RDF (with adapters to several datastores).
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -31,7 +31,7 @@ authors:
|
|
31
31
|
files:
|
32
32
|
- LICENSE
|
33
33
|
- README
|
34
|
-
-
|
34
|
+
- CHANGELOG
|
35
35
|
- test/federation
|
36
36
|
- test/objectmanager
|
37
37
|
- test/queryengine
|
@@ -48,23 +48,22 @@ files:
|
|
48
48
|
- test/queryengine/test_query2jars2.rb
|
49
49
|
- test/queryengine/test_query2sparql.rb
|
50
50
|
- test/queryengine/test_query_engine.rb
|
51
|
-
- lib/active_rdf.rb
|
52
|
-
- lib/active_rdf_log.rb
|
53
51
|
- lib/active_rdf
|
52
|
+
- lib/active_rdf.rb
|
54
53
|
- lib/active_rdf_helpers.rb
|
54
|
+
- lib/active_rdf_log.rb
|
55
55
|
- lib/active_rdf/federation
|
56
56
|
- lib/active_rdf/objectmanager
|
57
57
|
- lib/active_rdf/queryengine
|
58
|
+
- lib/active_rdf/federation/active_rdf_adapter.rb
|
58
59
|
- lib/active_rdf/federation/connection_pool.rb
|
59
60
|
- lib/active_rdf/federation/federation_manager.rb
|
60
|
-
- lib/active_rdf/federation/active_rdf_adapter.rb
|
61
61
|
- lib/active_rdf/objectmanager/namespace.rb
|
62
62
|
- lib/active_rdf/objectmanager/object_manager.rb
|
63
63
|
- lib/active_rdf/objectmanager/resource.rb
|
64
64
|
- lib/active_rdf/queryengine/query.rb
|
65
65
|
- lib/active_rdf/queryengine/query2jars2.rb
|
66
66
|
- lib/active_rdf/queryengine/query2sparql.rb
|
67
|
-
- tools/rakehelp.rb
|
68
67
|
test_files: []
|
69
68
|
|
70
69
|
rdoc_options: []
|
@@ -87,3 +86,12 @@ dependencies:
|
|
87
86
|
- !ruby/object:Gem::Version
|
88
87
|
version: 0.2.1
|
89
88
|
version:
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: activerdf_sparql
|
91
|
+
version_requirement:
|
92
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.0.0
|
97
|
+
version:
|
data/Rakefile
DELETED
@@ -1,81 +0,0 @@
|
|
1
|
-
require 'rake'
|
2
|
-
require 'rake/testtask'
|
3
|
-
require 'rake/clean'
|
4
|
-
require 'rake/gempackagetask'
|
5
|
-
require 'rake/rdoctask'
|
6
|
-
require 'tools/rakehelp'
|
7
|
-
require 'rubygems'
|
8
|
-
require 'fileutils'
|
9
|
-
include FileUtils
|
10
|
-
|
11
|
-
# setup tests and rdoc files
|
12
|
-
setup_tests
|
13
|
-
setup_clean ["pkg", "lib/*.bundle", "*.gem", ".config"]
|
14
|
-
|
15
|
-
# setup rdoc task
|
16
|
-
#setup_rdoc ['README', 'LICENSE', 'lib/**/*.rb']
|
17
|
-
Rake::RDocTask.new do |rdoc|
|
18
|
-
files = ['README', 'LICENSE', 'lib/**/*.rb', 'doc/**/*.rdoc', 'test/*.rb']
|
19
|
-
files << 'activerdf-*/lib/**/*.rb'
|
20
|
-
rdoc.rdoc_files.add(files)
|
21
|
-
rdoc.main = "README" # page to start on
|
22
|
-
rdoc.title = "ActiveRDF documentation"
|
23
|
-
rdoc.template = "tools/allison/allison.rb"
|
24
|
-
rdoc.rdoc_dir = 'doc' # rdoc output folder
|
25
|
-
rdoc.options << '--line-numbers' << '--inline-source'
|
26
|
-
end
|
27
|
-
|
28
|
-
# default task: install
|
29
|
-
desc 'test and package gem'
|
30
|
-
task :default => :install
|
31
|
-
|
32
|
-
# get ActiveRdfVersion from commandline
|
33
|
-
ActiveRdfVersion = '1.2.1'
|
34
|
-
NAME="activerdf"
|
35
|
-
GEMNAME="#{NAME}-#{ActiveRdfVersion}.gem"
|
36
|
-
|
37
|
-
# define package task
|
38
|
-
setup_gem(NAME,ActiveRdfVersion) do |spec|
|
39
|
-
spec.summary = 'Offers object-oriented access to RDF (with adapters to several datastores).'
|
40
|
-
spec.description = spec.summary
|
41
|
-
spec.author = 'Eyal Oren'
|
42
|
-
spec.email = 'eyal.oren@deri.org'
|
43
|
-
spec.homepage = 'http://www.activerdf.org'
|
44
|
-
spec.platform = Gem::Platform::RUBY
|
45
|
-
spec.autorequire = 'active_rdf'
|
46
|
-
spec.add_dependency('gem_plugin', '>= 0.2.1')
|
47
|
-
end
|
48
|
-
|
49
|
-
# define upload task
|
50
|
-
task :upload => :package do |task|
|
51
|
-
sh "scp pkg/#{GEMNAME} eyal@m3pe.org:/home/eyal/webs/activerdf/gems/"
|
52
|
-
#sh "scp activerdf-*/pkg/*.gem eyal@m3pe.org:/home/eyal/webs/activerdf/gems/"
|
53
|
-
end
|
54
|
-
|
55
|
-
task :install => [:package] do
|
56
|
-
sh "sudo gem install pkg/#{GEMNAME}"
|
57
|
-
end
|
58
|
-
|
59
|
-
task :uninstall => [:clean] do
|
60
|
-
sh "sudo gem uninstall #{NAME}"
|
61
|
-
end
|
62
|
-
|
63
|
-
task :reinstall => [:uninstall, :install]
|
64
|
-
|
65
|
-
# define task rcov
|
66
|
-
begin
|
67
|
-
require 'rcov/rcovtask'
|
68
|
-
Rcov::RcovTask.new do |t|
|
69
|
-
t.test_files = FileList["activerdf-*/test/**/*.rb"]
|
70
|
-
t.verbose = true
|
71
|
-
# t.rcov_opts << "--test-unit-only "
|
72
|
-
end
|
73
|
-
rescue LoadError
|
74
|
-
# rcov not installed
|
75
|
-
end
|
76
|
-
|
77
|
-
# define test_all task
|
78
|
-
Rake::TestTask.new do |t|
|
79
|
-
t.name = :test_all
|
80
|
-
t.test_files = FileList["test/**/*.rb", "activerdf-*/test/**/*.rb"]
|
81
|
-
end
|
data/tools/rakehelp.rb
DELETED
@@ -1,103 +0,0 @@
|
|
1
|
-
|
2
|
-
def make(makedir)
|
3
|
-
Dir.chdir(makedir) do
|
4
|
-
sh(PLATFORM =~ /win32/ ? 'nmake' : 'make')
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
|
-
|
9
|
-
def extconf(dir)
|
10
|
-
Dir.chdir(dir) do ruby "extconf.rb" end
|
11
|
-
end
|
12
|
-
|
13
|
-
|
14
|
-
def setup_tests
|
15
|
-
Rake::TestTask.new do |t|
|
16
|
-
t.test_files = FileList['test/**/*.rb']
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
def setup_clean otherfiles
|
22
|
-
files = ['build/*', '**/*.o', '**/*.so', '**/*.a', 'lib/*-*', '**/*.log'] + otherfiles
|
23
|
-
CLEAN.include(files)
|
24
|
-
end
|
25
|
-
|
26
|
-
|
27
|
-
def setup_rdoc files
|
28
|
-
Rake::RDocTask.new do |rdoc|
|
29
|
-
rdoc.rdoc_dir = 'doc/rdoc'
|
30
|
-
rdoc.options << '--line-numbers'
|
31
|
-
rdoc.rdoc_files.add(files)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
|
36
|
-
def setup_extension(dir, extension)
|
37
|
-
ext = "ext/#{dir}"
|
38
|
-
ext_so = "#{ext}/#{extension}.#{Config::CONFIG['DLEXT']}"
|
39
|
-
ext_files = FileList[
|
40
|
-
"#{ext}/*.c",
|
41
|
-
"#{ext}/*.h",
|
42
|
-
"#{ext}/extconf.rb",
|
43
|
-
"#{ext}/Makefile",
|
44
|
-
"lib"
|
45
|
-
]
|
46
|
-
|
47
|
-
task "lib" do
|
48
|
-
directory "lib"
|
49
|
-
end
|
50
|
-
|
51
|
-
desc "Builds just the #{extension} extension"
|
52
|
-
task extension.to_sym => ["#{ext}/Makefile", ext_so ]
|
53
|
-
|
54
|
-
file "#{ext}/Makefile" => ["#{ext}/extconf.rb"] do
|
55
|
-
extconf "#{ext}"
|
56
|
-
end
|
57
|
-
|
58
|
-
file ext_so => ext_files do
|
59
|
-
make "#{ext}"
|
60
|
-
cp ext_so, "lib"
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
|
65
|
-
def base_gem_spec(pkg_name, pkg_version)
|
66
|
-
pkg_version = pkg_version
|
67
|
-
pkg_name = pkg_name
|
68
|
-
pkg_file_name = "#{pkg_name}-#{pkg_version}"
|
69
|
-
Gem::Specification.new do |s|
|
70
|
-
s.name = pkg_name
|
71
|
-
s.version = pkg_version
|
72
|
-
s.platform = Gem::Platform::RUBY
|
73
|
-
s.has_rdoc = true
|
74
|
-
s.extra_rdoc_files = [ "README" ]
|
75
|
-
|
76
|
-
s.files = %w(LICENSE README Rakefile) +
|
77
|
-
Dir.glob("{bin,doc/rdoc,test,lib}/**/*") +
|
78
|
-
Dir.glob("ext/**/*.{h,c,rb}") +
|
79
|
-
Dir.glob("examples/**/*.rb") +
|
80
|
-
Dir.glob("tools/*.rb")
|
81
|
-
|
82
|
-
s.require_path = "lib"
|
83
|
-
s.extensions = FileList["ext/**/extconf.rb"].to_a
|
84
|
-
s.bindir = "bin"
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
def setup_gem(pkg_name, pkg_version)
|
89
|
-
spec = base_gem_spec(pkg_name, pkg_version)
|
90
|
-
yield spec if block_given?
|
91
|
-
|
92
|
-
Rake::GemPackageTask.new(spec) do |p|
|
93
|
-
p.gem_spec = spec
|
94
|
-
p.need_tar = false
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
def setup_win32_gem(pkg_name, pkg_version)
|
99
|
-
spec = base_gem_spec(pkg_name, pkg_version)
|
100
|
-
yield spec if block_given?
|
101
|
-
|
102
|
-
Gem::Builder.new(spec).build
|
103
|
-
end
|