activerdf_net7 1.6.16 → 1.7.0

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.
Files changed (85) hide show
  1. data/CHANGELOG +63 -0
  2. data/activerdf-jena/lib/activerdf_jena/jena.rb +4 -4
  3. data/activerdf-jena/lib/activerdf_jena/jena_adapter.rb +55 -55
  4. data/activerdf-jena/lib/activerdf_jena/lucene.rb +1 -1
  5. data/activerdf-jena/lib/activerdf_jena/ng4j.rb +7 -7
  6. data/activerdf-jena/lib/activerdf_jena/ng4j_adapter.rb +47 -47
  7. data/activerdf-jena/lib/activerdf_jena/pellet.rb +1 -1
  8. data/activerdf-jena/test/test_jena_adapter.rb +121 -120
  9. data/activerdf-jena/test/test_ng4j_adapter.rb +111 -110
  10. data/activerdf-rdflite/lib/activerdf_rdflite/fetching.rb +23 -19
  11. data/activerdf-rdflite/lib/activerdf_rdflite/rdflite.rb +153 -277
  12. data/activerdf-rdflite/lib/activerdf_rdflite/suggesting.rb +2 -2
  13. data/activerdf-rdflite/test/test_fetching.rb +7 -22
  14. data/activerdf-rdflite/test/test_rdflite.rb +44 -257
  15. data/activerdf-redland/lib/activerdf_redland/redland.rb +246 -282
  16. data/activerdf-redland/test/test_redland_adapter.rb +62 -224
  17. data/activerdf-sesame/ext/wrapper-sesame2.jar +0 -0
  18. data/activerdf-sesame/java/build.number +2 -2
  19. data/activerdf-sesame/java/build.xml +0 -0
  20. data/activerdf-sesame/java/lib/junit-3.8.2.jar +0 -0
  21. data/activerdf-sesame/java/settings.xml +0 -0
  22. data/activerdf-sesame/java/src/org/activerdf/wrapper/sesame2/WrapperForSesame2.java +0 -0
  23. data/activerdf-sesame/java/temp/build/org/activerdf/wrapper/sesame2/WrapperForSesame2.class +0 -0
  24. data/activerdf-sesame/java/temp/manifest/MANIFEST.MF +2 -2
  25. data/activerdf-sesame/java/test-src/org/activerdf/wrapper/sesame2/TestWrapperForSesame2.java +0 -0
  26. data/activerdf-sesame/lib/activerdf_sesame/sesame.rb +360 -364
  27. data/activerdf-sesame/test/test_sesame_adapter.rb +85 -83
  28. data/activerdf-sparql/lib/activerdf_sparql/sparql.rb +147 -148
  29. data/activerdf-sparql/lib/activerdf_sparql/sparql_result_parser.rb +5 -5
  30. data/activerdf-sparql/test/test_sparql_adapter.rb +2 -0
  31. data/activerdf-yars/lib/activerdf_yars/jars2.rb +85 -83
  32. data/lib/active_rdf/federation/active_rdf_adapter.rb +26 -39
  33. data/lib/active_rdf/federation/connection_pool.rb +119 -110
  34. data/lib/active_rdf/federation/federation_manager.rb +51 -51
  35. data/lib/active_rdf/objectmanager/bnode.rb +8 -2
  36. data/lib/active_rdf/objectmanager/literal.rb +81 -50
  37. data/lib/active_rdf/objectmanager/namespace.rb +117 -84
  38. data/lib/active_rdf/objectmanager/object_manager.rb +101 -96
  39. data/lib/active_rdf/objectmanager/ordered_set.rb +1 -1
  40. data/lib/active_rdf/objectmanager/property.rb +345 -0
  41. data/lib/active_rdf/objectmanager/property_list.rb +4 -4
  42. data/lib/active_rdf/objectmanager/property_lookup.rb +57 -0
  43. data/lib/active_rdf/objectmanager/resource.rb +293 -501
  44. data/lib/active_rdf/objectmanager/resource_like.rb +2 -2
  45. data/lib/active_rdf/objectmanager/resource_query.rb +85 -0
  46. data/lib/active_rdf/queryengine/ntriples_parser.rb +75 -68
  47. data/lib/active_rdf/queryengine/query.rb +237 -183
  48. data/lib/active_rdf/queryengine/query2jars2.rb +17 -15
  49. data/lib/active_rdf/queryengine/query2sparql.rb +107 -101
  50. data/lib/active_rdf.rb +28 -17
  51. data/lib/active_rdf_helpers.rb +37 -5
  52. data/lib/active_rdf_log.rb +11 -11
  53. data/test/adapters/test_activerdf_adapter.rb +138 -0
  54. data/test/{test_adapters.rb → adapters/test_adapters.rb} +6 -24
  55. data/test/adapters/test_bnode_capable_adapter.rb +31 -0
  56. data/test/adapters/test_context_aware_adapter.rb +31 -0
  57. data/test/adapters/test_network_aware_adapter.rb +29 -0
  58. data/test/adapters/test_persistent_adapter.rb +21 -0
  59. data/test/adapters/test_read_only_adapter.rb +15 -0
  60. data/test/adapters/test_reasoning_adapter.rb +11 -0
  61. data/test/adapters/test_writable_adapter.rb +163 -0
  62. data/test/common.rb +78 -96
  63. data/test/federation/test_connection_pool.rb +25 -44
  64. data/test/federation/test_federation_manager.rb +45 -45
  65. data/test/objectmanager/test_literal.rb +47 -26
  66. data/test/objectmanager/test_namespace.rb +3 -1
  67. data/test/objectmanager/test_object_manager.rb +35 -45
  68. data/test/objectmanager/test_ordered_set.rb +1 -1
  69. data/test/objectmanager/test_property.rb +261 -0
  70. data/test/objectmanager/test_resource_reading.rb +196 -104
  71. data/test/objectmanager/test_resource_reasoning.rb +26 -0
  72. data/test/objectmanager/test_resource_writing.rb +34 -25
  73. data/test/queryengine/my_external_resource.rb +5 -1
  74. data/test/queryengine/test_external_resource_class.rb +1 -8
  75. data/test/queryengine/test_ntriples_parser.rb +5 -3
  76. data/test/queryengine/test_query.rb +3 -3
  77. data/test/queryengine/test_query2jars2.rb +2 -2
  78. data/test/queryengine/test_query2sparql.rb +2 -2
  79. data/test/queryengine/test_query_engine.rb +46 -28
  80. metadata +16 -8
  81. data/activerdf-rdflite/test/test_bnode_data.nt +0 -5
  82. data/activerdf-rdflite/test/test_data.nt +0 -32
  83. data/activerdf-rdflite/test/test_escaped_data.nt +0 -2
  84. data/activerdf-redland/test/test_person_data.nt +0 -42
  85. data/test/objectmanager/test_talia_syntax.rb +0 -68
