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 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
- # and remove array (return single value) unless asked not to
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
- final_results = nil
59
+ results = nil
60
60
  when 1
61
- final_results = results.first
62
- else
63
- final_results = results
64
- end
65
- else
66
- final_results = results
67
- end
61
+ results = results.first
62
+ end
63
+ end
68
64
  end
69
65
 
70
- final_results
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 StandardError => e
25
- $activerdflog.info "could not load adapter #{s}: #{e}"
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'
@@ -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 only adapter found for test"
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.0
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.1
7
- date: 2007-01-30 00:00:00 +00:00
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
- - Rakefile
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