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 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