data/CHANGELOG CHANGED
@@ -1,3 +1,66 @@
1
+ == activerdf (HEAD)
2
+ * ActiveRDF classes have been moved into their own module, ActiveRDF::.
3
+ * Registered predicates are being deprecated in favor of registered
4
+ namespaces instead.
5
+
6
+ * Added RDF::Property to manage properties and their values.
7
+ If it is associated with a resource on instantiation, that property then
8
+ provides access to the values belonging to the associated resource.
9
+ This changes the way properties are queried from RDFS::Resource. This
10
+ replaces all_ property methods. resource.property now returns a
11
+ RDF::Property. Values may be accessed via Enumerable methods.
12
+
13
+ * Resource refactored, DRY'd out.
14
+ * Resource.find(uri) for finding resources by uri. Returns nil if resource
15
+ not found. Use instead of Resource.new(uri) if you don't wish to create
16
+ a new resource if one is not found.
17
+ * Resource#to_s now returns URI's without enclosing braces(<>).
18
+ Use #to_literal_s for NTriple formatted URI's
19
+ * Resource#all_predicates, #instance_predicates, #empty_predicates added
20
+ * Resource#filter now takes a single filter at a time. returns self so
21
+ additional filters may be chained. #filter_regexp now simply #regexp
22
+ * Resource property lookups now have the following search priority:
23
+ custom methods first, namespaced properties second,
24
+ registered_predicates(deprecated) then finally a search on all
25
+ known properties for this class.
26
+ * Provide some limited RDF & RDFS reasoning. Enabled with a new global
27
+ variable $activerdf_internal_reasoning = false (default)
28
+
29
+ * Datatype support. ActiveRDF will by default use datatype for all
30
+ literals to provide typing support. A new global boolean variable
31
+ $activerdf_without_datatype will disable the use of datatypes if
32
+ set to true. This may be necessary when working with literals that
33
+ do not have a datatype specified in which case they will all be treated
34
+ as strings.
35
+ * Query#all_types uses regex matching to match all values, ignoring
36
+ datatype when $activerdf_without_datatype = false, ie enforcing type.
37
+ Use in datastores with mixed typed and non-typed literals
38
+ See discussion here: http://markmail.org/message/4rhqmb5jnaqbwfbs
39
+ * Query flatten argument now defaults to false
40
+ * Added FederationManager#contexts for querying contexts for all adapters
41
+ * NTriples parser now ignores comments and recognizes lang/datatype
42
+
43
+ * renamed adapter API method #query to #execute to match semantics of Query
44
+ * RDFLite has been refactored. Additional rapper syntax option(-i) to #fetch,#load:
45
+ fetch(url, syntax = nil), load(location, syntax = nil)
46
+ * Redland adapter initialization refactored. Redland store types
47
+ via :location parameter now supported: 'postgres','mysql','sqlite','memory',<filename>
48
+ :want_new parameter changed to :new.
49
+ * Redland adapter no longer calls eva(i)l('"%s"' % self) on all data.
50
+
51
+ * Code reformatting
52
+
53
+ * Bugfixes for
54
+ 88428: queries with blocks don't work
55
+ 48849: datatype support
56
+ 64007: class names capitalisation leads sometimes to unintuitive results
57
+ 106878: Dynamic finder behavior => now supported by RDF::Property when property known, nil when not found
58
+ 62481: find_by_<Property> is now supported through chained ResourceFilter calls
59
+ 185826: weird behavior with class compares
60
+
61
+ * reverted 461. This was a request to add additional filters to the property, specifically lang. This is now supported through RDF::Property#lang and #datatype. Support for arbitrary filters is on the todo list.
62
+ Namespace restriction should remain.
63
+
1
64
  == activerdf (1.6.12)
