activerdf 1.3 → 1.3.1

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 CHANGED
@@ -1,3 +1,7 @@
1
+ == activerdf (1.3.1) Mon, 19 Feb 2007 17:04:57 +0000
2
+ * fixed type-checking bug in query.rb
3
+ * added language support to literals
4
+
1
5
  == activerdf (1.3) Sun, 18 Feb 2007 15:09:35 +0000
2
6
  * added support for datatyped literals in SPARQL queries
3
7
 
@@ -5,33 +5,42 @@ require 'active_rdf'
5
5
  class Literal
6
6
  Namespace.register :xsd, 'http://www.w3.org/2001/XMLSchema#'
7
7
 
8
- attr_reader :value, :type
9
- @value, @type = nil, nil
8
+ attr_reader :value, :type, :language
9
+ @value, @type, @language = nil, nil, nil
10
10
 
11
11
  # Constructs literal with given datatype. If no datatype is given, automatic
12
12
  # conversion from Ruby to XSD datatype is tried.
13
- def initialize(value, type=nil)
13
+ def initialize(value, type_or_language=nil)
14
14
  @value = value
15
- @type = type
16
-
17
- if @type.nil?
15
+
16
+ if type_or_language.nil?
17
+ # deduce type from the given value
18
18
  @type = case value
19
- when String
20
- XSD::string
21
- when Date, Time, DateTime
22
- XSD::date
23
- when TrueClass, FalseClass
24
- XSD::boolean
25
- when Fixnum
26
- XSD::integer
27
- end
28
- end
19
+ when String
20
+ XSD::string
21
+ when Date, Time, DateTime
22
+ XSD::date
23
+ when TrueClass, FalseClass
24
+ XSD::boolean
25
+ when Fixnum
26
+ XSD::integer
27
+ end
28
+ elsif type_or_language[0..0] == "@"
29
+ # a language tag has been given
30
+ @language = type_or_language[1..type_or_language.length]
31
+ else
32
+ # the type_or_language was not empty and did not start with a @ so it must be a data type
33
+ @type = type_or_language
34
+ end
35
+
29
36
  end
30
37
 
31
38
  # returns string serialisation of literal, e.g. "test"^^xsd:string
32
39
  def to_s
33
40
  if type
34
41
  "\"#{value}\"^^#{type.to_s}"
42
+ elsif language
43
+ "\"#{value}\"@#{language}"
35
44
  else
36
45
  "\"value\""
37
46
  end
@@ -95,10 +95,10 @@ class Query
95
95
  # if you construct this query manually, you shouldn't! if your select
96
96
  # variable happens to be in one of the removed clauses: tough luck.
97
97
 
98
- unless [RDFS::Resource, Symbol].include?(s.class)
98
+ unless s.is_a?(RDFS::Resource) or s.is_a?(Symbol)
99
99
  raise(ActiveRdfError, "cannot add a where clause with s #{s}: s must be a resource or a variable")
100
100
  end
101
- unless [RDFS::Resource, Symbol].include?(s.class)
101
+ unless p.is_a?(RDFS::Resource) or p.is_a?(Symbol)
102
102
  raise(ActiveRdfError, "cannot add a where clause with p #{p}: p must be a resource or a variable")
103
103
  end
104
104
 
@@ -8,6 +8,8 @@ require "#{File.dirname(__FILE__)}/../common"
8
8
 
9
9
  class TestLiteral < Test::Unit::TestCase
10
10
  def setup
11
+ ConnectionPool.clear
12
+ @adapter = get_read_only_adapter
11
13
  end
12
14
 
13
15
  def teardown
@@ -32,4 +34,20 @@ class TestLiteral < Test::Unit::TestCase
32
34
  test = Literal.new(true)
33
35
  assert_equal '"true"^^<http://www.w3.org/2001/XMLSchema#boolean>', test.to_s
34
36
  end
37
+
38
+ def test_equality
39
+ test1 = Literal.new('test')
40
+ test2 = Literal.new('test', XSD::string)
41
+ assert_equal test2.to_s, test1.to_s
42
+ end
43
+
44
+ def test_language_tag
45
+ cat = Literal.new('cat')
46
+ cat_en = Literal.new('cat', '@en')
47
+ assert_equal '"cat"@en', cat_en.to_s
48
+ assert_not_equal cat.to_s, cat_en.to_s
49
+
50
+ assert_equal '"dog"@en-GB', Literal.new('dog', '@en-GB').to_s
51
+ assert_equal '"dog"@en@test', Literal.new('dog', '@en@test').to_s
52
+ end
35
53
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: activerdf
5
5
  version: !ruby/object:Gem::Version
6
- version: "1.3"
7
- date: 2007-02-18 00:00:00 +00:00
6
+ version: 1.3.1
7
+ date: 2007-02-19 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
@@ -90,12 +90,3 @@ dependencies:
90
90
  - !ruby/object:Gem::Version
91
91
  version: 0.2.1
92
92
  version:
93
- - !ruby/object:Gem::Dependency
94
- name: activerdf_sparql
95
- version_requirement:
96
- version_requirements: !ruby/object:Gem::Version::Requirement
97
- requirements:
98
- - - ">"
99
- - !ruby/object:Gem::Version
100
- version: 0.0.0
101
- version: