activerdf 1.2.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|