2
65
  * FederationManager passes delete correctly to adaptors
3
66
 
@@ -17,7 +17,7 @@ module Jena
17
17
 
18
18
  module DB
19
19
  include_package('com.hp.hpl.jena.db')
20
-
20
+
21
21
  # this maps downcased Jena database types into drivers
22
22
  DRIVER_MAP = {
23
23
  'oracle' => 'oracle.jdbc.Driver',
@@ -27,8 +27,8 @@ module Jena
27
27
  'hsql' => 'org.hsqldb.jdbcDriver',
28
28
  'mssql' => 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
29
29
  }
30
-
31
- DRIVER_MAP.each do |name, driver|
30
+
31
+ DRIVER_MAP.each do |name, driver|
32
32
  av = "#{name}_available"
33
33
  (class << self ; self ; end).send(:bool_accessor, av.to_sym)
34
34
  begin
@@ -39,7 +39,7 @@ module Jena
39
39
  end
40
40
  end
41
41
  end
42
-
42
+
43
43
  module Query
44
44
  include_package('com.hp.hpl.jena.query')
45
45
  end
@@ -32,7 +32,7 @@ class JenaAdapter < ActiveRdfAdapter
32
32
  def close
33
33
  self.datasource = nil
34
34
  end
35
-
35
+
36
36
  def valid_connection?(cnxn)
37
37
  true
38
38
  end
@@ -47,9 +47,9 @@ class JenaAdapter < ActiveRdfAdapter
47
47
  attr_accessor :model_maker, :base_model, :model, :lucene_index
48
48
  attr_accessor :root_directory
49
49
 
50
- # :database
50
+ # :database
51
51
  # either use :url, :type, :username, AND :password (for a
52
- # regular connection) OR :datasource AND :type (for a container
52
+ # regular connection) OR :datasource AND :type (for a container
53
53
  # connection), default to memory data store
54
54
  # example for a derby connection:
55
55
  # :database => {:url => "jdbc:derby:superfunky;create=true", :type => "Derby", :username => "", :password => ""}
@@ -59,12 +59,12 @@ class JenaAdapter < ActiveRdfAdapter
59
59
  # :model
60
60
  # name of model to use, default is jena's default
61
61
  # :ontology
62
- # set to language type if this needs to be viewed as an ontology,
62
+ # set to language type if this needs to be viewed as an ontology,
63
63
  # default nil, available :owl, :owl_dl, :owl_lite, :rdfs
64
- # pellet only supports owl reasoning.
65
- # :reasoner
66
- # set to reasoner to use -- default nil (none). options: :pellet,
67
- # :transitive, :rdfs, :rdfs_simple, :owl_micro, :owl_mini, :owl,
64
+ # pellet only supports owl reasoning.
65
+ # :reasoner
66
+ # set to reasoner to use -- default nil (none). options: :pellet,
67
+ # :transitive, :rdfs, :rdfs_simple, :owl_micro, :owl_mini, :owl,
68
68
  # :generic_rule
69
69
  # :lucene
70
70
  # set to true to enable true lucene indexing of this store, default false
@@ -73,7 +73,7 @@ class JenaAdapter < ActiveRdfAdapter
73
73
  self.ontology_type = params[:ontology]
74
74
  self.reasoner = params[:reasoner]
75
75
  self.keyword_search = params[:lucene]
76
-
76
+
77
77
  # if the model name is not provided and file persistence is used, then jena just
78
78
  # creates random files in the tmp dir. not good, as we need to know the model name
79
79
  # to have persistence
@@ -82,7 +82,7 @@ class JenaAdapter < ActiveRdfAdapter
82
82
  else
83
83
  self.model_name = "default"
84
84
  end
85
-
85
+
86
86
  if params[:file]
87
87
  if params[:file].respond_to? :path
88
88
  self.root_directory = File.expand_path(params[:file].path)
@@ -95,7 +95,7 @@ class JenaAdapter < ActiveRdfAdapter
95
95
  if self.keyword_search? && !LuceneARQ.lucene_available?
96
96
  raise JenaAdapterConfigurationError, "Lucene requested but is not available"
97
97
  end
98
-
98
+
99
99
  if self.reasoner == :pellet && !Pellet.pellet_available?
100
100
  raise JenaAdapterConfigurationError, "Pellet requested but not available"
101
101
  end
@@ -117,28 +117,28 @@ class JenaAdapter < ActiveRdfAdapter
117
117
  raise JenaAdapterConfigurationError, "database type #{dbparams[:type]} not recognized"
118
118
  end
119
119
 
120
- self.connection = Jena::DB::DBConnection.new(dbparams[:url],
120
+ self.connection = Jena::DB::DBConnection.new(dbparams[:url],
121
121
  dbparams[:username],
122
122
  dbparams[:password],
123
123
  dbparams[:type])
124
124
  end
125
125
 
126
126
  self.model_maker = Jena::Model::ModelFactory.createModelRDBMaker(connection)
127
-
127
+
128
128
  elsif self.root_directory
129
129
  self.model_maker = Jena::Model::ModelFactory.createFileModelMaker(self.root_directory)
130
130
  else
131
131
  self.model_maker = Jena::Model::ModelFactory.createMemModelMaker
132
132
  end
133
-
133
+
134
134
 
135
135
  self.base_model = self.model_maker.openModel(model_name)
136
-
136
+
137
137
  if self.ontology_type
138
138
  rf = map_reasoner_factory(self.reasoner)
139
139
  onturi = map_ontology_type(self.ontology_type)
140
140
 
141
- spec =
141
+ spec =
142
142
  Jena::Ontology::OntModelSpec.new(self.model_maker,
143
143
  Jena::Ontology::OntDocumentManager.new,
144
144
  rf, onturi)
@@ -150,10 +150,10 @@ class JenaAdapter < ActiveRdfAdapter
150
150
  self.model = self.base_model
151
151
  self.reasoning = false
152
152
  end
153
-
153
+
154
154
  self.reads = true
155
155
  self.writes = true
156
-
156
+
157
157
  self
158
158
  end
159
159
 
@@ -212,17 +212,17 @@ class JenaAdapter < ActiveRdfAdapter
212
212
  # :format
213
213
  # format -- :ntriples, :n3, or :rdfxml, default :rdfxml
214
214
  # :into
215
- # either the name of a model, :default_model for the main model, or
215
+ # either the name of a model, :default_model for the main model, or
216
216
  # :submodel to load into an anonymous memory model, default is :submodel
217
217
  # if this is an ontology, :default_model if it's not.
218
- # :rebind
218
+ # :rebind
219
219
  # rebind with the inferencer, default true; no effect if no inferencer
220
220
  def load(uri, params = {})
221
- into = params[:into] ? params[:into] :
221
+ into = params[:into] ? params[:into] :
222
222
  (self.ontology_type ? :submodel : :default_model)
223
223
  format = params[:format] ? params[:format] : :rdfxml
224
224
  rebind = params[:rebind] ? params[:rebind] : true
225
-
225
+
226
226
  jena_format =
227
227
  case format
228
228
  when :rdfxml
@@ -236,30 +236,30 @@ class JenaAdapter < ActiveRdfAdapter
236
236
  case into
237
237
  when :default_model
238
238
  self.model.read(uri, jena_format)
239
-
239
+
240
240
  when :submodel
241
241
  self.model.addSubModel(Jena::Model::ModelFactory.createDefaultModel.read(uri, jena_format))
242
-
242
+
243
243
  else
244
244
  self.model.addSubModel(self.model_maker.createModel(into).read(uri, jena_format))
245
245
  end
246
-
246
+
247
247
  if rebind && self.reasoner && self.model.respond_to?(:rebind)
248
248
  self.model.rebind
249
249
  end
250
250
 
251
251
  self.lucene_index_behind = true
252
-
253
- end
252
+
253
+ end
254
254
 
255
255
  # this method gets called by the ActiveRDF query engine
256
- def query(query, params = {})
256
+ def execute(query)
257
257
 
258
258
  if self.keyword_search? && query.keyword?
259
-
259
+
260
260
  # duplicate the query
261
261
  query_with_keywords = query.dup
262
-
262
+
263
263
  # now duplicate the where stuff so we can fiddle with it...
264
264
  # this is GROSS -- fix this if Query ever sprouts a proper
265
265
  # deep copy or a where_clauses setter
@@ -272,7 +272,7 @@ class JenaAdapter < ActiveRdfAdapter
272
272
  #query.where("lucene_literal_#{var}".to_sym, LuceneARQ::KEYWORD_PREDICATE, keyword)
273
273
  #query.where(var, "lucene_property_#{var}".to_sym, "lucene_literal_#{var}".to_sym)
274
274
 
275
- # use this if activerdf expects the literal to come back, not the
275
+ # use this if activerdf expects the literal to come back, not the
276
276
  # subject, or if using indexbuildersubject (which makes the subject
277
277
  # come back instead of the literal
278
278
  query_with_keywords.where(var, RDFS::Resource.new(LuceneARQ::KEYWORD_PREDICATE), keyword)
@@ -287,7 +287,7 @@ class JenaAdapter < ActiveRdfAdapter
287
287
  # search requests expanded.
288
288
  jena_results = query_jena(query_with_keywords)
289
289
 
290
- # use the conjunctive query facility in pellet to get additional
290
+ # use the conjunctive query facility in pellet to get additional
291
291
  # answers, if we're using pellet and we don't have a pure keyword
292
292
  # query
293
293
  if self.reasoner == :pellet && query.where_clauses.size > 0
@@ -303,17 +303,17 @@ class JenaAdapter < ActiveRdfAdapter
303
303
  return [[true]] if results.size > 0
304
304
  return [[false]]
305
305
  end
306
-
306
+
307
307
  if query.count?
308
308
  return results.size
309
309
  end
310
310
 
311
311
  results
312
-
312
+
313
313
  end
314
314
 
315
315
  # ==========================================================================
316
- # put private methods here to seperate api methods from the
316
+ # put private methods here to seperate api methods from the
317
317
  # inner workings of the adapter
318
318
  private
319
319
 
@@ -337,28 +337,28 @@ class JenaAdapter < ActiveRdfAdapter
337
337
  case type
338
338
  when :pellet
339
339
  Pellet.reasoner_factory
340
-
340
+
341
341
  when :transitive
342
342
  com.hp.hpl.jena.reasoner.transitiveReasoner.TransitiveReasonerFactory.theInstance
343
-
343
+
344
344
  when :rdfs
345
345
  com.hp.hpl.jena.reasoner.rulesys.RDFSFBRuleReasonerFactory.theInstance
346
-
346
+
347
347
  when :rdfs_simple
348
348
  com.hp.hpl.jena.reasoner.rulesys.RDFSRuleReasonerFactory.theInstance
349
-
349
+
350
350
  when :owl_micro
351
351
  com.hp.hpl.jena.reasoner.rulesys.OWLMicroReasonerFactory.theInstance
352
-
352
+
353
353
  when :owl_mini
354
354
  com.hp.hpl.jena.reasoner.rulesys.OWLMiniReasonerFactory.theInstance
355
-
356
- when :owl
355
+
356
+ when :owl
357
357
  com.hp.hpl.jena.reasoner.rulesys.OWLFBRuleReasonerFactory.theInstance
358
-
358
+
359
359
  when :generic_rule
360
360
  com.hp.hpl.jena.reasoner.rulesys.GenericRuleReasonerFactory.theInstance
361
-
361
+
362
362
  else
363
363
  type
364
364
  end
@@ -379,7 +379,7 @@ class JenaAdapter < ActiveRdfAdapter
379
379
  else
380
380
  objlit = object
381
381
  end
382
-
382
+
383
383
  if objlit.type
384
384
  type = Jena::Datatypes::TypeMapper.getInstance.getTypeByName(objlit.type.uri)
385
385
  o = mod.createTypedLiteral(objlit.value, type)
@@ -388,11 +388,11 @@ class JenaAdapter < ActiveRdfAdapter
388
388
  else
389
389
  o = mod.createTypedLiteral(objlit.value, nil)
390
390
  end
391
- end
391
+ end
392
392
  return o
393
393
  end
394
394
 
395
- def build_subject(subject, submodel = nil)
395
+ def build_subject(subject, submodel = nil)
396
396
  # ensure it exists in the parent model
397
397
  self.model.getResource(subject.uri) if submodel
398
398
  appropriate_model(submodel).getResource(subject.uri)
@@ -426,8 +426,8 @@ class JenaAdapter < ActiveRdfAdapter
426
426
  end
427
427
 
428
428
  def query_jena(query)
429
- query_sparql = translate(query)
430
-
429
+ query_sparql = translate(query)
430
+
431
431
  qexec = Jena::Query::QueryExecutionFactory.create(query_sparql, self.model)
432
432
 
433
433
  # PROBABLY A VERY EXPENSIVE OPERATION (rebuilds lucene index if ANYTHING
@@ -437,7 +437,7 @@ class JenaAdapter < ActiveRdfAdapter
437
437
  LuceneARQ::LARQ.setDefaultIndex(qexec.getContext, retrieve_lucene_index)
438
438
  end
439
439
 
440
- begin
440
+ begin
441
441
  results = perform_query(query, qexec)
442
442
  ensure
443
443
  qexec.close
@@ -449,25 +449,25 @@ class JenaAdapter < ActiveRdfAdapter
449
449
  def query_pellet(query)
450
450
  query_sparql = translate(query)
451
451
  jena_query = Jena::Query::QueryFactory.create(query_sparql)
452
-
452
+
453
453
  # bail if not a select
454
454
  return [] if !jena_query.isSelectType
455
455
 
456
456
  qexec = Pellet::Query::PelletQueryExecution.new(jena_query, self.model)
457
-
457
+
458
458
  begin
459
459
  results = perform_query(query, qexec)
460
460
  ensure
461
461
  qexec.close
462
462
  end
463
-
463
+
464
464
  results
465
465
  end
466
466
 
467
467
  def perform_query(query, qexec)
468
468
  results = qexec.execSelect
469
469
  arr_results = []
470
-
470
+
471
471
  while results.hasNext
472
472
  row = results.nextSolution
473
473
  res_row = []
@@ -487,7 +487,7 @@ class JenaAdapter < ActiveRdfAdapter
487
487
  # datatyped literal
488
488
  res_row << Literal.new(thing.getValue, RDFS::Resource.new(thing.getDatatypeURI))
489
489
  elsif thing.getDatatypeURI.nil?
490
- # language tagged literal
490
+ # language tagged literal
491
491
  res_row << Literal.new(thing.getLexicalForm, "@" + thing.getLanguage)
492
492
  else
493
493
  raise ActiveRdfError, "Jena Sparql returned a strange literal"
@@ -11,7 +11,7 @@ module LuceneARQ
11
11
 
12
12
  KEYWORD_PREDICATE = "http://jena.hpl.hp.com/ARQ/property#textMatch"
13
13
 
14
- begin
14
+ begin
15
15
  include_class('com.hp.hpl.jena.query.larq.LARQ')
16
16
  include_package('com.hp.hpl.jena.query.larq')
17
17
  self.lucene_available = true
@@ -10,21 +10,21 @@ module NG4J
10
10
  include_package('de.fuberlin.wiwiss.ng4j')
11
11
  # This contains: NamedGraphSet, Quad
12
12
  end
13
-
13
+
14
14
  module DB
15
-
15
+
16
16
  include_package('de.fuberlin.wiwiss.ng4j.db')
17
-
17
+
18
18
  include_class('java.sql.DriverManager')
19
-
19
+
20
20
  # this maps downcased Jena database types into drivers
21
21
  DRIVER_MAP = {
22
22
  'mysql' => 'com.mysql.jdbc.Driver',
23
23
  'postgresql' => 'org.postgresql.Driver',
24
24
  'hsql' => 'org.hsqldb.jdbcDriver',
25
25
  }
26
-
27
- DRIVER_MAP.each do |name, driver|
26
+
27
+ DRIVER_MAP.each do |name, driver|
28
28
  av = "#{name}_available"
29
29
  (class << self ; self ; end).send(:bool_accessor, av.to_sym)
30
30
  begin
@@ -34,7 +34,7 @@ module NG4J
34
34
  Jena::DB.send("#{av}=", false)
35
35
  end
36
36
  end
37
-
37
+
38
38
  end
39
39
 
40
40
  module Sparql